The D Programming Language

Joe Gregorio

D is a programming language from Digital Mars.

D is a systems programming language. Its focus is on combining the power and high performance of C and C++ with the programmer productivity of modern languages like Ruby and Python. Special attention is given to the needs of quality assurance, documentation, management, portability and reliability.

From the Overview:

D is a general purpose systems and applications programming language. It is a higher level language than C++, but retains the ability to write high performance code and interface directly with the operating system API's and with hardware. D is well suited to writing medium to large scale million line programs with teams of developers. D is easy to learn, provides many capabilities to aid the programmer, and is well suited to aggressive compiler optimization technology.

D is not a scripting language, nor an interpreted language. It doesn't come with a VM, a religion, or an overriding philosophy. It's a practical language for practical programmers who need to get the job done quickly, reliably, and leave behind maintainable, easy to understand code.

It's got strong typing and optional garbage collection but no bubble-tax.

D is the culmination of decades of experience implementing compilers for many diverse languages, and attempting to construct large projects using those languages. D draws inspiration from those other languages (most especially C++) and tempers it with experience and real world practicality.

The language is still evolving, for example, closures were recently added. It looks pretty impressive, particularly if you've done any C or C++ programming you'll like the way it cleans up many of the awkward pieces of that language family. For example, here is a program that just does some simple manipulations of arrays of structs. Note the ability to give defaults for struct members, arrays of structs, and the handling of types in the foreach construct. The Digital Mars D compiler does very well at the Debian Computer Language Benchmarks Game, and it's up to 12 on the TIOBE index, but then again that puts it just one step behind Delphi, so I'm not sure what that means.

As much as I like the language I'm also pretty jaded when it comes to changes in the programming language landscape, something I'll comment on more in a future post, but given how long it took C++ to gain any traction I'm not sure any new C-type language will get significant adoption in under ten years. On the other hand, with C linkage there's already a vast amount of code you can use from D. I also wonder if it would be possible to do machine translation of Java into D. It looks like a project to do that is well under way.

The TIOPORT project is a Java to D conversion project that has made good progress. It's written to convert the SWT framework as a target and from the wiki pages the autoconversion mostly works on Linux and GTK.

Posted by Dan V. on 2007-11-08

This is funny. I am just in the process of porting your URL template WSGI dispatcher to D (well I am also retrofitting it for a D FastCGI library). I often find python stuff converts really well.

Posted by Paul Findlay on 2007-11-08

comments powered by Disqus