C++ or D?
Guillaume Piolat
first.name at guess.com
Tue Nov 10 03:12:56 UTC 2020
On Tuesday, 10 November 2020 at 01:00:50 UTC, Mark wrote:
> Hi all,
>
> Anyone have any thoughts how C++ and D compare?
C++ has a bit more mathematical feeling, everything has been
sorted out in the spec, even if the rules are crazy difficult. D
feels like it's up to _you_ to write the spec as you discover
things in the compiler.
C++ code feels a bit more cast in stone than any other language,
you can't move around things as quickly, and you won't be willing
to. But as you wrote the lines slower, likely you were a bit more
careful too as a side-effect.
If you write a small command-line tool, using D vs C++ will be
appreciably more productive. Just std.process will speed up
things by a lot, for this kind of work Phobos really shines. I
don't think it makes the same difference for large projects.
Learning D is something that can be almost finished, whereas with
C++ you have to aggressively conquer new features from the
standard one by one, and unfortunately C++ evolves faster than
you can assimilate C++. Generally when you meet a C++ programmer,
you are meeting someone who has given up the hope to have a full
understanding of the language and instead stay strategically on a
useful, codebase-specific subset (eg: if you learn about
std:unique_ptr, you can avoid to learn about most of move
semantics so that's a good learning investment).
D lets you think more about your problem domain, and less about
language things. Don't know precisely why. If you are deeply
immersed in C++ everyday, you won't see that problem, but it's
there. It's as if the culture of C++ was "complexity is free",
there is little attempt to contain it.
And it shows in the small things, for example:
- D atomics (core.atomic) has 11 public functions and defined 5
memory models.
- C++ atomics <atomic> has 29 functions and 6 memory models.
It doesn't seem like much, but there is a bit _more of
everything_ you can count.
All in all as a D replacement C++ seems a bit lacking, unless you
want a particular domain-specific library that only exists in
C++. I'm sure with a bit more effort, it could be a bit more
attractive to the vast masses of D programmers.
More information about the Digitalmars-d-learn
mailing list