Looking at current trends, though:
- Python is nailing machine learning but losing momentum on servers.
- Julia could come up from behind and displace Python in ML.
- Java is pretty well embedded in the enterprise space, but there are cracks around the edge of its dominance. I’m working on Node.js in an enterprise contract right now, in fact.
- Kotlin could displace Java. Scala has had its chance, but it appears to have failed in garnering market share. I frankly don’t see that changing any time soon.
- On the high-performance end, it’s a hard call. C++ has ruled this roost for two decades and has received some recent updates that look great. But Rust seems to have a strictly better type system, which provides better compile-time code verification with equivalent or better performance.
- Edit to add: People keep talking about C. C is the low-level language of the past. Like COBOL, there’s a crap ton of code written for it, so it won’t just vanish. But except in narrow cases, I don’t see C as being a good language for new development. Rust is strictly better for anything that you might want to start in C today. I think this will be increasingly true. So in that respect, Rust may be more likely to be a major language in the future.
- Edit to add: C# is probably going to persist in some enterprise companies and as the language of Unity3d and Xamarin.
- Edit to add: Go might survive due to strong Google backing, though I have a hard time recommending it.
- Edit to add: Swift is likely to stick around as the Apple platform language for the foreseeable future. But it doesn’t seem likely to make the jump anywhere else.
The first language will be the hardest because you’re learning how to program at all. After that, the second language will be easier, and so forth.
Example: Twice now I’ve hired developers to work on a TypeScript project who had never previously used TypeScript. They were productive after only a half-day of learning each.