Benad's Web Site

Over the years, I tended to learn about one programming language a year. For example, in the past three years I've learned Python, Erlang and C#.

For this year, I was torn between D and Go. Both are quite similar, though you can clearly feel that "D" doesn't simply stand for Digital Mars, but also as some kind of spiritual successor of C. And while D doesn't have a large commercial backing like Google's Go, it is older and was refined over the course of years of actual use, a bit like C was before it was standardized.

What pushed me towards D though is its ability to not only call C libraries (almost all programming languages can do that), but also be called from C libraries. The D runtime can be manually started within its host process, so this can be transparently done. This is a big deal, since it means D can be used to produce code libraries at the same level as C and C++ and can be integrated almost anywhere.

This does lead to my biggest gripe about D. If you looked at the link above, you'd notice that using rt_init() and rt_term() isn't documented outside of sample code and mailing lists. The official documentation is terse, and the official book dates back from 2010, lacking all the new features of version 2 of the language. This is a little bit worrying, though I've had a similar experience with Groovy and that didn't affect me too much after all. That, and at work I have access to the book at work.

Published on June 23, 2013 at 16:34 EDT

Older post: On Bashing C++

Newer post: Backing up bitly Bookmarks