>>8
Might want to skip the Go. It's ad-hoc and generally braindamaged. They did a great job at building a modern concurrent language; it's memory safe, type safe, concurrency-unsafe.
I can't say much about D, except it might have lost its shot. There's not enough pressure to move toward it even if it's better. Good enough is, even when it isn't, and nobody is teaching it in schools.
>>9
Go has made a little bit of displacement in that already. If Rust's thesis bears fruit Mozilla will at least dogfood it meaningfully. Servo is under development, but you don't see Go in Android or Chrome. Even so, that doesn't guarantee anything.
Most of the resistance is alleviated for Rust to replace a lot of C or C++: great FFI, ABI compatibility, plans to remove the dependency on the runtime system (by far the most unique feature here), GC-optional (and not via tuning, but via the natural abstinence of use of GC'd pointers.)
But where's the push? The push for most languages with successful adoption is necessity or opportunity. An incomplete list:
- The tail of the dotocom era was fertile grounds for as it happens Java (C is hard to teach to masses) with the greater need for more programmers.
- JS had a nice place in the browser.
- C was created to accelerate and support the development of Unix, by its authors (dogfood) and also became the natural choice to use for developing for Unix (possibly the source of confusion regarding the exact meaning of systems' language in modern times.)
- C++ was a C preprocessor for classes. OO was all the rage and C++ smelled like OO.
- Ada was by mandate. Yes it's still used. (Machine-written by tools written in *ML. T!)
- *ML is often used where correctness is important, like writing programs that write Ada programs. And bootstrapping Rust. And running trading firms. (Remember that buzz about HFT firms often employing poor practices and running untested code? Jane Street's story is the opposite of that horror story.)
- Python was designed for education.
- PHP was a convenient specialization of Perl.
- Perl was dogfood, and meant to be a synergy of existing tools.
- Lua was a fast embeddable language, more readable to most people than a Lisp and less insane than Tcl.
- Tcl was embeddable and had a strength in scripting UIs.
These all fill a niche with some need or with an obvious potential to grow given the right catalyst.
Another push lately seems to be the cool-factor of easy to learn languages with cute syntax and nifty semantics—they are trendy. I won't categorize any languages here because it could be taken as unfair criticism. I don't really know how these languages factor in. They're in fairly common use but they don't seem very important. The do have an important resource which is the community resource (support, libraries etc.) Not all gain critical mass, but those that do invariably have a strong community resource, often greater than that of some languages that appear on (or would appear on a complete version of) the above list. So it's not a misstep to use them like it would be to use a language with virtually no community resources.