Discussion about D at a C++ forum

dsimcha dsimcha at yahoo.com
Sun Jan 8 16:26:15 PST 2012


On 1/8/2012 6:28 PM, Mehrdad wrote:
> On 1/7/2012 10:57 PM, Jonathan M Davis wrote:
>> Not exactly the most informed discussion.
>
> Well, some of their comments _ARE_ spot-on correct...
>
> 2. "While you can avoid the garbage collector, that basically means you
> can't use most of the standard library."
> Looks pretty darn correct to me -- from the fixed-size array literal
> issue (literals are on the GC heap), to all the string operations (very
> little is usable), to associative arrays (heck, they're even part of the
> language, but you can't use them without a GC), etc...

As someone who does performance-critical scientific work in D, this 
comment is absolutely **wrong** because you only need to avoid the GC in 
the most performance-critical/realtime parts of your code, i.e. where 
you should be avoiding any dynamic allocation, GC or not.  (Though GC is 
admittedly worse than malloc, at least given D's current quality of 
implementation.)

My style of programming in D is to consciously transition between 
high-level D and low-level D depending on what I'm doing.  Low-level D 
avoids the GC, heavy use of std.range/std.algorithm since the compiler 
doesn't optimize these well yet, and basically anything else where the 
cost isn't clear.  It's a PITA to program in like all low-level 
languages, but not as bad as C or C++.  Nonetheless low-level D is just 
as fast as C or C++.  High-level D is slower than C or C++ but faster 
than Python, and integrates much more cleanly with low-level D than 
Python does with C and C++.  It's only slightly harder to program in 
than Python.

Bottom line:  D doesn't give you a free lunch but it does give you a 
cheaper lunch than C, C++ or even a combination of C/C++ and Python.


More information about the Digitalmars-d mailing list