Why do C++ programmers are not interested in D?
Ola Fosheim Grøstad
ola.fosheim.grostad at gmail.com
Sun Nov 24 13:29:12 UTC 2019
On Sunday, 24 November 2019 at 13:01:13 UTC, Guillaume Piolat
wrote:
> That doesn't match my experience _at all_. Have you worked in
> C++ in a professional capacity?
Please drop the ad hominems. It is completely irrelevant. (yes,
but still 100% irrelevant).
> C++ has a major version every 3 years, that comes with myriads
> of traps and new best practices.
C++ is seeing growth because it is regularly updated. That's
just a fact. So that is clearly not viewed as a problem with
those that adopt it... (if it was there would be no growth).
However most of the _language_ changes are minor, and either
syntactical sugar for common practice or simplifications of
things that was a drag to write (e.g. template magic being
replaced by CTFE). The biggest semantic change might actually be
metaprogramming things like decltype(), but such changes are not
revolutionary in any way.
Ref. https://en.cppreference.com/w/cpp/language/history C++20
langauge changes:
«
3-way comparison operator <=> and operator==() = default,
designated initializers, init-statements and initializers in
range-for, char8_t, [[no_unique_address]], [[likely]],
[[unlikely]], pack-expansions in lambda captures, removed the
requirement to use typename to disambiguate types in many
contexts, consteval, further relaxed constexpr, signed integers
are 2's complement, aggregate initialization using parentheses,
array new can deduce array size
»
Basically _nothing_!
> The new stuff is non-breaking, except by living in that
> ecosystem you will inevitable be exposed to approximately all
> parts of the language.
Performance oriented libraries are usually conservative in what
they use in the API?
Actually, many C++ codebases on github are C with a bit of C++
here and there...
>> Now we have const, constexpr, if constexpr, consteval and
>> std::is_constant_evaluated()
> Who said C++ was hard to learn/teach?
Well, constexpr on functions is in the same vein as D attributes
like "pure". It should have been the default.
Basically, if for a programmer with a good understanding of C++11
and common C++ patterns with templates then C++14/17/20 is not a
big hurdle to overcome. Now, getting a good understanding of C+11
and common C++ meta-programming patterns is a big hurdle... but
that has nothing to do with language changes. C++ has always been
like that.
More information about the Digitalmars-d
mailing list