Sep 20 2007

And now, from the pot calling the kettle black category…

Published by Brian at 6:50 pm under Uncategorized

I don’t really have a horse in this race, but seeing this post on 10 reasons why Java sucks, I felt compelled to respond. Several of the points I agree with (IDEs cause brain rot- I have experimental evidence)- but two in particular I have to mention as being egregiously wrong, and wrong in a way that makes me think the author knows diddly about software development. And a couple of the others really deserve honorable mention.

The two that really cause me to question this guy’s knowledge are these:

1) Java has a compiler

Ruby does not. That’s great! Fuck compilers and their false sense of security. Too often is bad code checked in or even deployed to production, simply because it compiled. No such luxury in the Ruby world.

and:

8) Java has good debugging support

Java has great and powerful debugging (which is very necessary since most Java code sucks so much ass). Ruby has ridiculously pitiful debugging support, which means our code actually needs to be well-tested and readable.

Both of these “improvements” are better termed “better programming via abject terror”. The idea is that you’re working without a net- so of course the programmer is going to be more careful. Right?

You know, if this approach worked, I have a wonderfull way to improve code quality- just wire a shotgun to the back of every programmer’s chair, and if they code a bug, trigger the shotgun. After all, the only thing stopping programmers from writing perfect code is that the consequences of writing less than perfect code aren’t severe enough, right?

This is, of course, silly. Even the best programmers don’t write perfect code- and not because they’re lazy or don’t care, but because they’re human. We all get stressed, get under time pressure, get distracted, have our Homer moments (duh!).

Wait. I’ve already blogged on this topic before. So enough of that rant.

Now, on to some honorable mentions in the stupidity department:

5) Java is Too Slow

Ha. This is one of my favorite reasons, for the bloody irony of it. You see, Java isn’t actually slow. Everyone reading this knows that it got plenty fast over the last five years or so. Nevertheless, 90% of the world that knows of Java thinks that it is slow, because of its association with crappy slow Java applets and crappy slow Java loading screens on mobile devices.

Ruby *is* slow, compared to Java, and yet it is fast enough. Amazing, isn’t it.

“Hah! You thought Java was slow! Ruby is ten times slower! Pwn!”

Um, yeah. Sure. What this means is, without direct intervention from God, you don’t dare use Ruby for anything where speed actually matters- because Ruby makes PHP and TCL look fast. Too be honest, a lot of things don’t depend upon the performance of the programming language- most web apps (especially simple web apps) are much more likely to be network or database bandwidth limited than CPU speed limited. But there are still a lot of places where speed matters- and here, even Java still has problems (witness Open Office 1.x’s long start times).

3) Most Java Programmers are Morons

This has to do with the number of people in the world that describe themselves as Java programmers and work at day jobs doing Java programming. What are there, like 2 million of them? More? So it’s just a numbers thing, really. There just aren’t that many good programmers overall in the world — and most them wouldn’t be caught dead doing Java.

And now that Ruby is becoming hip and accepted, the morons are marching again- right at Ruby. This is part of the penalty of success- the masses come, and you know how dumb the average programmer is- well, half of them are dumber than that (maybe more- are we talking mean, median, or mode here?). This goes with my point above- stupidity is going to happen, how well is your language going to handle it? How well can the efforts of a small number of smart programmers be leveraged by a large number of dumb programmers?

And one last rant:

6) Java doesn’t have blocks and closures

Do I really need to rehash this reason? No. I don’t think so.

Now, if only Ruby were to gain anonymous functions (aka lambda expressions) and partial function evaluation…

Popularity: 5% [?]

6 Responses to “And now, from the pot calling the kettle black category…”

  1. Obieon 21 Sep 2007 at 9:25 am

    This might clarify things: http://www.jroller.com/obie/entry/what_subtelty_and_suck_ass

  2. Joeon 21 Sep 2007 at 9:50 am

    What’s with the IDE hate? Do you feel the same about emacs? Personally, I find it very helpful to have type information displayed in my editor, tool-tips showing me what args a function takes as I am typing it out, quick jump to the ocaml manual, and integration with the toplevel. It kinda sucks that you have to hack all this stuff together in emacs or vim, or else suffer with eclipse though.

  3. Robert Fischeron 21 Sep 2007 at 10:39 am

    Let me officially state that Brian’s on his own with the IDE hate. I’m a big fan, and it’s one of the things that must annoyed me about Ruby/Rails…although I know it’s got some new IDEs that are supposed to pretty slick.

  4. Roland Kaufmannon 21 Sep 2007 at 3:17 pm

    Actually, you do have lambda expressions and partially evaluated functions in Ruby, although somewhat second-class syntactic citizens:

    two = 2
    add = lambda { |x,y| x+y }
    add_two = lambda { |x| add.call(two,x) }
    puts(add_two.call(two))

    (Let me add for the record that I, too, am firmly in the “I need my Hindley-Milner”, strongly-typed camp :-))

  5. Brianon 21 Sep 2007 at 7:13 pm

    There are two things I hate about IDEs (and no, Emacs is not an IDE- it’s a nice little operating system, but Unix is a better text editor).

    The first is that they actively discourage you from learning about the tools, especially the build tools, that you’re using. I mentioned I have experimental evidence that IDEs cause Brain Rot. I used to work at a company called Bit 3 computers (now part of SBS). We made a special adapter card (don’t ask, it’s complicated). We shipped our adapter card, with drivers and documentation, for pretty much every Unix system under the sun (including Sun), VMS, DOS, several embedded OS, and Windows. Now, to use our device driver, you needed to do three things (this is in C): 1) defined a preprocessor macro, 2) include a given header file, and 3) link in a specific shared library. At which point the full features of our board where available to you.

    Now, in every manual except the Windows manual, the above instructions took about one sentence to describe, and we never had a lick of problem. No support calls, no questions, no problems. Then we released the Windows driver. In the first version of the Windows manual we had the same sentence. Then the calls started comming in. And the manual started getting rewritten and expanded. And then rewritten and expanded some more. And yet more. By the time I had left, the one sentence in every other manual had ballooned into it’s own chapter in the Windows manual- a chapter with four sections- one each for Visual Studio 4, 5, and 6 (because they moved things around between the different versions), and an extra special section on figuring out which version you were running. Complete with pictures, as if you told these morons to “pull down the file menu” they had no idea what or where that was.

    This wasn’t a Microsoft problem- the DOS programmers had no problems with this stuff. No, this was a case where they (the developers) bought into the lie that they didn’t need to know this stuff, stuff like how your program actually gets compiled.

    The second thing I don’t like about IDEs is that the vast majority of them seem to be single-languages beasts. Yeah, yeah, I know that Visual Studio lets you program in any of the three Microsoft-approved languages. And Ecplise has (kinda, sorta) grown beyond it’s Java-only beginings.

    But IDE support for a language is slow in comming. Even if I’m using one of the “multilanguage” IDEs like Eclipse, this severely limits what languages I can use. Until recently, there wasn’t an Eclipse plug-in for Ocaml- is there one for Haskell and Erlang yet? How about Assembler, or plain vanilla C (not C++)? Perl? C#? SQL? Latex? Bash? HTML? I do all of those in vi.

    The problem here is that and IDE makes for a a greater barrier to entry to the new. “Gee, I’d love to learn that language, but my IDE doesn’t support it”. Actually, I have a whole lot of sympathy for this view point- if I have to learn your editor to learn your language, I’m strongly disinclined to learn either one. But as my editor is a general purpose text editor, and very powerfull across a wide range of different languages and environments, this generally isn’t that much of an impediment. Basically, you have to work at it to keep me out. This isn’t the case with even a multi-language IDE.

  6. Joeon 24 Sep 2007 at 11:06 am

    I think you are confusing commonality with causation. The masses use (insert PHB approved IDE and language here), and the masses are stupid. That doesn’t mean using the PHB approved tool made them stupid, or that stupid people have to use that tool. Visual Studio doesn’t discourage you from learning, its just that a large majority of programmers don’t want to learn, and those are the ones who are told “here is what you use” and never question it. Their stupidity and their using a particular IDE are both the result of their desire to learn as little as possible.

    I’m a big vi fan myself, like the kind that bitches about how vim does stuff wrong and has to remap keys in vim to make it behave like vi. But its simply painful to code in a language like ocaml without alot more than what vi offers. All that stuff I mentioned makes a huge difference to productivity. Just because I hack together an IDE out of vim or emacs, doesn’t mean its not an IDE. Its just not a PHB approved IDE.

Trackback URI | Comments RSS

Leave a Reply

Green Web Hosting! This site hosted by DreamHost.