After finding the language D about a year ago, I’ve finally got around to playing with it. Mostly, this delay was due to not having a compiler for my mac. Until I found binary packages for the gcc front end. Nice and spiffy.

D is a pretty nice language, what I’ve played with so far anyways. They seem to be doing a nice job of pulling many modern language features, while maintaining native compilation and static typing. Pretty neat combination, I think.

The native compilation is nice to see. For my own personal playing, and tweaking of my systems, having a VM with piles of support libraries isn’t an issue. But when I start to think about packaging, and distributing, and supporting something I’ve built, perspective changes. In addition to all of the (unfortunately) common problems of application interactions, you now get to track the VM as well. When installing your applications onto a costumer’s platform, do you hope there is a compatible VM? Or do you ask your users to install a certain one? Or put one ‘inside’ your application? Now when users install multiple applications from multiple vendors, how does all of this interact? And so on and so forth.

It just simplifies customer support interactions a bit by taking the VM out. There is a lot of stuff like that in D. There seems to be a large focus on doing what software developers need. Based on what they are actually doing, not on what some theories about software design suggest.

The static typing thing I find rather amazing. Just me I know, but after using C and playing with C++, then finding Ruby and Io. I was totally in the mind set that static typing was wrong and evil. Well, surprise surprise, you can have static typing and not have it get in the way. (without just casting everything to void* too.) So, I think that’s pretty neat.

I was hoping to have a BBEdit Codeless Language Module for D to go with this post. But D is proving to be way to complex to get anything useful from a Codeless Language Module. So I’ve stopped messing with that. Looked into trying a coded language module, but that’s gonna take more time and energy than I’ve got to spare. oh well.