Sunday, October 9, 2011

The OO Factor

TIOBE releases statistics on the popularity of programming languages every month. The methodology behind the study is not without its limitations, but it's definitely worth checking out. The information is culled entirely from search engine statistics, and there are some difficulties interpreting the data, as the popularity of languages forms a long tail. One of the best things about the study is that they have data going back 25 years (though I'm not entirely sure how).

I don't want to start any arguments about whether your favorite language is increasing or decreasing in popularity. Instead, I'm interested in what this data means for your career. Chad Fowler likens your investment in a language to financial investing. You might pick ole faithful and get consistent returns, or you might take a gamble and hit the mother load. Here are some of the lessons I think are worth noting.

1) All of the top languages are object-oriented (with the exception of C). Whether you specialize in Java, C++, or C#, you're OO. These languages are far from being identical, but their similarities are much greater than their differences. It's a testament to the OO paradigm that it has enabled the development of enterprise applications with reusable code in a wide variety of syntaxes and styles. Really I'm shocked by how popular C still is, as it is not technically an OO language.

CategoryRatings Sep 2011Delta Sep 2010
Object-Oriented Languages56.2%+1.7%
Procedural Languages37.7%-2.5%
Functional Languages4.3%+0.5%
Logical Languages1.8%+0.3%

2) Everything else is a grab-bag. After the top 10 or 20 languages, you have a long tail of less popular languages, especially procedural languages. I see Haskell, Scala, F#, and a whole bunch of languages I've never heard of. It's tough to pick one of these to focus on. Will Erlang experience a meteoric rise now? Will COBOL finally bite the dust?

3) Conclusion: Diversify your knowledge resources. In a market like this, all you can do is diversify. It's a good idea to become familiar with a couple of OO languages and development environments, though I'm not going to spend all my free time learning Java in the off-chance that Microsoft platforms take a nose dive (which this article suggests might happen). If you're a Windows-only programmer, download Linux, Eclipse, and do some Android programming.

Once you have those bases covered, it's hard to say what you should learn next. For this reason, I think about learning languages in much the same way as I thought about studying philosophy. If you want to learn philosopher X, reading his/her works will only get you so far. You also have to read lots of other philosophers to understand what X is responding to and what makes X different. In the same way, languages develop historically in response to the successes and failures of other languages. If you really want to learn an OO language well, you'll have to understand what makes it different from Prolog, Lisp, and some of the other alternatives out there. That way, you'll be able to better understand and articulate why the approach you want to take to solve a problem is the right one. That's a valuable skill in any market.


-Chart of the evolution of programming languages

1 comment:

  1. Enjoyable post, Zach. It pains me to see my beloved Fortran at 31...


Related Posts Plugin for WordPress, Blogger...