let me point to a comment made by PG yesterday when asked by thaumaturgy what it's like to have your every written (or spoken!) word analyzed by a bunch of people?
It's pretty grim. I think that's one of the reasons I write fewer essays now. After I wrote this one, I had to go back and armor it by pre-empting anything I could imagine anyone willfully misunderstanding to use as a weapon in comment threads. The whole of footnote 1 is such armor for example. I essentially anticipated all the "No, what I said was" type comments I'd have had to make on HN and just included them in the essay.
It's a uniquely bad combination to both write essays and run a forum. It's like having comments enabled on your blog whether you want them or not.
Maybe we should be discussing the future of finance, crowdsourced funding, new programming paradigms or some other interesting forward looking stuff instead of spending our time looking backwards trying to poke holes in an essay written more than ten years ago.
While I usually agree, in this case I found it a very interesting. pg is a very influential figure in many business circles, but for a lot of people on HN, pg is a very influential hacker, who has thought a lot about hacking and the software creation business, and has very graciously let us look into those thoughts. From that lens, this is a very interesting article.
I personally think this article makes great predictions. Obviously, Java has since become an incredibly popular language. But I still think there are many people (including me!) who have the same beliefs about Java as are shown in the article. Many people consider it a much more "business-y" or "bureacratic" language than, say, Python/Ruby or many others.
pg never said Java would be unpopular. He dismissed it much as he dismissed Cobol and Visual Basic. In 1990 Cobol was the most popular programming language in the world [1]. And in 2000 Visual Basic was the most popular programming language in the world [2].
The essay is about hacker's radar, not Java, anyway. Personally I loved his list of other technologies he has ignored.
From the article: "So far, Java seems like a stinker to me. I've never written a Java program, never more than glanced over reference books about it, but I have a hunch that it won't be a very successful language."
I think that pretty clearly says that (at that time) he didn't think it'd be very popular.
So, you think popularity is success? I think that when Paul says "success", he means "winning" in an old sense that "those who adopt X have a better chance at winning" whatever it is. Just because the language is widely used doesn't mean it's contributing to the success of the adopters.
So how would you propose measuring "contributing to the success of the adopters" ? It seems that there is no way to either prove or disprove the statement hence any statement about the "success" of a language could be claimed as valid/true.
>So far, Java seems like a stinker to me. I've never written a Java program, never more than glanced over reference books about it, but I have a hunch that it won't be a very successful language.
I could go through and dispute his points one by one in traditional internet style but to do so would be to miss the fundamental difference in viewpoint. A piece of art can be considered aesthetically unsuccessful while still being a massive commercial hit.
The liberal hacker will generally consider Java (if not the JVM) a failure.
The conservative software developer will generally consider Java (and the JVM) massively successful.
So if PG was considering the market success of this "stinker" then no, his prediction was clearly a failure. But if you consider the aesthetic success? Well, Java certainly isn't cool in certain circles.
Personally I like Java and consider it successful - but I don't think PG's article is prima facie a prophetic failure.
Java was an incredibly popular language in 2001. I had been using it in commercial apps for four years. It was around 2001 that I was managing a development team and was introduced to Python. About that time, I also began to realize how expensive Java development was and how many more interesting ideas were happening in other languages.
While it was clear Java was popular, it was also clear it was stagnating under the beurocracy and the weight of its corporate champions (small changes and backwards compatible at all costs). It also became clear that there weren't going to be many repeats of Java's initial ideas.
On the insights, I probably give Java more credit for than pg would because they pretty much all exist in lisp, but Joy packaged them for "easy" consumption. Arguably, the most important was the JVM and the notion that bits didn't need to run on the metal directly. This was well known to the lisp and smalltalk communities but shunned more generally, but Java made it acceptable across the computing ecosystem to run in a VM. This really opened doors for languages like Python and Ruby. It would be interesting to know if they would have been as popular without Java and it's corporate marketing machine telling developers VM are good.
I am not disputing the fact that the idea of virtual machines was popularized for a new generation of developers by Java. However it goes back commercially a lot farther than I think you, or most software developers, realize.
IBM started shipping mainframes where everything ran inside of a virtual machine 40 years ago this year with VM/370. Its purpose was to emulate previous IBM hardware running a previous IBM operating system. People today are able to run applications written in the 60s mainframes without change in part because the radical changes in underlying hardware have been hidden from them by layers of virtual machines.
Of course there are many predecessors. After all Lisp has been running in a virtual machine ever since the first one, in 1957. But IBM is the first instance that I know about where a company shipped machines to paying commercial customers that wanted to run software inside of a virtual machine.
1. "Haha, what an idiot. He said Java will die and now it is still there, hahahaha." (obviously, an contrived example). This would be an useless "discussion". We wouldn't learn anything from it.
2. "Well, as he writes in the essay: predictions are hard. Let us check which predictions did hold and which didn't." - This discussion could provide useful lessons for the future.
I hope for the second, but fear the first. In a few hours we will know the answer.
As I mentioned elsewhere, most of pg's observations still hold in 2012. But, he clearly missed the implication, as you mentioned in point 1. I believe Java is still going strong precisely because of the attributes he regards as weaknesses (that it appeals to suits and programmers in suits; that large businesses like to use it; that its syntax doesn't try to be revolutionary)
Based on this, I will boldly make the following prediction: in 10 years' time, the most popular languages will still be some variant of Java and C#.
> Based on this, I will boldly make the following prediction: in 10 years' time, the most popular languages will still be some variant of Java and C#.
Your conclusion may very well come to pass. This reminds me of another article, Beating the Averages, in which pg writes: "And so the median language, meaning whatever language the median programmer uses, moves as slow as an iceberg."
1980 "You use C? You suck. Real programmers use Assembler."
1990 "You use C++? You suck. Real programmers use C."
2000 "You use Java? You suck. Real programmers use C++."
20xx "You use ...? You suck. Real programmers use ..."
Same story, different times.
At least try to provide an argument for your position, instead of "(...) will be still be dumb". Thanks.
Intelligence (at least IQ-measured intelligence) is normally distributed with 100 at the median. Some people equate "dumb" with "dumber than them". If such a person is 1 or 2 standard deviations above the median (as I'd assume the population of HN is), then most people could be considered "dumb".
Before the assembly line, workers had to be skilled, had to really understand what they were building and how and why all its pieces fit together. With the advent of the assembly line, workers were only required to learn one specific, usually very simple, skill. That made them cheaper to train and cheaper to replace and made the outcome of their work less important to the end product. That also made them easier to manage by people who were not skilled artisans, giving rise to the "generic" manager, who only needs to know how to manage. Java is a very good "assembly line language" and it's no coincidence it's popular with businesses that don't value elegant code as much as code that gets the job done cheaply.
I'm not saying it's impossible to write elegant Java code. I'm only saying it's cheap to write business-y Java code and that accounts for a substantial part of its popularity.
At the other end of spectrum, you have projects like GNU/Hurd, which are extremely idealistic and hence barely ever ship. The accounts department is not going to like it very much when you tell them your new Lisp DSL variant with metaprogramming is delayed for half a year due to technical difficulties in getting it right. The VP/Director/Team Lead(and whoever else okayed Lisp) will get a pink slip and the replacement(s) will build the application in Java.
Even if it works, good luck finding any Lisp hackers to hire in your local area. Who is 'dumb' and 'smart' in this scenario? Is it just IQ levels that matter? What about getting the job done quickly and cheaply which is very important to the business? Do you get a big competitive advantage over your rivals by having your accounting system run on elegant Lisp vs. Java or PHP?
We techies, especially academics tend to carried away easily and want functional or otherwise idealistic languages replace other 'dumb' languages, but the corporate world works in a very different way. Throwing around phrases like dumb, and IQ levels actually degrades the argument to 'we are superior than them' and nothing else. Characterizing people trying to be practical and put food on the table and take care of their families as 'dumb' is just douchebaggery.
> With the advent of the assembly line, workers were only required to learn one specific, usually very simple, skill.
I think a lot of the benefits came from automation. An artisan working alone cannot afford the machine tools and jigs to accelerate his work. The assembly line is actually about the centralization of capital and economies of scale, not the deskilling of the workers. In fact, modern First World manufacturing suceeds by firing as many unskilled workers as possible and replacing them with engineers and skilled technicians.
I would say that Java shops value elegant code very highly—in the tools and frameworks and OSes. The front line Java coders are business software's version of sheet metal and rivets.
Paul Graham's meaning of "is dead" is "has stopped producing exciting ideas". He declared Microsoft dead in the mid-2000s. He wasn't saying "no one uses Microsoft products" or "Microsoft is out of business" (both demonstrably false) but that it was an evolutionary dead end. So far, he's been proven right. If Microsoft ever becomes a company worth caring about, it will be a different Microsoft from what it is now (cf. the parable about never stepping in the same river twice).
He was wrong if his prediction were taken to apply to the JVM ecosystem, because Groovy and Scala and Clojure happened, but he was right about Java-the-language (it has limited uses, but you should be using at least Groovy if not Scala or Clojure for modern JVM development) and undeniably dead-on about Java-the-culture (which is the only thing he claimed the ability to evaluate, having admitted not using the language ever).
Have you used any of these languages? The Wikipedia list is overly simple at best.
The common thing that these all share is easy access to the world of Java code, much of which is very well written. The Java standard libraries are well-written and well-documented. There are plenty of high quality open source projects covering almost anything you need.
I am most familiar with Groovy and it is much more than a simple scripting language. It spans the continuum from scripting to full-on enterprise-level stuff. It adds all of the functional features we love to Java, language support for maps, makes it easy to create DSLs for specific purposes, etc.
I do not know nearly as much about the other languages, but almost all of these are in production use. I would recommend many of them.
Scala and Clojure seem to have gotten a definite traction. Just from reputation alone, I'd choose Clojure for a JVM greenfield project if I was asked to do such a project.
>Paul Graham's meaning of "is dead" is "has stopped producing exciting ideas"
Not really, he came up with his prediction:
"I have a hunch that it won't be a very successful language"
Java not just took off like a rocket, but .NET/C# (which built on top of Java) has encountered even more success, so much that companies collectively pay billions a year for Windows Server 2003/IIS/SQL Server while Apache/Tomcat/Php/MySql/PostGres/Ruby are free. You can say Microsoft takes most of the profit in the web server and server OS market (like how people say Apple takes 80% of the profit in the phone market).
How do you consider .NET and C# built on top of Java? They're certainly designed a direct competitor, with C# + .NET built to check every box that Java + JVM does, but most of the things in common between the two weren't new in Java.
In the years since, new C# features have diverged sharply from Java's.
There's nothing bad about being wrong sometimes. On the contrary, it's a good thing, it shows that it is very difficult to have a very accurate view of the future, no matter how much of an expert you think you are or other people think you are. That's the same kind of thing as the time capsule of the sci-fi writers that was unveiled recently: most of them had a very false vision of the future, because there are simply too many variables that make it impossible to compute.
I don't think what mixmax (or pg) was saying really had much to do with "being wrong" but more "being analyzed by people who already have a bone to pick". The result is that you find yourself not wanting to say anything at all. Alternatively, when you do, trying to be very very very clear about exactly what you are saying as it will give someone else "a weapon in comment threads" that won't just be used against you once, but might come up again eleven years later: the same statements, which causes a kind of ludicrous level of hedging and difficulty (as people might have understood it in context at the time without problem, but will anyone appreciate it eleven years later? in this "discussion", for example, pg has already had to remind some people that Java was already a quite popular language in 2001, and thereby that it still being popular now does not contradict much of what he was saying).
It's pretty grim. I think that's one of the reasons I write fewer essays now. After I wrote this one, I had to go back and armor it by pre-empting anything I could imagine anyone willfully misunderstanding to use as a weapon in comment threads. The whole of footnote 1 is such armor for example. I essentially anticipated all the "No, what I said was" type comments I'd have had to make on HN and just included them in the essay. It's a uniquely bad combination to both write essays and run a forum. It's like having comments enabled on your blog whether you want them or not.
http://news.ycombinator.com/item?id=4497691
Maybe we should be discussing the future of finance, crowdsourced funding, new programming paradigms or some other interesting forward looking stuff instead of spending our time looking backwards trying to poke holes in an essay written more than ten years ago.