Top 5

Chad J gamerchad at __spam.is.bad__gmail.com
Thu Oct 9 12:23:41 PDT 2008


Andrei Alexandrescu wrote:
> Ok, per Aarti's suggestion: without speaking officially for Walter, let 
> me ask this - what do you think are the top issues you'd like to see 
> fixed in D?
> 
> Andrei

OK.  Here, have a wall of text.

1. Tango and Phobos merge.  I'm with the others on this.  The few people 
I've introduced to D seem very irritated by the existence of 2 standard 
libs.  I think even a common runtime will be insufficient to calm the 
worries of newcomers, but it is a step in the right direction.  A single 
standard API is what needs to happen.

2. Walter working on an open compiler.  If Walter were to announce that 
he would be working on LLVMDC I would clench my fists and shout "FUCK 
YEAH!!".  That's because this would be really awesome and would pump me 
up; sort of like watching Gurren Lagann.  I think I might be a bit of an 
odd fellow, even by geek standards...

3. Forward references.  Even I've run into this a few times, and I can 
see how people can run into this a lot and how it would make their lives 
miserable.  This isn't quite a language issue as much as an 
implementation issue, but if you're looking for places to spend time 
then this is one of them.

4. The find-the-missing-parentheses game is not fun.  I avoid playing 
it.  Now let's make it easy for the unfortunate victi-, I mean newbies, 
to avoid playing this game.  Just get rid of D's implicit property 
syntax.  Walter seems opposed to explicit properties for whatever 
reason, so let's just not have properties.  This implicit property 
syntax gives us this trade-off: On the upshot, you save a few keystrokes 
every now and then.  On the downside, you get some horrible runtime bugs 
that take hours and hours to debug.  I'll give that one a miss.  So if 
it's too hard to do it right, then please don't do it at all.

5. 4 is all you get.  Sorry.

Notes:
4 may be a member of a broader category of language features: cute 
syntax sugary things that have the potential to cause really nasty bugs 
in people's code.  Oh hey, switch-case, so glad you could join us (but 
not really).
Also I'd like to hear an update on how Walter, and maybe you Andrei, 
feel about this implicit properties issue.  I remember in 07 Walter 
saying something to the effect that explicit properties were not a 
priority and that they weren't something with proven usefulness.  I'm 
realizing now why I'm not entirely convinced:  the current implicit 
properties cause nasty bugs, and getting rid of that possibility MUST be 
a good idea.  At that point, explicit properties aren't nearly as useful 
as removing implicit properties.  So, if you don't mind, what are the 
thoughts of the D designer(s) on this one?

On compilers, here are my observations:
- DMD is nice, but it only targets x86 Windows and Linux.  It will only 
ever support x86 Windows and Linux.  Want to target Macs? Nope.  How 
about 64-bit systems, namely the really good 64-bit linux systems that 
are around nowadays? nope. Cell phones? hahahaha.  ... to me this is a 
fatal flaw.  The fact that DMD has proprietary code in it doesn't help 
either.
- GDC.  It has the potential to target everything under the sun through 
shear brute force.  Of course, someone has to bother to make the runtime 
and the glue work for these other platforms.  Oh fun.  Now, this is 
still pretty cool, but then we consider how GDC rarely gets updates.  I 
use an SVN version of it nowadays--something I hardly ever do with 
software.  GDC just doesn't have much muscle behind it, and I can see 
why.  It's kind of like stereotypical sci-fi advanced high powered alien 
technology, only to use it you have to stick your hand into this horrid 
smelling sticky goopy stuff to use the controls.  But wait, there's 
more!  I've read that the GCC/GNU zealots won't let GDC into the fold 
without the frontend's copyright being assigned to the FSF.  Have fun 
guys.  It's still what I use though, because it can like, actually 
compile 64-bit programs for my 64-bit computer.  Awesome feature, really.
- LLVM.  I really wish the D frontend for this was fully functional. 
The license is nice, it has growing numerous backends, and it has a 
portable C backend.  That C backend means that even if you don't have a 
highly optimized backend for your platform already, you STILL win. 
Seriously wtf, it's broken.  OK, well there are still those damned Java 
phones, but maybe a Java bytecode backend would fix that issue.  It's 
like that gun you get towards the end of the game.  Up until now you've 
had a knife for when your sidearm runs out of bullets.  Now you're given 
this improved BFG9000-like thing that (1) kills everything on the screen 
(2) does it in one hit (3) does it repeatedly and quickly (4) doesn't 
run out of ammo.  There is only one right answer.  Oh and in our case we 
can have it early in the game.

Another thing came to my mind as well.
I think D is not strong as an experimental language.
I think D IS strong as a robust, high-productivity language.
I'm not too keen on numerous new nifty features.  Back when I got into 
D, I noted that D seemed to follow this idea of progressive disclosure 
as well as the principle of least surprise.  It wasn't the features that 
sold me.  It was this remarkable ease of use and general smoothness that 
sold me.  D is strong in that area, and I'd like to see D keep its 
strengths.  Of course, new features are always nice, but the good design 
principles that are in D's roots should take priority, IMHO.

If you read the whole thing, thank you for your time.  I do have this 
habit of rambling on.  Maybe you could tell.  But now I have a class to 
go to.

Later,
- Chad



More information about the Digitalmars-d mailing list