3 ms·
I think language adoption follows broader trends in the industry. In the early 90's, people were coding for desktops, so you could use C, C++, Pascal/Delphi, o
by chubot 11y ago
I think language adoption follows broader trends in the industry. In the early 90's, people were coding for desktops, so you could use C, C++, Pascal/Delphi, or Visual Basic. You had a lot of closed source languages.
The web brought us Perl, PHP, Python, Ruby, and JavaScript, which are all pretty darn similar if you squint. Java is sort of an outlier because it was commercial and free and had a lot of marketing.
Mobile phones lead to a resurgence in Objective C, and another big market for Java.
Since we're still making websites, we're still using the same languages for them. Languages naturally have a network effect that is hard to break. If you already have N modules, writing the N+1 module in the same language is the path of least resistance. And then module N+1 also makes the ecosystem more valuable.
C++ has an especially pernicious network effect, because it's so difficult to interface with it (in general). If languages were more interoperable, then this network effect could be broken.
But in practice it seems the main way to break the network effect is for a new generation of technology to come around. ALL languages are really domain-specific. And it is fantastically expensive to build a language ecosystem... so as long as the domain remains the same, the language will likely remain the same.
I think the hardest thing to break is going to be our foundations in C/C++. Mainly because every single other language is also written in C/C++ (Perl/PHP/Python/Ruby/JavaScript/Java).
An earlier special case of this is that it's easier to write an application in the same language that the operating system is written in, or a language written in that language -- which is of course always C or C++. The OS specifies its portable interface in C headers, and in C data types.
Possibly domains that will create new languages: AI, big data, distributed systems (Most things are built on top of existing languages, like Spark on Scala, Flume on Java, TensorFlow on Python, but there might be room for a first class language once we figure out what the heck we're doing!)