Friday, October 06, 2006

Programming Language Rankings

A friend sends this page showing "general use" rankings for various programming langauges. The ratings are calculated based on the total percentage each language occupies for searches (on various search enginges, though Google seems to be the main one) for " programming." The method employed is explained here.

So pretty dismal results from the devoted Schemer's perspective. The evil language somehow made pole position, which surprises me because I have long thought that honor went to C++. In fact, C++ comes in 3rd on this (after C and ... well, you know). But this might be an artefact of method. I understand that C++ gets top billing on surveys that use "number of commercial applications written in" as the main variable.

But no matter! Scheme is in lowly 14th place, just behind Ruby. *sniff* And worse still - the "B" status indicates that it has been down here for some time (to get an A you have to be above 0.7% for some months). Just ahead of COBOL!!! How embarrassing is that?

Functional languages in general did poorly. It's the lowest-ranked paradigm (behind even logical languages!!!) - and I notice that Ocaml is in 40th place, Haskell in 48th and ML in 49th. Pretty pitiful. Not surprisingly, the Object Oriented paradigm comes in first by far. I guess C is what's keeping the gap between Object Oriented and Procedural as narrow as it is, in fact.

Some observations:

  • Perl is sinking like stone - I have been expecting this, and I think it will only get worse. It's down two places from 4th in the last month. What's going on here is that web applications are moving away from it - and it sees most of its use generating webpages and managing databases. I'll admit that I'm not a Perl fan, but I'm even less of a fan of some of the languages that are replacing it (specifically Javascript and PHP).

  • Visual Basic is trendy? - I can't say I expected this, but it's horrible news. 4th place? PT Barnum underestimated... VB is like Java - it's not really a programming language so much as a trap, making programming deceptively easy for unsupecting victims (in industry, mostly) who then become dependent on all the addons. Meanwhile their ability to do things for themselves atrophies and the cycle spins faster. But not to worry. I honestly don't see much of a future in Java and VB. Granted, Java has been popular for a long time now, but I think things will start to give way as I have said before. Specifically - I think the cycle works like this. For now it saves money to dumb down your staff and let Java do the work, granted. But I think there is an even better way to cut costs waiting to be discovered: functional programming. With this paradigm you have to spend more on the more intelligent and better trained individual programmer, but you need much fewer of them than your current staff of Java-crunchers, and the quality of the work is better besides. Not to mention, your programming language doesn't belong to Microsoft or Sun... So I don't see VB lasting. But I do see things getting worse before they get better, so for the short term we'll have to keep hearing about this crap I guess.

  • Python and Ruby are both up - which I expected and am glad to see. I have mixed feelings about Ruby, I admit, but it's nicer than Perl and does provide support for functional programming. Of the languages not currently in the top 5 that I would very much like to see go there - Python and Ruby are the two most likely to make it, so more power to them. In fact, if you could buy stock in individual programming languages the way you can in corporations, I would put a lot of money in Ruby right about now.

  • .NET is down - C# fell - which may be the beginning of the VB/Java bubble bursting too. C# would have been Microsoft's replacement for C++, the "Visual Studio/.NET" version of C++. Nice to see that it's starting to slip. Because why use the knockoff when the original is free? We'll see a slow chipping away at Java and VB soon too. This is only the first sign. I think "bytecode" languages in general are not going to last much longer. Efficiency will make a comeback - just wait. J# and F# don't even rate (unless they're included in the C# rating?).

In any case, the future looks pretty bleak for Scheme. I guess I should be happy it's even as high as 14th. It's just that ... well, I really do think it could be doing better with a little more effort on the part of those of us who love it.

General predictions:

  1. Java's decline will pick up - I think Java is on its way out. It will take some time for this process to get rolling, but we're in the early stages. Within two years I think it will be well underway. You'll see it drop to below 5th by then for sure, and after that steadily downward. In another 10 years, I it will be something of an Ada or a Fortran - still around but only in certain circles.

  2. VB will enjoy some brief gains as Java starts to slide - VB seems the most likely replacement for the "cute 'n' quick web app" niche that Java currently has cornered. So in the short term, VB gains are good as they indicate that the steam is going out of Java. VB represents a nice separation of Java into its component parts. The software development side of it can be done just as well by C++ (and was done by C++ before Java got so big), and the cute side of it can go to VB. The worry here, of course, is that VB is even worse than Java, so we only think VB's gains are good news if it crashes and burns soon after it's done it's part in splitting the Java crowd. I'm an optimist: I think this will, in fact, happen.

  3. Perl will continue to fall - it's over, face it. The web isn't just for geeks anymore, and most normal people get impatient with Perl's dense, unreadable syntax. Its cultish programmer culture doesn't help.

  4. Ruby is on the make - I think we've got about two good years of Ruby and Python continuing to grow - Ruby probably a lot faster than Python. They both have ceilings, though. Ruby has a chance to break through - provided someone can design a good enough compiler for it before the libraries grow and dependencies make this impossible (which has happened for Python already). But I don't think it's too terribly likely. Another potential problem with Ruby: it remains to be seen how readable the language really is. For now, it's still a minority language, so generally programmed by experts who know what they're doing. As it gains in popularity the syntax may prove difficult for the Java junkies - we'll have to see. To avoid being accused of contradicting myself: the Java junkies aren't the wave of the future, so it's technically irrelevant what they think or are capable of learning. But there's a confounding variable here - and that's how orthogonal the semantics of Ruby actually turn out to be. If they're actually solid, then Ruby can shake off the fact that it will be hard to learn for some Java addicts. But I sort of suspect that it won't turn out to be as well-designed as some think. We'll see. I've said before that Ruby has the potential to be the Next Big Thing, but I doubt in practice that it will come through in the end.

  5. If functional programming has a future, we've still got a ways to go before we see it - I wonder where Haskell's ceiling is. I somehow don't expect it to grow much. But Scheme and ML (including OCaml, I grudgingly admit) have potential. It depends on which way the wind in industry blows. I don't think the current trend of dumbing down and farming out work will continue forever. But it will if no one proposes an alternative. This is where Scheme and ML come in. These languages can offer all the advantages in terms of code maintainability and modularization that Java gives us now. But they need to grow libraries and easy-to-use web, thread, and string manipulation abilities first. And then there's the hurdle of the learning curve. Using functional languages well requires training that a lot of entry-level people don't have. The gains are there to be had - more readable/maintainable code, efficiency, stability, more intelligent design, etc. But it's not clear when or if industry will ever smell the coffee. There's a certain amount of momentum in industry. Someone would have to take a risk... So we'll see. It's possible, but not, I think, until Object Oriented Programming has died down a bit more, and I think there's a good 3-5 years left in this trend.

So not so much of a future in Scheme, probably. Maybe breifly in Python or Ruby. C/C++ is a workhorse - it will always be around. I'm not as worried about its future as many. But most likely is that whatever the Next Big Thing is (and I do believe it's coming), it's currently either off the radar or not yet invented. It would be nice to see a Scheme future, but I'm not necessarily holding my breath.


Post a Comment

<< Home