On 6/29/20 8:45 AM, Dagmar wrote:

> I am a C++ developer.

I used to be a C++ developer; luckily, I primarily write in D these days. (I can still code in C++ and will have to do so again soon.)

> I do want to move to a modern language, but there
> is no one that fits my needs.
[...]
> Go is just an oversimplified language. No generics/teplates in 2020,
> seriously?

+1 And it's fascinating how they sold all the shortcomings as benefits. Amazing!

> D has a GC.

Coming from C++, I was a die-hard "deterministic destruction" guy and it took me a long time to embrace GC. Now I know GC is pure help. GC is no more issue than any other engineering decisions.

> If you turn it off you lose dynamic/associative arrays,
> classes, probably something else.

Then don't turn it off. :)

I understand there are programs where an undeterministic delay in processing is unacceptable but those programs all run on real-time operating systems anyway, right? ;)

> Why would I even want to use such
> language at all?

For practicality. For getting things done.

> 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.

It requires a strong C++ mindset to take GC as a liability and accept C++ complexities like the following one as manageable:

OOPS: :) I fail to find a reference table that explains implicitly or explicitly deleted or defaulted fundamental C++ operations like the copy constructor.

Yeah, accepting that kind of complexity but rejecting the GC is interesting. (I am not directing this to you but to most C++ programmers.)

> 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.

That may be true for many languages but when it comes to getting things done I find D much more productive, manageable, easier, etc. etc. compared to C++. C++ has only one thing over D: Many smart people are already using C++.

> 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?

Although I agree that transitive const is the correct feature, I too find it difficult.

> 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.

There is this dated document:

  https://dlang.org/articles/cpptod.html

Although dated, that document should be sufficient to jump to D from C++. :)

> Maintainers don't like to make breaking changes when they are required.
> Come on guys, it's called an evolution.

Interestingly, one of the criticism D gets is how it evolves with breaking changes. :)

> 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.

I agree.

Ali

Reply via email to