On Saturday, 2 January 2016 at 11:31:24 UTC, Dibyendu Majumdar wrote:
Hi,

I am a long time observer of D but have never done any coding in D. I have considered using D several times but have ended up either going with C++ or Java.

I feel that for someone like me it is not clear what significant advantages D has over C++ or Java to make a switch. I cannot afford to experiment with a language unless I know for certain the benefits of using it.

For instance I would like to know:

* Do D compilers generate more efficient code compared to C++ compilers? Are there performance benchmarks comparing D implementation against C and C++?

Same efficiency if using LDC or GDC, divided by 2 if you use DMD.
But I've found coding in D is more productive (I'd say 2x on small projects vs C++, correct me if you disagree) and you'll be more pleased with the results so you'll have more time and energy to optimize. C++ has some overhead to create a program so it may lead you to tool less.

* Can D generics do everything C++ templates can (are they Turing complete for instance) - and what additional capabilities does D have that would make a significant difference to the way templates are used in C++?

The difference is mainly in community, most are very confident with meta-programming, it's not up to single individual in a team to explain static polymorphism to everyone.

To put bluntly, I've never seen a C++ programmer in a team use std::enable_if in years of C++, but every D programmer has written heaps of "static if". D lets you use static or runtime polymorphism as easily, in C++ it's quite a learning and often people think they don't need it.

That said, it's not all community, there is tangible improvements. Syntax for templates, alias this over multiple inheritance, string mixin over preprocessor macros, static foreach, sane operator overloading and so on.

* How does D's performance compare with Java when it comes to concurrent applications or garbage collection?

Java have more concurrency primitives and faster garbage collection.
OTOH D runtime is smaller.

* How stable is D? Can one use it without fear that the next version will significantly change the language and therefore one would have to rewrite?

This won't be a problem. Breaking language changes are rare, and are easy to fix.

I feel that the D website could do more to explain why someone should move from C++ or Java to D - and this has to be explained in terms of real world benefits in terms of:

* Performance
* Quality of implementation


Can't speak with anyone else, but for me the real reasons are:
- it's fun
- D says "yes" to everything and is not a Big Idea language
- I'm happier with the results, to the point I want to maintain them - C++ puts you in learning-mode forever. D also does, but without you taking notice :) - I'm hooked and going back to C++ feels horrible, like for many people here. We need a D rehab center!

At the language level D improves things in all directions: http://p0nce.github.io/d-idioms/#How-does-D-improve-on-C++17?

For someone like me - cool language features don't count that much unless they lead to real world benefits.

Me too, I care more about shared library support and codegen for example than any language feature.

Yet in some cases they do matter. For example default initialization brings invisible productivity gains you only see when going back to C++.





Reply via email to