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.
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.
(Lua deserves some sort of honorable mention here, since it keeps showing up as an extension language.)
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.