What are the prominent downsides of the D programming language?

ddcovery antoniocabreraperez at gmail.com
Tue Sep 29 11:34:00 UTC 2020


On Tuesday, 29 September 2020 at 11:10:42 UTC, ddcovery wrote:
> On Monday, 21 September 2020 at 09:29:21 UTC, Tomcruisesmart 
> wrote:
>> Hi,
>> I'm looking for healthy conversation.
>> What are the prominent downsides of the D programming language?
>
> As a not D experienced developer (I use rdmd, small game 
> projects and I tried to use as REST service instead play/scala 
> or node/javascript)
>
> Not directly related with DLang but with Development tools:
>
> * Intelligence / autocomplete lack: The use of meta-programming 
> makes it very difficult and really represents a barrier for its 
> incorporation in productive mainstream development (it's funny: 
> we have GC, not good for system/video game developers, but then 
> it makes autocomplete impossible, not good for web services 
> mainstream developers ).
>
> * Inspecting vars while debugging: Why it is so difficult to 
> inspect not trivial vars?. I'm using dlangide, simple and very 
> powerful, but it is hell to inspect variables (especially 
> objects): I have to be defining local variables and assigning 
> object properties to them in order to see their values ​​in the 
> debugger.
>
> * The "auto" Swiss knife:  Yes, I know, "auto" is a powerful 
> tool, but DLang libraries tends to force you to use auto 
> because metaprogramming... it is really difficult to a 
> newcomers to understand the Type returned by a template... and 
> templates are everywhere.
>
> i.e.:  If you read about Tasks 
> (https://dlang.org/phobos/std_parallelism.html), for me is not 
> obvious how to define an empty array of tasks.
>
> Imagine I have a "4 in a line" game and I want to evaluate with 
> a thread each column of the game (a minimax algorithm)
>
>> ??? tasks = [];
>> for( int ixTask=0; ix<COLUMNS; ixTask++){
>>   tasks ~= task!evalColumn(board.clone(), columns[ixTask], 
>> maxRecursion - 1);
>>   tasks[ixTask].executeInNewThread();
>> }
>> ...
>
> What do you have to place instead "???"

Basically, the most powerful features of the language 
(templates/metaprograming/compile time execution) are the barrier 
to be introduced in the ecosystem of mainstream programming (easy 
debugging, autocomplete/intelligence, simple typing system), and 
the only feature mainstream development embraces (GC) is hated by 
the people that comes from C/C++ (system/game developers).

That said, I like D ... I love it's plasticity, it's versatility 
... and it's GC  :D



More information about the Digitalmars-d mailing list