I hope so.

If history is anything to go by it seems inevitable. I have been in the computing field since the mid seventies, mostly in an academic/research/advanced developement context. I've have used many programming languages over the years, but some of them have been much more equal than others at various times.

In the seventies, Fortran and Cobol where champions. In the eighties, we had Pascal and C. In the nineties, Basic and C++ and in the noughts Java and C#. Why would the teens be any different?

Well, in the long run only death and taxes are inevitable. There has always been strong, determined and well grounded opposition to new programming languages. I remember long debates (in South African academic circles) about whether to move from Fortan to Pascal as primary teaching language. C++ sort of snuck in on the back enthusiam for Unix and C, but by the time Java came along there was a large and passionate group opposing its adoption. I also well remember hearing Anders Hejlsberg protesting in 1999: "I am not inventing a new programming language. Nobody wants a new programming language. C# is just C with a few corrections to take account of what has been learnt over the years."

Almost ten years later C# may be a "champion" but is still something of an emerging language. It continues to evolve and shows little sign of senility and fading away. Moreover, the former champions still have their loyal followers and show no signs of impending death either. A new champion will have to have quite a lot to offer before seizing the crown. Getting to the point where there is a lot on offer will require a huge investment. Huge investments are not made often or lightly, and take a lot time. It seems hard to imagine any of the current pretenders to the crown attracting this kind of investment, or a new pretender coming along soon enough to really impact the teens.

Looking back at the successions that did occur, what can we learn? For me a few things stand out: When Pascal and C came along, Fortran and Cobol had far too little support for procedural abstraction and data structures. They evolved, but did so at a glacial pace and events just overwhelmed them. Still, the succession might not have occurred had it not been for the advent of the mini computer and the huge expansion of computing beyond the mainframe IT shops dominated by IBM and the BUNCH.

(Visual) Basic offered event based programming and supported GUI programming in a way that Pascal was slow to match and C never managed. C++ rode the wave of object orientation and the general concern with modularity and programming in the large. Still, the succession may not have happened had it not been for the huge expansion of computing brought on by the advent of the micro computer. The old champions where not so much dethroned as surrounded and reduced to vasal status in a much larger empire.

Java and C# offered garbage collection, strong typing and above all, extensive standardized libraries. But it took the world wide web and a further expansion of computing to make the succession happen. And the succession is by no means complete.

If we are to have another succession, we should probably have another expansion. Is there room for one? I think so, but we'll have to see. My guess is that ubiquitous computing and the "cloud" will provide such an expansion.

A new champion will also need to solve problems that matter to this expanded world and that the existing champions will be slow to provide (or find impossible to provide).

I have some ideas on what this might be, which I'll expound on in my next post.