Well, it’s been quite a year, and I’m looking forward to the adventure that continues in January. However, some memes seem to repeat themselves. I was reading through an article asking whether Erlang was overhyped or understimated and came to the conclusion that a lot of people coming to Erlang from “modern” languages like C++ or Java really want Erlang to be C++ or Java. It’s not really that surprising, given Erlang’s Prolog-like syntax that they would be repelled by it. After all, Prolog hasn’t been in vogue for quite some time and kids aren’t taught much beyond object-oriented programming in school these days. What further exacerbates things is the delusion that every language must serve the web or it’s not useful. Then there are the perennial requests to compare apples to oranges with regards to performance metrics. None of what I’m about to say will change any of that, by the way, but the same questions occur so frequently that somebody should really compile a FAQ to house the answers. Here’s my take on the questions.
- There are no silver bullets. Fred Brooks gives a far better explanation of this statement. Buy or borrow The Mythical Man-Month and read it.
- Every language has strengths and weaknesses based on the problem domain it was created to solve. No single language solves all problems equally well, and if you only ever want to work in a single language then you not only short change yourself but your employer as well.
- Whether or not you were ever exposed to Prolog or functional programming is irrelevant. Get a book, spend some time learning, then make the decision on whether or not it’s useful to you.
- Pick the right tool for the problem you are attempting to solve. While one can undoubtedly create a program for every problem in a single language, it is quite likely that there will be a number of issues that are better addressed by a language written for the problem domain.
- When one is asking for metrics one should be careful to ensure that the metrics are meaningful. Likewise, a single metric is almost always universally irrelevant.
Erlang is a good solution for a certain set of problems. Other languages are good solutions for their own problem sets. At some point, one has to ask whether or not these “overhyped vs. underestimated” articles are useful. My own impression is that they are not in the fashion they are usually presented since the presenter usually has an agenda to “prove” that language X is superior to language Y because the presenter is an expert in language X. While I have no issues conceding that many writers are just looking for help in understanding something, far too often they are merely complaining that language Y isn’t language X and therefore is inferior.
This line of thinking isn’t limited to languages. Sadly it extends to applications, operating systems, and other items that lead to debates becoming those of religion rather than engineering.
Let’s hope 2011 is a better year, because being a polyglot is demonstrably better than being a monoglot. Likewise, systems that are created with tools that have been selected based on the problem(s) being solved will, in general, be superior to those where a single language is employed based on the rationale of “we’re a [insert language] shop.”
Be Seeing You