Programming Language Trends

I’ve been noticing my interest in non-Microsoft languages has been on the rise lately. I’ve been actively playing with Ruby and PHP and have been blog surfing for information on functional languages like Lisp and Erlang.

I guess that’s why I suddenly became curious about the current popularity ratings of programming languages and started to search for some hard data. The most comprehensive rating system that I found so far is the Programming Community Index published by Tiobe Software.

Here’s an excerpt from their February 2008 results:

Position
Feb 2008
Position
Feb 2007
Delta in
Position
Programming
Language
Ratings
Feb 2008
Delta
Feb 2007
Status
1 1 Java 21.483% +2.50%   A
2 2 C 14.859% -1.24%   A
3 5 (Visual) Basic 11.604% +3.24%   A
4 4 PHP 9.890% +1.04%   A
5 3 C++ 9.274% -1.49%   A
6 6 Perl 6.205% +0.13%   A
7 7 Python 4.763% +1.20%   A
8 8 C# 4.510% +1.32%   A
9 12 Delphi 2.798% +0.72%   A
10 9 JavaScript 2.334% -0.65%   A
11 10 Ruby 1.862% -0.67%   A

 

 

The list led me to a few surprising conclusions:

  1. .NET isn’t as popular as I thought – It’s easy to lose perspective when you are surrounded by a single technology. For some reason I had assumed that C# and Java were equally popular. Although Java has declined about 5% on this survey over the last six years, it is still almost 5 times more popular than C#. In fact, C# is 8th on list behind C, C++, Perl, and even Visual Basic (oh the scandal!).
  2. Ruby didn’t make the top 10 – Although there has been somewhat of a backlash against Ruby in the blogosphere over the last few months, I still assumed it was popular enough to be in the top 10. I suppose I should have guessed as much after the last recruiter I talked to told me that she never heard of the language.
  3. COBOL refuses to die – I was saddened to see that COBOL is still 15th on the list. Some languages just don’t know when to quit. This shouldn’t surprise me since the bank I used to work at was at least 3-5 years from retiring their last COBOL program when I left and they were further ahead of the game than the vast majority of other financial institutions (they adopted .NET when it was still in Beta).
  4. Python was language of the year for 2008 – Apparently Tiobe awarded Python this status at the end of last year due to its surging popularity. I noticed this right after I got an impassioned endorsement of the language from someone whose opinion I respect. I guess it’s time to check it out.
  5. Functional languages are still on the fringeDotNetRocks has had about a dozen shows on various functional programming in the last several months, so I thought that was a sure sign that the paradigm had gone main stream after a mere 50 years of relative obscurity. However, Functional Languages as a whole come in at a paltry 1.4% compared to the whopping 98% dominance of Object-Oriented and Procedural languages combined. LISP tops out the list at number 20, while Haskell is 36th, Erlang is 46th, and Scala barely made the top 100. Given the fact that we have hit the wall on processor speed and are well on our way to scaling out to a gajillion cores, I’m surprised that functional languages haven’t achieved a Ruby like cult status yet. Do you really want to spend your golden years debugging multi-threaded programs in Java or .NET? I didn’t think so. On a brighter note, Functional language searches rate quite high on reddit as indicated by this other poll. Perhaps there is still hope.
    Category Ratings February 2008 Delta February 2007
    Object-Oriented Languages 54.8% +3.1%
    Procedural Languages 42.9% -1.9%
    Functional Languages 1.4% -0.4%
    Logical Languages 0.9% -0.8%
  6. Dynamic languages are coming on strong - Rails has definitely proven the value that dynamic languages can bring to the table in terms of meta-programming magic and generally making life easier for the programmer, but I was surprised to see that dynamic languages were already almost as popular as static languages in overall usage. I obviously forgot about the prevalence of PHP, Python, and Perl.
    Category Ratings February 2008 Delta February 2007
    Statically Typed Languages 57.2% -0.2%
    Dynamically Typed Languages 42.8% +0.2%

As an interesting side note, there were some languages that didn’t show up on the list because of the “Turing Complete” requirements that the site used.

A language is considered a programming language if it is Turing complete. As a consequence, HTML and XML are not considered programming languages. This also holds for data query language SQL. SQL is not a programming language because it is, for instance, impossible to write an infinite loop in it. On the other hand, SQL extensions PL/SQL and Transact-SQL are programming languages. ASP and ASP.NET are also not programming languages because they make use of other languages such as JavaScript and VBScript or .NET compatible languages. The same is true for frameworks such as Ruby on Rails, Cocoa, and AJAX. Finally, we have also excluded assembly languages, although Turing complete, because they have a very different nature.

No matter how you look at it, there are a lot of options out there that are being taken seriously these days and the number seems to only be growing.

It reminds me of a quote that I recently heard from Steven Forte. He stated in an interview that he won’t hire candidates if they have too much experience in any one language. He suggested only spending about 2 years on a language before moving on to something else. I was skeptical of his career advice at first, but now I’m starting to think that he had a point.

We are clearly entering the era of the polyglot programmer, which means that diversification is becoming more and more of a career asset.

23 Comments

  1. Sam February 13, 2008 10:04 am 

    I wanted to ask privately, but I didn’t see a contact link. Anyway, you said

    “It reminds me of a quote that I recently heard from Steven Forte. He stated in an interview that he won’t hire candidates if they have too much experience in any one language. He suggested only spending about 2 years on a language before moving on to something else.”

    Did you /hear/ it, or is there a source online for this (or something else entirely)?

  2. Russell Ball February 13, 2008 10:26 am 

    I have my email on the about page, but I think I’ll add a contact link to make it more obvious.

    I heard it on a DotNetRocks episode. He’s been on 3 episodes and unfortunately I don’t remember which one it is. DNR publishes transcripts, so I’ll do some searching on it later tonight and see if I can find it. I’ll also search his blog and then post the link when I find it.

    Thanks.

  3. Troy T. February 13, 2008 11:34 pm 

    Interesting data. Over the last 6 years, I’ve informally monitored development platforms to look for trends. My prefered research tool is usually a major job site.

    I’m also surprised at the rankings on Tiobe. I would question their search methodology based on the job data I see on a regular basis. For example, I just searched dice.com and got these results in a nation-wide search:

    Java 9600
    .NET 7092
    C# 5482
    C 3928
    Perl 2208
    PHP 1454
    Visual Basic 1184
    Python 573
    Ruby 444
    Delphi 76

    If the goal is to watch for trends in languages and platforms, as the Tiobe site states, then isn’t the ultimate gauge of a language the number of available jobs? That’s speaking as a professional developer who is not independently wealthy, so I need my language knowledge to eventually translate to a paycheck. ;-)

    The job site search isn’t a perfect method by any means. But it does show disconnects between reality and rhetoric. For example, I’ve noticed for some time, that PHP developers tend to be a very passionate and vocal group on the web. But all that rhetoric has never translated to large numbers of jobs in the market (over the past 6 years anyway).

  4. Russell Ball February 13, 2008 11:42 pm 

    @Troy – You make an excellent point! I agree that job searches probably offer a better measure of the real world usage of a language, especially since it accounts both for apps being developed and apps being maintained. Thanks for sharing your search results. Those seem to be more in line with what I expected.

  5. petrus February 14, 2008 2:03 am 

    I don’t think that this data displays the real current ‘trends/popularity’. I think it is based on current implementation. For example, C is definitely not very popular at the moment, but is probably implemented in more systems (legacy) than most other languages at the moment and hence the #2 on the list.

  6. david koblas February 15, 2008 1:17 pm 

    Just to clarify a point, you said:
    “Functional languages are still on the fringe”

    The funny part is that outside of a curly brace style syntax, JavaScript is really a Scheme (functional) language under the covers.

  7. Rodger February 15, 2008 3:28 pm 

    The chart mentions Java, C# and the rest of the languages as separate entities. Yet when you draw your conclusion you refer to it as .NET. As though C# was the only .NET language that anyone uses? The VB branch is most likely quite a bit of VB.NET in there, add to that the C# numbers for a /- 16.114% (depending on what percentage of the VB branch is VB.NET. Then you still have Managed C at a lower popularity rate, so it’s extremely difficult to tell what if any percentage of the C makes for the managed C crowd. There’s also other languages I’ve even went for job interviews on, one was even for IronPython which definitely still categorizes under .NET. Last but not least I’ve seen many jobs posting they are looking for ASP.NET developers but not mention the language. In those cases, the probability it’s either C# or VB.NET is extremely high.

    I guess ultimately what I am getting at is, we can look at the chart and say it depicts Java as more popular as C#, and that may be the case. What we cannot infer from this is Java is more popular than .NET, as the chart does not accurately gather this information.

    Rather than popularity of platforms (.NET, J2EE, etc). I rather like to look at this site as an indicator of what languages might still be relevant to pick up on for work stuff. Picking up just about anything in that top ten list should keep you employed. :)

  8. DH February 15, 2008 4:43 pm 

    Another wrinkle with the Dice.com listings…

    1) They show jobs that are *needed*, not jobs that exist.
    2) We dont know if that job is for maintenance vs or new development.

    Also, it’s the language’s popularity among executives versus it’s popularity among programmers. A lot of vacancies could be due to the fact that nobody wants to use it, and vice-versa.

  9. Russell Ball February 15, 2008 8:29 pm 

    @Rodger – Good point about combining .NET languages when doing a comparison with Java. I think I assumed that VB and C meant VB6 and unmanaged C/C , but I’m sure that plenty of .NET was mixed in. You have an even better point about ASP.NET swallowing up the numbers for both because it wasn’t included as a language, even though VB.NET/C# is used within the context of the web framework. Perhaps my initial assumption that .NET and Java were roughly equivalent was not so far off after all.

  10. Russell Ball February 15, 2008 8:40 pm 

    @DH – Good points. Popularity is definitely a vague term that could have a lot of nuances. At the very least, I should have specified whether I meant which languages developers would LIKE to work on versus which ones they are ACTUALLY working on. I get the feeling that since the index is based on courses, job listing, search engines, and 3rd party tools that is more closely reflects what is currently being used rather than what programmers would prefer to use.

  11. Russell Ball February 15, 2008 8:43 pm 

    @Petrus – I agree. I think this poll more represents current realities than developer preferences. I probably should have picked a different word other than popularity and trends.

  12. Rodger February 16, 2008 6:29 am 

    One thing I can clearly agree with:

    “We are clearly entering the era of the polyglot programmer, which means that diversification is becoming more and more of a career asset.”

    I really like the way things are going right now, keeps things interesting. Really challenging to find out which languages fit which tasks the best and what advantages and disadvantages are faced.

    I think I am going to add this blog to my list of things I follow.

  13. si February 18, 2008 7:04 pm 

    I agree with others, at least in my part of the world Java and C# are fairly equal in IT jobs advertised (seek.com.au) with VB.NET and just .NET in general. Personally I’m glad to be in the .NET ecosystem because Microsoft have the resources to develop/clone/copy current trends – see ASP.NET MVC, IronRuby/DLR, F#, Spec#, pex.

    I also agree with your closing remark – specialisation is for insects ;-)

  14. Russell Ball February 19, 2008 9:23 am 

    @Rodger – I agree about life being more interesting with more languages floating around. Glad to hear you like the blog enough to want to follow it.

  15. Russell Ball February 19, 2008 9:27 am 

    @Si – Another Ayende fan I see…:-)

    Everything you mention is of particular interest to me these days. Yes, having deep pockets sure does have its benefits. At least Microsoft has people who are smart enough to know where to copy from…:-). That trumps many giant software conglomerates.

  16. Miguel de Icaza March 10, 2008 9:41 am 

    A problem with this index is that books that cover C# or VB tend to be books about .NET, not really about a particular language. While books about Java APIs and Java technologies have the name Java on their title.

    If you repeat the same queries that they do for evaluating the popularity of a language and replace VB or C# with .NET the results surpass Java.

    Miguel

  17. Russell Ball March 12, 2008 7:41 pm 

    @Miguel de Icaza – Interesting. I hadn’t thought of that.

    As a side note, I really enjoyed listening to the interviews that you did on the DNR podcasts. I am in awe of how fast you’ve been able to implement stuff in Mono and am excited to start experimenting with using it to build apps in .NET for the Mac.

    Thanks for the comment and keep up the good work.

  18. Ken March 18, 2008 9:22 am 

    Thanks Russell for the blog and good discussion! One thing I keep wondering about is whether or not the higher level languages (Java, C#, Perl) and the libraries/objects upon which they depend can be maintained and enhanced to meet changing demands. Is further development using lower level languages such as C/C required in order to extend the capabilities? I’m not talking about maintenance coding.

  19. Ken March 18, 2008 9:27 am 

    Clarifiying my post: “Further development” means significant enough to create a shortage of C developers. Do I work on that next degree or dust off my K&R book?

Leave a Reply