D loosing the battle

gzp galap at freemail.hu
Tue Nov 10 09:24:26 PST 2009


I've been following D for a while, and I've lost some of my interest too 
for several reasons.

   The continuous redesign. When I started to implement s/g, I checked 
what opportunities I have, what the language specification tells, and 
what others did to achieve a similar goal. Then I implemented my own 
version, but by the time I was almost finished, I saw some major 
features are being altered. (scope - allocation, Ranges, operator 
overloading, struct constructors, array referencing, property, etc.). I 
know D is a language being developed, but when core functionality is 
being altered all the time, it's really hard to design/implement new 
libraries. At least D users (especially for newbies) should be informed 
of the state of the progress, not only through mailing list since the 
have lot's of proposals those are dropped immediately. ex: The language 
reference should be up to date as much as possible and *HILIGHT* the 
features being redesigned and what are the proposals (in 1-2 words). I'm 
sure Walter, Andrei, and the other (key) developers have a todo-list 
(and some time-tables) for the proposed modifications. (If no, D is 
Doomed for sure, since after a while no one knows what's finished and 
what is still to be implemented, and what was the planned feature)

For example, some time back, there was a proposal about altering the 
property. There`s also been a voting, but now there's no sign of this 
anywhere (except for the forum).
I liked the property idea a lot, but I cannot use it, i cannot even 
design my code to later update it using properties as there's no sign of 
its currnet state.
I know the current property implementation is based on omitting the () 
signs, but I'm not using it, as it was meant to be changed, but when and 
how ???
The same stands for the scoped variables. I've started to use it to 
allocate class instances of (small)matrices on the stack, but than i've 
read, it will go. So I have to redesign things to use structs instead of 
classes to have them on the stack, but using struct requires other type 
of initialization mechanism, as they have no default constructor to 
overload. And now the construction of the struct is being altered as 
well. And so on...

I don't require a language with all the features completed, but altering 
the core features makes it impossible to create new/stable libraries.
I can go quite well without the opPow, and other operator overloading 
stuffs. I will update the library if they are present in the language 
and call the my appropriate function ( 1+2 additional lines to the 
source) but how to design anything if basic semantics are changing ?!

   Lack of IDE (minor issue). It's not a big problem, actually I can go 
quite well without an IDE, or without a debugger either (good old 
printf:) in most cases. (I've seen there were made great progresses in 
this as well)

   Missing stable, compiler with enhanced optimization features (minor 
issue). I've tried to reimplement some of my older algorithm from c++, 
but finally I haven't even tried most of them, as I didn't see any 
optimization in the asm codes for my simplest range. (The popFront, 
front, empty function calls were not inlined at all - though i didn't 
experienced with it too much as I could not find an appropriate 
IDE/debugger to check the asm code and insert breakpoints)
I've tried to use gdc, but it only superts D1. The patch/branch to use 
D2 i have to be built manually. I don't want to compile, patch, etc. a 
C/C++ project from some unstable source and work for hours to have a
working D compiler. I want to do D.

So for these reason I'm in a passive state and i'm waiting where D goes 
to. According to my oppinion there are many other programmars following 
D in a passive way like I do.
I like many features of D (and dislike some - but it's ok, cannot have a 
language that fits all the desires for everybody ), but while it's in a 
so mutable state, it`s hard to use it. I have to wait while most 
features are made immutable (and not const, that can be altered through 
some nasty const_cast proposals :) ).

Regards,
	Gzp



More information about the Digitalmars-d mailing list