It might have worked for Clojure and Scala, but didn't get tons of other JVM targeting languages very far.
And inversely, C, C++, Java, Python, Perl, Go, Rust etc succeeded by themselves.
It might have worked for Clojure and Scala, but didn't get tons of other JVM targeting languages very far.
And inversely, C, C++, Java, Python, Perl, Go, Rust etc succeeded by themselves.
It’s extremely popular and I could foresee it eclipsing new Java projects going forward.
Java and Go didn't take that route, because they had corporations behind them that could put a lot of people on writing a solid, broad library fairly quickly. When C came out, the standards were a lot lower - a few people wrote the library that they wanted. Same with Perl. (CPAN is an amazing organic achievement, but it took time to develop.) When C++ started, it just used C's library. I don't know about Python.
Rust is the exception to my reading of this, but even Rust had a large organization, even if it wasn't a corporation. So I think the rules are be early, so standards are lower; have a big organization write a big library at the beginning; or use an existing library to get off the ground.
Doesn't that always lead to compromises in the language design (to easily link to the old language) and sub-par non-idiomatic libraries?
But there are different degrees. C++ had "extern C", which is not much. Java, get the same ability, had JNI, which is gouge-your-eyeballs-out ugly.
A language can probably survive having something like "extern C" to be able to get to the libraries. But if JNI were the way to get to the standard library, it probably would have killed Java.