Someone on Hacker News asks about the future of programming languages, and I realized that it's a pretty interesting topic. Here's my take on it:
Programming languages are about people, and the compromises they may or may not make in order to communicate their intentions to computers. The technology in question may change, but there will likely always be people involved, and as long as that's true, looking at the problem through the lense of economics provides useful results.
Therefore, looking at programming languages pretty much requires that you look at the economics of them:
- Network effects are important, but obviously don't squeeze out smaller languages entirely. I.e. it's good to be able to get libraries, find people to hire, books to read, friends to chat with about problems, etc… This means that future languages will have to seek out a critical mass of users.
- Since the times of Fortran, languages have been getting more efficient in terms of programmer time, because programmer time stays the same or gets more expensive, while computer time keeps getting cheaper, and language implementors keep getting better at making things fast under the hood. This means that languages of the future are likely to let you do more with less, all else being the same.
- Learning a programming language will continue to be a fairly involved process for most people, meaning that for many, it's more efficient to learn a few languages well and use them for as much as possible, rather than to try and find the 'perfect' language for each problem. This rewards general-purpose languages, compared to niche languages. This also rewards flexible languages that can be used in many different environments.
- Computers are only going to become more and more important, meaning that more people are going to want to develop the skills to work with them. Not all of them will be experts, and many may not know much, but have a vision for how a program could solve a particular problem in a field they are knowledgeable about. This means a low barrier to entry is important, because those novices will pick easier languages, become progressively more competent in them, and thus (network effects) contribute to their diffusion. Case in point: PHP. Future languages should be capable of solving hard problems, but should also make it easy to get started solving simple problems too.
- Working on languages is lots of fun, so even though there aren't necessarily monetary rewards, people will continue to play with and explore new ideas. I don't see there being a limited supply of new languages in the future.
- The costs of switching from established languages will continue to be high, so future languages will still need to interact with "legacy" languages like Cobol, Fortran, C, Java, and so on, that are so widely established in industry that systems written in them will be with us for a long time yet.
I wrote this in a hurry. Have I missed anything? How do these factors apply to languages you see emerging?