Stephen Ramsay    Home

Language Games

Stéfan Sinclair, one of dh’s most talented hackers, responded to the last post with a question about the “dominant language” in dh. I suggested it was Java, but (as I noted in the comment thread), I really have no basis for saying that. Here’s Stéfan:

I’d say (as unempirically) that there are more dh projects developing (not just using) code with scripting languages like php, than there are with Java, especially outside of the larger centres. But maybe this is just speculation based on what I see as the norm for project cycles: a researcher (or small team) gets some funding which includes money for hiring some research assistants – often graduate students – who are more likely competent in php (or Ruby or Perl) than in Java. Moreover, I think dh projects tend to favour getting something up fairly quickly over design and robustness; another reason why scripting languages would be more prominent. There are centres with dedicated staff willing and able to work in Java, but that seems to me a relatively rare luxury.

I didn’t mean to nitpick regarding a minor part of the post, I was just curious. I don’t think it’s crowning a champion programming language that matters, it’s more about how the reality of the dh research environment should be influencing the curriculum (or perhaps there are too few of us teaching programming for it to matter that much).

I think Stefan is probably right, but of course, both of us are relying on general impressions.

When you look at the development of computer science curricula over the last few decades, you can clearly see that discipline responding to industry pressures. Scheme might remain the language of Hal Abelson’s venerable 6.001 course at mit, but in general, we’ve watched cs go from Pascal, to C, to C++, to Java as the demand for engineers with particular “skills” has changed out in the real world. I don’t know many cs professors who think C++ and Java are good teaching languages, though. Many of the professors I’ve talked to actually long for the days of Pascal, but they also know that students will object to learning a language that isn’t in common use.

When I started out in programming, I asked a friend (a very skilled hacker who was pursuing a PhD in cs at the time) what language I should learn first. I remember very clearly his answer, which was something like, “Oh, I don’t know. Just pick one. It doesn’t matter. How about a fake one? There are lots of cool pseudo-languages out there that will teach you what you need to know . . .” I thought he was 100% insane, and I was astonished that this guy — who was and is a master programmer, in addition to being a highly skilled theorist — would suggest something so obviously out of touch with reality. A few years later, I realized that he was 100% right. What’s important in programming is the concepts. If the goal is to learn programming and software engineering, the language literally doesn’t matter. Abelson’s Structure and Interpretation of Computer Programs (the textbook for 6.001), not only uses Scheme, but avoids explicitly teaching the language, per se. It’s perhaps the best book I’ve ever read on programming.

Digital humanities, thankfully, is not burdened with “industry pressures” in the way cs is. When I tell my students that it’s the concepts that are important, they believe me. They believed me even when none of their programming friends knew what Ruby was. I think they’d still believe me if I suggested that we all learn Haskell or Miranda. And that’s a good thing.

Still, it would be very useful to know what languages people regularly work with in dh. If we knew the answer to that question, those of us who teach programming for the Humanities (and I know there are only a few of us out there) could perhaps structure the teaching of the concepts in such a way as to make it easy to transfer that knowledge into other kinds of languages. I do this a little bit already, by occasionally pointing out the ways in which different languages — like C or Javascript — approach some concept that we’re studying in Ruby. I do that in part to emphasize that the fundamental concepts of programming don’t change drastically from language to language.

It would also be good to know what languages people use in dh, because it might help us to focus development where it’s most needed. We’ve been talking quite intensively about “tools” over the last few years in the dh community, but I’ve always felt that “tools” might best be thought of as an alias for libraries and apis.

It’s not possible to do a scientific poll on a blog like this, but I suspect my readership has enough hackers in the ranks to get some good anecdotal information.

So how about it? What languages do you use? What languages do the people around you use? What languages are people telling you you should know? I’d love to hear about it!

blog comments powered by Disqus