Jun 192012
 

Of the conversations following my post Your programming language sucks?, I’ve received mostly nodding agreement. Perhaps most interesting of all, a friend from my reading group shared an article written by Paul Graham titled Beating the Averages.

In Beating the Averages, Graham illustrates how people talk about languages by calling on a hypothetical language, Blub. An equally hypothetical Blub programmer would look at a more powerful language in terms of Blub: “Hey, that language is pretty similar to Blub but it’s got some weird stuff mixed in. Well, anyway, I can do everything I need in Blub and it suits me.” Meanwhile, a programmer of that language more-powerful-than-Blub looks at Blub and says: “Hmm, it’s missing X. Why would you want to reduce yourself to Blub when you could have more?”

Let’s bring this back to the original example by substituting Java for Blub, using operators to compare Dates for X, and, say, C++ for the more-powerful-language.

“Hmm, Javais missing operators to compare Dates. Why would you want to reduce yourself to Java when you could have more?”

“Hey, C++ is pretty similar to Java but it’s got the hassle of pointers and dereferencing mixed in. Well, anyway, I can do everything I need in Java and it suits me. See, I can come up with two ways of comparing Dates in Java and one even uses operators!”

This helps explain two points Graham is making. First, the choice of language is more than just the choice of tool.

“…programming languages are not just technology, but what programmers think in.”

Second, a programmer’s experience colors how they think about new/other/different languages.

“…the only programmers in a position to see all the differences in power between the various languages are those who understand the most powerful one.”

These two points come together in what Graham terms the Blub Paradox:

“[Programmers are] satisfied with whatever language they happen to use, because it dictates the way they think about programs.”

With all of this in mind, I still stand by my original statement but I’ll add to it: Saying a programming language “sucks” says less about the language and more about the person speaking. It helps convey that person’s understanding of the language and may help place their point of view somewhere along the power-of-the-language “continuum.” Still, I consider the use of sucks to be uncharitable and dismissive.

This discussion only strengthens my interest in reading Seven Languages in Seven Weeks, which my reading group will begin in August.

  4 Responses to “Revisited: Your programming language sucks?”

  1. 7 in 7 seems interesting, looking forward to your review. (I’m still working on _Clean Code_.)

  2. [...] Revisited: Your programming language sucks? (Code Awesome) [...]

  3. Perhaps these will help elucidate the point. Think on them, grasshopper.

    Constructors are expressive. You can see that you are definitely creating an object when you use one. However, constructors, particularly in Java, lack expressiveness and flexibility. One axis of flexibility that we wanted in our money example was to be able to return an object of a different class when we created an object.

    Then watch this and reconsider Graham’s quote programming languages are not just technology, but what programmers think in

    Finally, consider the words of Christopher Alexander

    ‎”One of the primary insights of patterns is that although it may seem as though we solve
    completely different problems all the time, most of the problems we solve are generated by the tools we use, not by the external problem at hand. Because of this, we can expect to find (and actually do find) common problems with common solutions even in the midst of an incredible diversity of external problem solving contexts.”

    Your assertion that sucks is dismissive and uncharitable essentially argues that all ways of thinking are valid, even if some ways of thinking create extra problems (“Let us suppose that gravity is made of Jello. Now why can’t we see this Jello or feel its gelantinous gelatin? For that, we must ask why does Jello gel?)” that simply don’t exist in other models…sounds like a pretty modern Liberal argument, when I sit down and think about it. I like. :)

  4. [...] Update 2012-June-20: Please also read my follow-up post, Revisited: Your programming language sucks? [...]

Leave a Reply