A gentle critque..
Kyle Furlong
kylefurlong at gmail.com
Sun May 14 21:54:35 PDT 2006
Carlos wrote:
> - D is not C++ ... Importance: SIGH
> - D cannot toast bread ... IMPORTANCE: SHOW-TOASTER
> - D cannot prevent idiocy in programmers ... IMPORTANCE: FATAL
>
> Charlie
>
>
> Ben Cooley wrote:
>> There are a few major problems with D that still prevent it from being
>> practical
>> for use in the real world.
>>
>> I'll just list them and note their importance. Anything witha
>>
>> - Inability to access C/C++ include files... Importance: SHOW-STOPPER
>> --------------------------------------------
>>
>> C++ can do this, D can not.
>>
>> The size, scale, and prevalence of C and C++ libraries and code make
>> writing
>> wrappers for all of these libraries impractical. That D can not just
>> easily
>> include C and C++ headers "as is" gives it a serious and I would
>> suggest fatal
>> disadvantage vs. C++.
>>
>> C++ out of the box could include C header files, meaning that even
>> today I have
>> access to the largest possible body of third party libraries and
>> code. Binary
>> compatibility with C only is just not good enough.
>>
>> Incompatibility with C++ ABI... Importance: SHOW-STOPPER
>> --------------------------------------------
>>
>> Even if you could include C++ headers, you could not interface with
>> C++ classes.
>> C has abi compatibility with C++, and C++ has ABI compatibility with
>> C. C and
>> C++ have more or less abi compatibility with most other systems
>> (including COM,
>> CORBA). D intends to be used for system programming, but is
>> icompatible with
>> the most prevalent existing ABI.
>> Inability to make D code work with C/C++ Importance: SHOW-STOPPER
>> ---------------------------------------------
>>
>> Likewise, if you write D code, your code exists only in the very small
>> world of
>> D, and will not be useful to the world outside of the D programming
>> community.
>> This makes any library or system you might create only marginally
>> useful, and is
>> a strong disincentive for anybody to actually write code in D for
>> general public
>> consumption.
>>
>> No support for meta-programming or Macros Importance: SHOW-STOPPER
>> ---------------------------------------------
>>
>> Say what you will about the unclean use of macros in C and C++, they are
>> critical for a large set of important functionality that C and C++
>> programmers
>> take for granted. There are many ways to provide hygenic macro
>> replacesments,
>> true meta programming, or generative programming. D offers none of
>> these, and
>> no way to replace the functionality lost using macros.
>>
>> Correct me if I am wrong on this point, but the meta-programming
>> offered by
>> macro code injection is just not easily replaced by mixins, templates
>> or other
>> language features.
>>
>> Provides no additional support for safe programming vs. C/C++
>> Importance: HIGH
>> ---------------------------------------------
>>
>> C# and Java trade incompatibility and the inability to easily
>> integrate with
>> C/C++ for the additional productivity and security. D trades
>> incompatibility
>> for.. incompatibility. Programming in D is just as unsafe as
>> programming in C
>> and C++, without the support of Microsoft and other 3rd parties to
>> provide huge
>> quantities of high level libraries and a powerful integrated
>> environment. D is
>> unsafe by design, just as C and C++ were, but the difference is that
>> this is
>> 2006, and not the 70's, 80's, or 90's.
>>
>> The choice one is left with is to either program in a safe language
>> and accept
>> the overhead of the JIT, or use C/C++ with it's large existing base of
>> tools and
>> code other things in C# or Java. One wonders why this is so, since C#
>> has
>> unsafe capabilities.. and CSecured offers safe C programming
>> capabilities. How
>> long should we have to wait for a safe systems level language.. till
>> microsoft
>> releases their Singularity project and their Bartok compiler?
>>
>> ------------
>>
>> The first two issues make much of the remaining critique irrelevant.
>> Once you
>> have a singel showstopper, additional issues don't really make any
>> difference.
>> However I'll list them anyway.
>>
>> - Inability to integrate with visual studio. No good IDE..
>> Importance... HIGH
>>
>> - No stable standard. Importance... MEDIUM
>>
>> - Difficult to control what is garbage collected and what is not.
>> Garbage
>> collection performance. Garbage collection violates C++'s "zero
>> overhead" rule
>> where any performance overhead is at the programmers explicit
>> discression.
>> Importance... MEDIUM
>>
>> - Not open source. Importance... HIGH
>>
>> - Very small library base. Importance... HIGH
>>
>> ----------------------------------------------------------
>>
>> A modest suggestion, were I to try to introduce a new language which I
>> intended
>> to be not only clean and simple, but "popular" and widely used as well
>> would be
>> to squarely address the first three issues above.
>>
>> C++ provided a translator. The original versions of C++ were able to
>> output C
>> code which would compile on any ordinary C compiler. Likewise, the
>> idea that C
>> headers could simply be directly included in a C++ language file, and
>> "it just
>> worked" allows any C code to be used in a C++ program.. a feature that
>> all C++
>> programmers use today.
>>
>> Finally, C and C++ code code be easily mixed within a single project,
>> another
>> feature of C++ that is used today. Since C++ can consume any C
>> header, and in
>> most cases C can understand the ABI of C++ with the extern "C" {}
>> wrapper, it's
>> possible to go in both directions.
>>
>> All this being said, I would really like to see a language like D
>> succeed,
>> because I need the features it has. But I can't abandon my C and C++
>> libraries,
>> and I am not about to commit to coding wrappers for them, nor forgoing
>> using my
>> current programming environment and debugging tools. When I adopted
>> C++ 20
>> years ago, I didn't need to do this. C++ integrated well with my
>> tools and
>> existing libs (the exception being the debugger of course). But
>> overall it was
>> a good citizen in the overall world of C/C++ code.. it played nicely.
>> The same
>> can not be said of D, C#, or Java, and D doesn't have the other
>> benefits of C#
>> or Java.
>>
>> Until D addresses these issues, it will be nothing more than a niche
>> language
>> offering syntactic cleanliness and interesting features to a few
>> faithful, but
>> largely ignored by the rest of the programming world.
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
Dont be an ass. Ben, please don't be offended, most of us are nice
people. ;-) ( I still love you Charlie )
--
Kyle Furlong // Physics Undergrad, UCSB
"D is going wherever the D community wants it to go." - Walter Bright
More information about the Digitalmars-d
mailing list