I am relatively new to D. As a long time C++ coder, I love D. Recently, I have 
started doing some coding with D. One of the things that
bothered me was the 'perceived' quality of the tooling. There are some 
relatively minor things that make the tooling look bad.

For instance: I am using the DMD compiler on a Mac, and it seems the compiler 
has a horrendous command line usage. Just type 'dmd
-h' and observe:

- Some option names are single characters and some are full words. Quality 
tooling will support a short and a long option for most of
these.
- Some options have values separated from the option names via '=' some via 
*nothing*. The latter is just unacceptable. Look at this:
-offilename. First of all, you better list this as -of<file-name> so that one 
can understand where the option name ends. Second, not
allowing space or requiring = after the option name is messy and looks 
unprofessional.
- All options start with '-', yet the help option starts with '--'.
- Option description text seems to be left aligned, yet there are 3 exceptions

The error reporting has issues as well. I noticed that the compiler leaks low 
level errors to the user. If you forget to add a main to your
app or misspell it, you get errors like:
====
Undefined symbols:
  "__Dmain", referenced from:
      _D2rt6dmain24mainUiPPaZi7runMainMFZv in libphobos2.a(dmain2_513_1a5.o)
====
I mean, wow, this should really be handled better.

Another annoyance, for me anyway, is that the DMD compiler outputs the .o files 
without the package directory hierarchy. I like to
organize my code as 'src/my/package/module.d'. And I want to set my output 
directory to 'lib' and get 'lib/my/package/module.o'.
But DMD generates 'lib/module.o'. I setup my project to build each .d file into 
a .o file as a separate step. I don't even know if this is
the desired setup. But that seems to be the way to make it incremental. I 
couldn't find any definitive information on this in the DMD
compiler web page. It says:
"dmd can build an executable much faster if as many of the source files as 
possible are put on the command line.

Another advantage to putting multiple source files on the same invocation of 
dmd is that dmd will be able to do some level of cross-
module optimizations, such as function inlining across modules."

Yes, but what happens when I have a project with million lines of code? Is the 
suggestion to recompile it every time a file changes?

I am sure there are various other warts about tooling and I know Walter and co. 
are working on more important stuff like 64-bit
support, etc. However, if D wants to be successful it needs to excel in all 
dimensions. I am sure there are people who are willing to
improve little things like these that make a difference.

IMO, despite all the innovations the D project brings, the lack of pretty 
packaging and presentation is hurting it. I have observed
changes for the better lately. Such as the TDPL book, the github move, the new 
web page (honestly, the digitalmars page was and still
is a liability for D), and may be a new web forum interface(?).

I apologize for sounding critical at times. I do appreciate all the great work 
that is going into D. I want to see it succeed.

Reply via email to