Andrei writes "The Case for D"

grauzone none at example.net
Tue Jun 16 02:38:42 PDT 2009


Walter Bright wrote:
> http://www.reddit.com/r/programming/comments/8stcr/the_case_for_d/

Nice article. Here some random bitching.

 > If you are patient, you'll find out that D has constructors and 
destructors with which you can implement deterministic lifetime of objects.

Not entirely true. Andrei forgot that destructors, in many situations, 
are not deterministic at all, because the garbage collector calls the 
destructor when an object is finalized. Another easily fixable mistake 
that makes life so hard.

 > Other implementations are underway, notably including an a .NET port 
and one using the LLVM infrastructure as backend.

Just that LDC (why not mention it directly?) is starting to become more 
stable than DMD, while the .NET port is in an early alpha stage at best.

 > In fact, D can link and call C functions directly with no intervening 
translation layer.

Sure, but that makes the uninformed reader think he can use header files 
directly. He will be disappointed when he finds out he has to translate 
headers manually. (AFAIK there's no tool yet which does this 
automatically with no user intervention required.)

 > This low latency means you can use D as a heck of an interpreter (the 
shebang notation is supported, too).

Now isn't that quite implementation specific. Maybe you should also 
mention that dmd is not only fast, but also contains lots of bugs that 
become issues in real life. So much for the implementation of the 
reference compiler. (And sure, no doubt any language is easier to parse 
and compile than C++. You could claim dmd's fastness is only a special 
thing when compared to C++.)

 > The basic idea is that D allows you to subtype as you need via alias 
this.

Oh, so you decided to keep it.

 > Variable-length parameter lists are also allowed.

Just not variable-length alias parameter lists or variable-length lists 
of constants, d'oh.

 > What takes things into space is the ability to convert strings into 
code (by use of the mixin expression).

I think the reader won't understand at all what's going on. Why not 
provide a simple example? int y = 1; int x = mixin("2+y");

 > A better design has been blueprinted and the implementation is "on 
the list," so please stay tuned for more about that.

(That was about reflection.) I think the readers of the newsgroup, where 
future directions of D 2.0 are regularly discussed, would like to know 
more about this.

 > In D, the Boolean compile-time expression is(typeof(expr)) yields 
true if expr is a valid expression, and false otherwise (without 
aborting compilation).

Surprised to find this anti-feature mentioned in an introductory article 
on D.



More information about the Digitalmars-d mailing list