Wandering Thoughts archives

2023-06-07

A retrospective on my thesis about language niches, fifteen years later

Back in 2007, I wrote A thesis about language niches, in which I thought there were three such niches and they were probably all occupied, with low odds of any of the current occupants being displaced. The three niches I saw then were 'low level' (C and C++), 'loose control' (Java and C#), and 'loose control with dynamic typing' (Python, Ruby, etc). I was recently thinking about how my thesis has played out. Looking back, I was unduly pessimistic about the status of the existing languages in at least two of those niches, and I missed a niche entirely.

The obvious niche that I missed was 'languages that run in web browsers', which started out being JavaScript and has spiralled outward from there (first with other languages that transpile to JavaScript and more recently with WebAssembly (WASM)). This niche became a massive thing over the past fifteen or so years and even spilled out from web browsers proper, with applications being written in 'web shells' such as Electron (which I consider basically browsers because, as I understand it, the API is primarily the browser's DOM API).

In the existing niches, Rust has made major inroads in the 'low level with strong control' niche. Rust is inevitable in open source software and has already made visible inroads in closed source commercial software. People will be maintaining C and C++ codebases for decades to come, but Rust is now a clear third option in this niche. In the 'loose control but statically typed' niche, the obvious new arrival is Go, which has probably had as much success as Rust in practice. Major, widely used open source systems are now routinely written in Go.

In the 'dynamically typed loose control' niche, you can argue that non-browser JavaScript usage has become a serious third option. It's not necessarily popular as a language for command line programs (although there's some of that), but I think it sees significant use for web server and web server adjacent roles (for example), and my impression is that its sheer pervasiveness has driven use elsewhere. Some of this is because there's a high quality, widely available and reasonably secure JavaScript runtime in the form of v8.

(Lua deserves some sort of honorable mention here, since it keeps showing up as an extension language.)

All of these developments were emerging within five years of when I wrote my entry (although Rust would take longer to reach 1.0 than Go did). JavaScript was possibly even something that I could have predicted at the time, although in 2007 I wasn't very enthused about JavaScript in the browser.

PS: 'used to develop apps for mobile devices' is a large area of language use in practice, but I don't think of it as a language niche, partly because the two dominant mobile OSes have such different choices as their 'native' language.

programming/LanguageNichesII written at 22:33:24; Add Comment


Page tools: See As Normal.
Search:
Login: Password:
Atom Syndication: Recent Pages, Recent Comments.

This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.