Fetishizing Programming Languages

May 1st, 2010 by John Nelson Leave a reply »

Learning a new programming language is fun. Different languages take different approaches to solving problems — they follow different paradigms. Learning a new language feels a lot like exploring, and I like exploring.

Exposure to more than one language is a good thing. However, once you are familiar with the broad paradigms, there exists a danger of conflating learning new languages with learning new ways to solve problems. In my case I forgot that programming languages are tools. Learning new languages can be seen as acquiring new tools. Learning a set of very similar languages is of limited utility because your not actually gaining anything new. There is almost no marginal benefit. To make things less abstract, compare the promisculous language learner with a carpenter. Carpenters don’t seem to suffer from the same error of judgement. There might be several brands of hammers offering slightly different features, but they all pound nails into wood.

I still enjoy learning new languages, but I don’t do so with such fervent desperation anymore. I’ve ceased my semi-conscious search for the best one. Instead, I finally realized my time is best spent studying algorithms, learning new programming techniques, and contributing to existing projects. This is much more rewarding than implementing the same software in twenty-three languages.

P.S. This post is a follow up to Consumerism and Programming Polyglots. I wrote Consumerism and Programming Polyglots a while ago. When I reread it today, I was very dissatisfied. It hinted at what I wanted to say, but it was inarticulate — mostly because I didn’t understand what mistake I was making by learning languages promiscuously. I think I get it now. Six month from now, I’m sure I’ll identify an entirely new aspect of my miseducation.

P.P.S. I wrote the title down, remembering someone had said it to me once when critiquing another post, Back to PHP. I searched my email before publishing this post and discovered it was Zed Shaw. This was disheartening. It took me several months since my original post to come to a conclusion that was accurately summed up by his flippant response: “All this fetishizing of technology is kind of pointless.”

Advertisement

6 comments

  1. I read a similar opinion on Saturnboy’s blog: http://saturnboy.com/2010/04/the-schizophrenic-programmer/

    I agree with your opinions, although I am more biased to your “it is fun” view than his “contamining ideas” point.

    Ruben

  2. John Nelson says:

    Ruben. Thanks for the link.

    Although I also disagree with his “contaminating ideas” assertion, his post was much more entertaining. He’s added to my reader.

  3. steve says:

    Very good point about learning similar languages. Personally next one on my list is lisp, time for something different =]

  4. Justin says:

    Great point about demanding diversity in what we learn. If the goal is to map the entire space of knowledge, you get the maximum coverage if each piece is orthogonal to the previous piece.

    The trap I find myself in is lack of transfer between languages that are too orthogonal. So my knowledge of how to solve some problem in Erlang doesn’t do me any good on the iPhone because my solution is bound too tightly to the language.

    I’ve arrived at the same conclusions, step back to the algorithm and concept level and avoid binding my knowledge to a specific language.

  5. John Nelson says:

    Steve: Lisp is one that I think helps you learn a lot, even if you’ll never use it. Lisp implements so many languages paradigms. Lisp accelerates learning better than most languages.

    Justin: Thanks for seeing what I was talking about. The irony is that I wrote this post to make clearer something I articulated poorly in the past — then watched as everyone got hung up on the (admittedly bad) hammer analogy.

    Great Blog, btw.

Leave a Reply