Ask HN: Language inversion-- why do you think it exists?

6 points by michaelochurch ↗ HN
The more I think about language inversion (the fact that the best languages, like Scala and Haskell, remain obscure; while C++ and Java remain mainstream) the more it puzzles me. Often the justification given for using Java is, "it has the best tooling". Well, that's completely reasonable. But how'd it get to that point? How did Java, despite the obvious deficiencies of the language, get the largest community in the first place?

It wasn't always this way, nor does it need to be so. In 1987, Lisp was the #3 language on the TIOBE index. Something happened that caused the state of language inversion we see now. I have a guess, but I'm kind of curious if there's someone out there who actually knows how we ended up in 15+ years of language inversion.

4 comments

[ 4.9 ms ] story [ 22.9 ms ] thread
I think that saying that Java has "obvious deficiencies" is rather missing the point. It is not so simple that Java is a bad language and Scala is a good language- they have different features and different design goals.

Java was intended to be a small language, (in comparison with languages that came earlier, like C++) with unsurprising semantics and syntax. Java does not have operator overloading, unsigned types or multiple inheritance (in the C++ sense), and these omissions were intentional- to make code easier to understand in isolation and easier to reason about. If you want a language which can express as much as possible in a line of code, Java fails miserably. On the other hand, programmers around the world have built and maintained enormous codebases in Java, suggesting that the "maintenance-oriented" features of the language may have been successful.

edit: Paraphrasing, James Gosling has said that the success of Java was to drag a large number of C++ programmers "halfway to Lisp" by cleaning up undefined behavior and introducing them to garbage collection.

The reason is more economical than technological. The most popular languages became popular by holding the strongest appeal for the lowest common denominator (LCD) of coders. For example, Java bests Haskell in this regard because LCD coders have a greater appreciation for loops than recursion. The LCD coders become a source of advertising by word-of-mouth and also become a potential market for other developers to tap into. Then project managers see the software being released by the better developers and keep hearing the word-of-mouth in favor of the language and decide to have their software teams use that language. Basically, it's the "snowball rolling down a hill" effect where the LCD coders make up the initial snowball.
everyone has different requirements... clearly those of the world don't match yours.
A mix of luck and people having access to incomplete information.

Seibel says this:

'Though not about computers per se, The Wisdom of Crowds: Why the Many Are Smarter Than the Few and How Collective Wisdom Shapes Business, Economies, Societies, and Nations by James Surowiecki (Doubleday, 2004) contains an excellent answer to the question, "If Lisp's so great how come everybody isn't using it?" See the section on "Plank-Road Fever" starting on page 53.' http://www.gigamonkeys.com/book/conclusion-whats-next.html

A Google Books search for Surowiecki's book yields a preview with those few pages uncensored (just search for "plank-road fever") and a detailed discussion about "information cascade."