Friday, June 26, 2009

D - Good, Bad, Ugly, Pretty

Well I just got back in South America and it looks like the community is trying to get an honest evaluation of the D language so that it can plan for its future correctly. This is a healthy process (unless the complaints are ignored), therefore I will voice my opinion on the state of D, or more so what should be done for D's future success.

First of all, I see the biggest problem for D is that the community is small, and there is no incentive for the community to grow. All jobs are done in C++, Java, C#, etc. Because D isn't really old or rich, the community isn't likely to grow much in the future. From my experience, D is a hobby language and that isn't looking like it will change much in the future, not without a lot of money. I see D's small community and lack of real world jobs in D as the MAJOR problem with D, and probably as a huge reason why people try D, like it, then move on. Those who stay are not in it for the money, but the love of the language.

Second, productivity tools. You can have the most productive language in the world, but if C++ or C# has better productivity tools for refactoring / coding, the productivity of the language itself may not matter as much as the productivity gained through the productivity tools. Plus having no productivity tools scares away main stream programmers.

Third, stability. While stability is somewhat accomplished with D 1.0, there is a new DMD release, new phobos + Tango release about once every month or two. These releases tend to have small breaking changes that make old code obselete if not updated every month.

Fourth, simplicity. The simpler the language, the easier it will be for new people to pick up or maintain. Some people enjoy complexity, while I enjoy the simplest possible solution. D 1.0 is almost perfect, but IMO D 2.0 is creeping on the complexity scale. If a concept can't be quickly grasped by most programmers, perhaps it should be left out.

I really don't see the D language itself as the problem, and I see the D tool chain easily improving in the future. The real problem with D is that no one is ever going to use it in serious applications, because no one really knows it. Its not taught in the University, D has no means of spreading the word of itself, its not revolutionary enough to really catch anyone's eye. No one will use it because no one uses it, there are other languages that perform a decent job with decent productivity tools to accomplish practically the same thing as D (C#, Java, Python, etc).

So, what's the future of D? I think the future of D is in indie games. The end user doesn't care what language its in, productivity is increased, and most game bindings are already converted to the D language. Since indie games are usually written by a small team without industry experienced "bosses", they can freely choose the language they want to use.

D will continue to excel in hobby projects as well, since there is no real money stream coming from D incorporated to fund itself.

My prediction is that D's state will probably stay the same, maybe picking up some more indie game developers, for the future.


shlomil said...

Several more issues (IMO) with D :
(Last time I looked at D was several months ago so I might be out-of-date .. so feel free to correct me if I'm wrong)

Compiler - The best implementation of D is proprietary. GDC development is frozen. LDC still not ready for use and has some features missing and is not included in the Linux distributions repositories.

Build tools - While D has it's own superior build tools, most OSS programmers would rather using *make and other programmers have to learn the new build system from scratch.

Lack of guides, howtos and tutorials - Other than language specification I couldn't find an official manual for the language features and it's bindings. Online manual like the one PHP has would be great.

Adoption by major FOSS projects would help to promote D's usage. For example, there is a growing need for an easy to use, high level language for the KDE/GNOME desktops and apparently Mono started filling that need. Other people started Vala project to offer a non MS-Novel solution but I ask myself why doesn't D fit in there as language for Desktop Applications? IMO D can be written to be much more readable and easy to use than C#.

dominik said...

I think you've nailed it with d1 vs d2. I also find d1 almost perfect - in combination with tango it lacks only a few more features where I would call it perfect (I need macros for instance). The growing rift between d1 and d2 is a heavy burden on small community. It looks like Tango/d1 would be a good bet for the future to hedge on - now we only need tools, as you've mentioned. Team0xf release several that are great, xfbuild and xfprof come to mind.