Skip navigation.
Home

The future of programming languages (as at Jan 2008!)

Major sections

The Buzz levels of existing languages

A good proxy measurement for the existing popularity of languages is the number of Google searches made for a particular language. Click on the graphs to be taken to the current Google trends graph for the search terms (worthwhile clicking on them as lines can move significantly -- perhaps due to algorithm changes or reindexing).

Warning:
Perhaps the overall downwards trending in many graphs is due to the relative volume of non-language searches increasing (I don't know enough about Google trends to say).
Be aware that the relative results between lines are only indicative: the relative trend directions between lines are interesting though.
For ambiguous words (especially ruby, lisp, C, flash, and flex) you need to ignore the relative differences between lines completely, because the relative search volumes are completely inaccurate. For very ambiguous words I have chosen a qualified phrase so that the language trend shows e.g. C uses a qualified search of C language (to remove the noise from other irrelevant searches containing "C").
Google trends has a normalisation process on the trends to remove some artifacts - see the Google trends FAQ.

Old skool

visual basic | vb    c++    sql   
c language    lisp    cobol    fortran   

The old school languages have mostly reached middle age but are not yet senile: each has a particular niche or environment where it is used, for which choosing any other language would make no sense, however those niches are shrinking as computing power increases. In general there are better languages to use for common programming tasks.

Web server and business

java    perl    c#    php    ruby   

I would hazard a guess that the search volumes for the above mostly relate to usage for web servers and web applications, even though Java and C# are also significantly used for general business apps.

Java, Perl, PHP and Ruby (shown on next graph) are trending downwards and C# is fairly static (this seems odd to me - maybe it is an artifact of the trand corrections eg. perhaps the the total number of searches has increased faster than an increase in searches on those languages?). None of them are gaining popularity so unless there is some major unexpected change for these languages, none are going to the percantage of users for them is not going to not going to be taking over the world.

Python should be graphed, but I could find no suitable proxy for graphing the language popularity. The search term Python language shows approximately constant popularity.

ruby language    ruby rails   

Ruby as a single word search (in previous graph) is swamped by the noise of other searches unrelated to the Ruby language or Ruby on Rails. Above I have split out search terms that only relate to Ruby and they show that it isn't taking over the world.

A few lesser known languages

erlang    ocaml    smalltalk   

OCaml and Smalltalk are slowly but surely dying. OCaml's successors will never be more than niche languages -- perhaps due to a funky syntax but also due to the lack of cool applications or commercial success.

Erlang has been getting a resurgence of interest due to its focus on solving real-world commercial tasks, while providing ultra-reliable systems and the ability to easily program for hyper-threaded processors. However it is sure to remain a niche language. I think it is likely to have a great success story in the future with a particular application (such as a web framework, web server, or business backend) but it won't become more widely popular. It is good to see that there are Google adwords/sponsered-links for Erlang: that indicates Erlang is alive and kicking commercially.

I would have liked to graphed F#, oz, scala, and haskell - but the signal to noise ratio was too low (too many other meanings or not enough results e.g. F# finds a lot of F#%ked up results!).

I think you can tell if a language has significant commercial use by looking for a clear dip in searches over Christmas (e.g. Cobol); however lack of a dip may just indicate that the search term is not specific enough (e.g. Ruby).

All of the languages that have their roots in the academic world (Haskell, Oz etc) are never going to be popular regardless of how nice they are to use, for the same reasons that hundreds of other languages backed by academia have never made it in the past:

  • Splintering, infighting and incompatibility between vendors or implementations.
  • Lack of commercial focus, dogs-bollocks coolness focus, or it-just-fucking-works focus.
  • Lack of marketability and lack of ability to generate buzz and momentum. Poor branding names.
  • Lack of mass appeal. Languages with syntaxes that are disliked by the masses won't be popular.
  • Unsuitable community (or ecology) for the average developer? Also functional programming doesn't seem to fit into the common programmers mind.

Predictions about mainstream or GP languages.

Same same.

The language mix we see now is about the same as it will be in 10 years time. Some great new entrants in niche areas, but no new popular general purpose languages, only new versions of the existing languages. Scripting languages will continue to become more popular. Imperative languages will be the major languages, with some non-imperative features that are not used as much as they should be. The majority of new code will be written for the majority users of applications (consumer and small business applications) for back and front ends to cellphones and the browser.

The factors that are important for a language to succeed are a vibrant ecosystem without a vendor, and it must be sufficiently similar to existing languages that it doesn't spook the majority of developers.

Evolution - not revolution

Existing language ecosystems are becoming ossified and new general purpose languages will not take over the entrenched incumbants within the next 10 years.

  • The mainstream languages become more similar with remaining differences being meaningless vestigial differences, and not deep structural differences.
  • Existing languages will continue to come out with new versions which extend the language with new features while remaining 99.9% backwards compatible.
  • There are very large and stable ecosystems around each of the current popular languages. A language ecosystem has tools, bindings, solution repositories, experienced programmers, communities, virtual machines, training, low entry costs etc. Also existing languages now evolve fast enough to keep ahead of potential competition.
  • The benefits of being part of a large constantly improving ecosystem usually outweigh any short-term gains of changing to a more productive language.

Languages and platforms for specialist niches are invented, splinter and branch - the long tail of languages gets longer.

  • Business systems, consumer devices, and internet properties are stellating and fragmenting into increasingly specialist products and services, and successful language ecosystems move away from the mono-culture of a single vendor.
  • Within specialised niches wonderful new languages will continually be invented, but they will not make the jump to become mainstream languages.
  • A revolutionary language or environment can quickly gain in a particular niche, but cannot become a new popular general purpose language due to the complex multiple barriers to entry within an ecosystem, especially against conservative forces.

Long shots

Although I am skeptical that any language will take the crown from the existing languages over the next 10 years there are few ways I can imagine it happening if the stars align correctly.

A script language targetting the java runtime? Java just doesn't attract the common script programmer. But the runtime is everywhere. A good scripting language has the potential to be a major player for web back-ends (taking over from both Java and PHP). The question is which scripting language might have the technical prowess and brand momentum to capture the minds of developers? C#/Mono will not take over Java as the most popular runtime becuase they have no compelling advantage over Java.

A web server language integrated with a database could be very popular. Could be very efficient, have data access features difficult to provide with SQL, and remove the disconnect between the database and the web server. Would most likely be based upon an existing database so that external apps can still access DB via SQL. Unlikely to be used for major websites since difficult to make so can split app and DB servers.

A new platform for cellphones/browsers could emerge that had it's own language - but it is much more likely a successful platform would be based upon Java and/or HTML/Javascript.

A scripting language for consumers. A real long shot - but a language friendly enough to be used by consumers for their own mashups/macros/pages could grow to such a large customer base that it would be the most popular language! It would also be interesting because it would require features quite distinct from current languages.

Buzzwords on the browser

Warning:
Perhaps the overall downwards trending in many graphs is due to the relative volume of non-language searches increasing (I don't know enough about Google trends to say).
Be aware that the relative results between lines are only indicative: the relative trend directions between lines are interesting though.
For ambiguous words (especially ruby, lisp, C, flash, and flex) you need to ignore the relative differences between lines completely, because the relative search volumes are completely inaccurate. For very ambiguous words I have chosen a qualified phrase so that the language trend shows e.g. C uses a qualified search of C language (to remove the noise from other irrelevant searches containing "C").
Google trends has a normalisation process on the trends to remove some artifacts - see the Google trends FAQ.

Browser standard languages

html    xml    css    (adobe | macromedia) flash    javascript   

Browser ubiquity, lack of 100% vendor lockin, hard-wired knowledge in brains, and tool lockin conspire to keep these all alive. Successful new backend frameworks and browser plugins will be syntax compatible, or use extended syntaxes (closely based upon X/HTML, CSS and Javascript) to acheive new functionality.

Browser killers?

svg    silverlight    xaml    adobe flex    xul   

Predictions for the browser

For the consumer

The Ajax shitheap is just screaming to be replaced. Google Gears has a real potential to provide a common Ajax platform, but it is just another Google idea without enough concentrated focus. However Ajax (HTML/Javascript) is going to rule the roost - primarily because of its vendor neutrality and existing ecosystem.

I expect Adobe AIR to do reasonably well (but not spectacularly well) over the next 5 years. Market-wise they have the penetration, the knowledge, a cross-platform solution, and they understand how not to be overly greedy and how to generate a community of commercial developers. Technically they have a plugin with installed base that provides a common platform which most importantly allows developers to be much more productive, but also which provides display and audio features that are hard to provide, poor or missing on web browsers.

Microsoft will screw silverlight up for the consumer - Microsoft's incentives are just not aligned with the commercial needs for a cross-browser solution so they will screw something up. Lots of Buzz, but nothing to see.

Other potential players are too late to the party. Say MySpace or Apple could get massive install-base for a plugin -- but they wouldn't attract a sizable enough community of commercial developers because of lack of neutrality, or by making their sandpit too restrictive. Google have the potential, but seem too unfocused to come up with the killer solution.

Why not a browser winner?

The days of a browser mono-culture are gone and none of the browsers will take over.

Firefox, Opera, Safari and KHTML have the potential to become cross-browser plugins (to other browsers) which would provide a common platform. However they are very unlikely to ever get enough install base to become the standard.

Consumer cellphones

Cellphones should be the source of a major platform to complete with browsers: if anyone can become a standard platform for application delivery on cellphones, then they should also be able to capture the browser market. However the vendors appear to be too fragmented for a common standard to emerge.

A popular phone or platform with an open ability to provide apps could quickly capture massive market share if major web-property players used it. A phone with the open ability to deliver apps for popular web properties could kickstart a true platform ecosystem and quickly get the positive feedback loops to become the de-facto standard. I would hazard a guess that a plugin platform would be more likely to succeed than a particular phone OS. I think a phone OS would hit non-technical penetration limits, whereas a plugin could be developed for all the different major phone OSs, and be a feature demanded by consumers. Google are trying to do this, but perhaps Nokia or another company will succeed.