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