Andrei's list of barriers to D adoption

Ola Fosheim Grøstad via Digitalmars-d digitalmars-d at puremagic.com
Tue Jun 7 01:22:23 PDT 2016


On Tuesday, 7 June 2016 at 07:57:09 UTC, Walter Bright wrote:
> It's not that C++ got any safer. All that old code will still 
> compile and crash. It's that I got better, which should not be 
> confused with the language getting better. I learned not to 
> stick my fingers into the high voltage section of the power 
> supply.

Well, I don't know how newbies approach C++ and what problems 
they run into, but when I learned C++ in the 90s most of my 
problems were related to using the C-subset of C++. Often for 
performance reasons as compilers weren't as good back then so 
even simple compile-time abstractions could give significantly 
lower performance.

Of course, I knew C++98 and was a proficient programmer before I 
started using C++14/17 18 months ago and the learning curve for 
becoming proficient in C++14/17 is quite steep and involves both 
learning, inventing (going where people haven't gone before) and 
unlearning. There are just way too many ways of doing the same 
thing in C++ to be certain that one does something the 
best-possible way.

Which is rather costly compared to say Go or the direction D1 
took, which focus on being simpler than C++ and generally offers 
one way to do something. Work on making D simpler (easier to use 
and easier to read) and you may find new markets.

Simpler does not mean less powerful. The best way to get a simple 
and consistent language is to create a simple high level IR that 
can represent all language constructs you are interested in (by 
"lowering").


> C++ still suffers from:
>
> http://www.digitalmars.com/articles/b44.html

The array issue is solved. I only use std::array<Type, Dim>. I 
never use Type[Dim]...
I also use gsl::span<Type, Dim> or gsl::span<Type> for array 
parameters. I also have my own array types for special use cases 
(forcing heap allocation etc).

So this is solved in modern C++.

I don't think it is "idiomatic" to write C-code in C++14/17.

What really irks me about C++/D is that they don't focus on 
making it easy to write readable code (making complex code more 
readable). I don't think it is difficult to fix, but it requires 
significant breaking changes.



More information about the Digitalmars-d mailing list