

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

The more I think about <i>language inversion</i> (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?<p>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 <i>knows</i> how we ended up in 15+ years of language inversion.
======
Jesse_Ray
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.

------
RodgerTheGreat
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.

------
dsrguru
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."

------
blibble
everyone has different requirements... clearly those of the world don't match
yours.

