In recent talks, I’ve been using a graphic from State of the Computer Book Market, written for O’Reilly Radar by Mike Hendrickson, and it’s been preying on my mind. The more I think about it, and about the programming-languages landscape, the more I think that this picture isn’t changing much any time soon. The landscape is stable.
Here’s the graphic, and if you like it, you really ought to go read the whole article, which has lots of meat and other graphics too. Also, I think the IT industry owes O’Reilly a major vote of thanks for buying the data and investing in the analysis.
I think Ruby has some more upside; as the wave of Rails adoption gets it in front of more programmers, a certain proportion will be seduced. It seems that Java programmers are particularly vulnerable to Ruby’s charms.
So yes, some of the bars will inch up; but then they’ll be fighting the Law of Big Numbers. It’s plausible to get from nowhere to half as big as C++ and do it quickly; but then you’re into the territory of sunk investments and big-community dynamics and so on. Rapid qualitative growth, beyond a certain point, is just hard to believe in.
What’s Doomed? · Are there any here that might go away? The only one that feels threatened at all is VB, wounded perhaps fatally in the ungraceful transition to .NET. I suppose it’s unlikely that many people would pick VB for significant new applications. Perhaps it’s the closest to being this millennium’s COBOL; still being used a whole lot, but not creatively.
Some might glance in the direction of C and C++, but they’re totally with us for the long haul, C at least. C, among languages of its kind (vehicles for clean infrastructure code that’s right up against the metal) is a good one. C++, among its peers (object-oriented languages for writing applications), is very far from the best.
Having said that, C and C++ were the default choices, for enough years, for writing important pieces of the platform, that their future is secure.
I suspect that PHP’s market share gets chewed away at by Rails as people notice the sharp contrast in maintainability, but there are a lot of good PHP-based applications, which should keep it on the main stage for a while.
What’s Missing? · Are there any other languages that we can reasonably expect to emerge from the background and be on this graph a couple of years from now? I notice a distinct lack of functional languages (Erlang, Haskell, Scala), and what with “scaling out” and many-core and so on, I’d be unsurprised to see a break-through from that direction. But Functional Programming is a challenge, and I’d also be unsurprised to see enough FP bolted onto the side of the conventional O-O wisdom to get us through, in combination with throwing enough memory on servers to keep those cores busy running processes not threads.
I also notice that Ruby’s the only really sophisticated dynamically-typed language on the list, and there are a lot of really smart programmers who’ve been doing wonderful work in Python for years and see no reason to stop. Among other things, Python (for the moment at least) runs a whole lot faster than Ruby, plenty fast enough to be used for compute-intensive work; and at some point that has to matter. So, maybe Python.
Client Apps, Web Apps, RIAs? · This past year, there’ve been waves of enthusiasm over “Rich Internet Application” frameworks: the DLR, Apollo, JavaFX and so on. Among those, I have a soft spot for JavaFX not only because we cooked it up but because it’s unambiguously open-source and doesn’t constitute a bet on a vendor.
Still, I think the jury’s way, way, out on the RIA notion. Does the expanding scope of Ajax leave a big enough gap to grow a new ecosystem in? And, at the end of the day, will there be enough richness to seduce enough people away from the considerable charms of the browser and its reassuring “Back” button? We’ll see.
Mobile · People—really smart people—keep pointing out that there are ever so many more phones than PCs, and they’re biting into the digital divide, and that when you’re writing an app, you shouldn’t expect it to run just on something so old-fashioned as a “computer”.
People keep saying this and it keeps not happening, for me at least. I’m starting to think that when the time comes that the mobile phone has become a mainstream application platform, it’ll have evolved to the point that you use about the same range of programming techniques and tools and languages. So I’m not sure it’ll be a major disruptor of the O’Reilly graph.
In fact, my bet right now is that nothing will.