
A review of the D language by someone who has worked in it - sah
http://timburrell.net/blog/programming/2008-06-22/d-postmortem/
======
astrec
I've also used D for various tiny scale projects over the last year and have
found the documentation wanting - D ain't Robinson Crusoe here though.

Once you get past the Tango/Phobos dilemma, you'll find a great little
language if you put some effort into it.

------
tx
Returning value types by value (structures) is a compiler bug? C++ and D both
try to be binary-compatible with C, they MUST return a structure by copying
it. An excellent article, but this little example was weird.

I haven't done any serious development in D, but I absolutely agree with his
complaints about Walter's leadership, he needs to loosen up a little and let
it go: I haven't checked if he changed his mind, but it used to be a case
where you couldn't just host binaries of D compiler on your site, they had to
be downloaded from Digital Mars page in a form of two confusing ZIP files with
two intersecting directory trees.

~~~
jey
" _C++ and D both try to be binary-compatible with C, they MUST return a
structure by copying it._ "

Only for code that has C linkage. For normal C++ or D code the calling
convention can be whatever the compiler wants, it's not restricted by the C
calling convention.

(C linkage is specified in C++ with 'extern "C"', and with 'extern (C)' in D.)

------
greyman
I'd like to hear from D practitioners, what the real benefit they experienced
by coding in D. Couldn't I just use related subset of C++ or C# to achieve the
very similar effect?

~~~
jey
No. C++ is too obtuse and doesn't have many of the features of D. C# is not a
systems programming language (it runs in a sandboxed VM).

~~~
greyman
Too obtuse? I worked in C++ several years professionally, and didn't have that
feeling. I was able to code anything I wanted.

I consider myself an average programmer, and from my experience it takes at
least one year to understand C++ to reach the level of being proficient in it.
I was asking my question above since in many cases, I found that the critique
of C++ comes from people who didn't put enough effort to understand it
thoroughly. (but I am not talking about anyone here, it's just a general
observation of mine).

~~~
jey
\- What is the destruction order of virtual base classes in C++?

\- Write a noncopyable class template that takes one typename argument.

These aren't just trivia questions. You actually need to know this stuff to be
able to plan and design correct C++ code.

FWIW, I'm a recovering C++ Language Lawyer[1], and I still consider myself to
have an "expert" level of proficiency at C++. The problem with C++ is that you
need to be an "expert" or you'll make subtle and complicated errors. Errors
that may not show up later until you have some sort of interoperability
problem. Yes, you _can_ write great code in C++, but it shouldn't be as hard
and complicated as C++ makes it. Tools should help, not hinder.

1\. <http://www.catb.org/jargon/html/L/language-lawyer.html>

