Talk by Herb Sutter: Bridge to NewThingia

Dagmar dagmar.zorg at gmail.com
Mon Jun 29 15:45:48 UTC 2020


On Monday, 29 June 2020 at 12:17:57 UTC, Russel Winder wrote:
> Of course C++ is now really a niche language used by those who 
> still use it and do not move on to more modern languages!

I am a C++ developer. I do want to move to a modern language, but 
there is no one that fits my needs.
Rust has a very promising ownership-borrowing concept but the 
lack of OOP and its awful syntax (mostly because of lifetimes) 
make it a no go for me.
Go is just an oversimplified language. No generics/teplates in 
2020, seriously?
D has a GC. If you turn it off you lose dynamic/associative 
arrays, classes, probably something else. Why would I even want 
to use such language at all? It's much easier to stay with C++ 
this way, since it has lots of C/C++ libraries, IDEs, tools, 
broad community, support of big companies.

> The problem is backward compatibility. Every new feature in C++ 
> requires backward compatibility with all previous C++, leading 
> to a more and more complex language.

Totally agree. It would be much better if C++ was redesigned from 
scratch, dropping backward compatibility and making things 
better: explicit constructors/operators by default, 
default-initialized variables, const by default, and maybe even 
move semantics by default. You can explicitly copy an object if 
you want, but only when you really need it. We don't need 3 ways 
of initialization, lots of different reference types, implicit 
casts between different integer types, interpreting arrays as 
pointers, etc.

> Clearly Modern C++, aka C++11, was a great innovation and step 
> forward. C++14, C++17, and I guess C++20 move the language 
> forward.

C++20 is a big improvement at least because of concepts, 
coroutines, and ranges.

> On the other hand people are stopping using C++ in favour of 
> Go, Rust, Python, but it seems not D.

Of course, since D doesn't look like a mature language. I've been 
following it for many years and it doesn't really improve. It 
looks just like a bunch of different things/concepts put 
together. Many things are stalled without of any progress because 
there is no consensus.
The entire DIP process is not good. There is no way to find the 
current DIP status, no way to learn when and whether it's going 
to be implemented or not. Have you noticed such questions in the 
forum recently?
The current status of the language is unclear. Sometimes there is 
only one way to find out why it behaves like it does: to ask in 
this forum. And you may not like the answers. D has transitive 
const, but what if I should lazy evaluate/cache a value or use a 
mutex? If I shouldn't use const, how should I emphasize the 
intention to pass a pointer only for reading? How can I be sure 
that my class invariant is not compromised? Also, there is the 
shared attribute, but it isn't designed nor implemented well. 
Lots of questions, no solutions. D is intended to be a C++ 
replacement, but it doesn't explain to C++ programmers how to 
change their way of thinking. I'd appreciate if there was a 
document that explains typical tasks and ways to get them done in 
D for the C++ dummies, like me.
Maintainers don't like to make breaking changes when they are 
required. Come on guys, it's called an evolution. That's why C++ 
is so overcomplicated right now. It tries to keep backward 
compatibility at all costs. I hope you don't want D to get into 
the same situation? Any modern language requires a chance to 
evolve. Sometimes you just have to break something. And making it 
once in a year (or 2-3 years) doesn't look like a bad option to 
me.


More information about the Digitalmars-d-announce mailing list