1. Mar 24th, 2006

    At the risk of flaming …

    5060569_f01a017abd[1].jpg

    James Gosling responds to all those who took him to task on his previous comments. And in response he makes some strong, compelling arguments. I just don’t understand what he’s arguing for.

    That PostScript is not a good language for writing interactive shoot’em’up games? I think we sensed that. That by inference Perl and Ruby and Python are not good languages for writing Doom VI? I think we came to terms with that. That Java is a great multi-purpose programming language? No doubt.

    Java is great, don’t let anyone tell you otherwise. But what makes it so great, and Gosling is great at capturing that, is also it’s Achilles heel.

    If I’m building a help-desk service, a yet-another photo sharing site, or a financial application, I only need to worry about one thing. The application I’m developing. It doesn’t help me that the language can do games and interplanetary navigation. In fact, I’d rather it didn’t.

    A language that does interactive games needs a lot of optimizations. In most applications those optimizations are irrelevant, but you pay for them: the language is verbose, strict and hard to work with. All those premature optimizations you want to avoid in your design, are built into the language itself!

    A language that can run on anything from cell phones to spaceships needs a lot of abstractions. But when I’m building my help-desk app, I don’t want to work extra hard just to make a simple SQL query. I’ll never port it to a cell phone, and I’ll never send it flying into space. Do I need all that complexity?

    One could argue that if you only learn one language … well, if I only learn one language than I’m not doing my job. Being a productive software developer is not about learning one language and using it to hammer every nail. Being a productive software developer is about learning the best language to solve the problem in front of you.

    All I can say, given the new reality of software development, Java is a hard language to defend. I’m glad that’s not my job.

    Sci-fi photo by Simon Zirkunow.

    1. Mar 25th, 2006

      Isaac Gouy

      1) “all those who took him to task on his previous comments”
      Maybe that should read ‘all those who took him to task on sys-con’s tabloid headline re-writing of his previous comments’ ;-)

      His previous comments can be seen and heard at 33:25 on the Flash video http://sys-con.tv/read/196169.htm

      Bill Venners made a good enough transcription for Artima.

      2) “That Java is a great multi-purpose programming language? No doubt.”
      When you “took him to task on his previous comments” part of your objection was that “PHP and Ruby /are/ generic purpose languages” - now you seem to be suggesting that being general purpose is the problem with Java.

      By your previous argument, if being general purpose is a problem with Java, then it would also be a problem with PHP and Ruby.

      3) “I just don’t understand what he’s arguing for”
      I suppose we could suggest he’s arguing that Java covers the long tail of software projects.

      4) “Being a productive software developer is about…”
      There are many different ways to be a productive software developer.

    2. Mar 25th, 2006

      Assaf

      Read further down that thread and you’ll learn it was the wrongly linked video that caused people to think “did he really say that?” They posted an updated link.

      “I suppose we could suggest he’s arguing that Java covers the long tail of software projects.”

      So why not say just that? IMO there’s a lot of benefits in a language that covers the long tail of software projects. You only need to learn one language. And there’s an economy of size going for that one language.

      I just don’t find it relevant. I’m in the camp of people who think multi-lingual programming has more yield.

      In my experience Java is not a bad language, it’s just an overkill. I’ll keep developing for Java when it makes sense, and I can come up with a laundry list of use cases. But I’ll pick up other languages when I get more mileage out them, when the benefits outweight the learning cost.

      Like I said before, I don’t believe in one language to rule them all.

    3. Mar 25th, 2006

      Isaac Gouy

      >> “I suppose we could suggest he’s arguing that Java covers
      >> the long tail of software projects.”
      > So why not say just that?

      He did, but not in a way that you understood.
      I just expressed what Mr Gosling said using a cliche I guessed you would be familiar with.

      > I don’t believe in one language to rule them all.

      Here’s a funny thing - if you read what Mr Gosling actually said you’ll notice he talks about using PHP with Java.

    4. Mar 25th, 2006

      Assaf

      I’m a strong believer in using the best tool for the job, I will keep using PHP and I will keep using Java, because neither one of these languages is the be all.

      But PHP _and_ Java? That strikes me as “any color as long as it’s black”.

      The Ford model worked great because it was better than anything that came before it. Until someone realized you can do assembly line, and you can do diverse products, and stole their market share.

      In case of Java, merging on a single language (platform independence, bigger libraries) was better than anything that came before, and it fixed everything that was hard with C/C++.

      But open-source languages managed to catch up. Now platform neutrality and expansive libraries are the norm, and it’s time to gain from diversity.

      It’s time to think beyond “any color as long as it’s black”.

    Your comment, here ⇓

    Or using OpenID