version=D_16
Luís Marques via Digitalmars-d
digitalmars-d at puremagic.com
Mon Jul 10 14:53:16 PDT 2017
On Monday, 10 July 2017 at 21:30:44 UTC, Walter Bright wrote:
> You can't use RTTI or Exceptions, for example. Those generate
> bloat even if they are not used - a compiler switch is typical
> to disable them. It's not true that C++ is "pay only for what
> you use".
>
> If the C++ usage is "C with member functions", then yes, it'll
> work and be useful.
Sure, people don't use exceptions and RTTI and other expensive
things on microcontrollers. But, as you say, they use it for less
expensive or zero cost things like member functions, operator
overloading, templates (not very common, but I've seen some
interesting 0-cost wrappers that increased the safety of setting
registers), etc. But I'm not here to advocate C++, I've only used
it incidentally for microcontrollers (AVR, the Arduino libraries
are C++, urg).
> For example, ints in C are 16 bits. In D they are 32. This
> means that integer operations are expensive.
I don't understand this point of view. You are literally saying
that writing "int x" is more expensive in D than in 16-bit C
because they mean something different. Uhh, so just write "short
x" in D? That's the equivalent code. Why would you write code
that's character-by-character the same but means a different
machine type?
If that's because short is more inconvenient in D than in C, I
can understand that! But C also has a lot of annoying
limitations, I feel that overall it's still a win.
If you give me more concrete examples I can try to address them.
Just keep in mind that it's still fairly low level D code. I'm
not throwing new Exceptions! But you can use modules, static ifs,
templates... Modules alone sometimes feel like enough benefit...
More information about the Digitalmars-d
mailing list