On Saturday, 23 December 2017 at 08:15:04 UTC, Dan Partelly wrote:
On Saturday, 23 December 2017 at 01:12:53 UTC, Dylan Graham wrote:
language it should be, not the language some C++ programmer wants but is never going to use anyway.

Ironically, D is so close to beeing the language a C++ programmer would really use that you can smell it. It doesnt have to bend, since it got so close with a lot of good decisions. D is the first language Im aware of which has the potential to satisfy the needs of a very large portion of the market,

How much further does D have to go to start snatching C++'s userbase?

In my honest opinion, D doesn't offer as much of an advantage over C++ as it does C# and Java. Currently D has much better template syntax, modules (although that idea is being floated in the C++ community), but what else? The C++ juggernaut keeps piling on new features every 3 years. It's hard for D to stay in the lead (that is if it is).

I've been writing a voxel engine in C#. Writing anything high performance in C# becomes non-idiomatic, you're locked into OOP and performance sucks.

D offers far more features C# and Java. As a result, I think D would have a greater appeal on those audiences.

For example, writing vector structs in C# requires you to duplicate the code for each size of the vector and then again for each type. You can cut down on the type duplications by using the dynamic keyword but that infers a performance hit. On the flip side, D's metaprogramming reduces the complexity of writing such utilities.

Furthermore, C# and Java deeply emphasise the OOP paradigm. They're not very expressive languages. D can do everything C#'s OOP can do and offers many other paradigms. D is more a toolbox to let you program the way you want. C++ is much the same, just uglier. Thus, there's going to be less draw to D from C++.

I also recall someone saying that C++'s memory problem is fixed. D's MMM seems infantile in comparison.

Also, there is not much in the way of getting around C#'s GC. Well, you can. But it gets ugly and unidiomatic. You also have to consult the documentation frequently to know what certain allocates. In D you can receive warnings about what allocates GC memory (compiler flag -- can't remember which one (-vgc on DMD?)) and also enforce non-gc allocations. It also lets me use other memory management techniques if need be.

I think D should try to advertise to more restrictive languages such as C# and Java and present itself as a general purpose language. I think it will draw more people from the C#/Java crowd than it will from the C++ crowd.

Reply via email to