Flying at Mach 1

I got dragged into a little flame-fest on a mailing list and got a little out of hand... Here's a email from me:

What a troll-ish set of remarks based on zero knowledge and spreading massive falsehoods. Normally I don't respond to such drivel, but this time, if feels like I have to:

From: XXX Subject: Re: YYY

No, as I understand it he is a C developer.

It is true, I have been a C developer, and I still do occasionally. But I have also developed code in C++, Fortran, Algol, SNOBOL, Mesa, Smalltalk, Pascal, Modula, Simula, Cobol, Basic, Focal, BLISS, PL/1, Pearl, several versions of Lisp, and assembler code for x86, Sparc, PowerPC, IBM 360/370, CDC 7000(CPU and PPU), PDP {8,10,11,VAX} and a bunch of stuff too obscure for me to remember at all. Of that lot I've probably written the most in C - at least 500K lines of C written by me, personally, over a couple of decades. For the last decade I've written almost zero C code and write almost exclusively in Java.
Apart from throwing T-shirts, he hasn't done any work with Java lately.

One could start a Clintonian debate on the use of the word "with". Almost everything I write is in Java these days. I mostly work on things other than the compiler or the JDK release.

This is the piece that makes my blood boil:

He designed Java so marginally capable developers could have a job. Hence all the annoying little limitations that slow down development but prevent errors (and features). He finds it too limiting to use himself. I can't really blame him.

This is so damned false I don't know where to begin. I designed Java so I could write more code in less time and have it be way more reliable. In the past I've wasted huge numbers of hours chasing down memory smashes and all the other time wasters that are so typical of what happens when writing C code. I wanted to spend time writing code, not debugging. Life is too short for debugging. All of those little "limitations" turn out to be things that make coding faster and debugging vanish.

For example, lots of newbie's coming in from the C world complain about exceptions and the fact that they have to put exception handling all over the place - they want to just write their code. But that's stupid: most C code never checks return codes and so it tends to be very fragile. If you want to build something really robust, you need to pay attention to things that can go wrong and most folks don't in the C world because it's just to damn hard.

One of the design principles behind Java is that I don't care much about how long it takes to slap together something that kinda works. The real measure is how long it takes to write something solid. Lots have studies have been done on developer productivity, and Java beats C and C++ by a factor of 2.

It's kinda like the evolution of the airplane. Once upon a time when folks scooted around in open cockpit biplanes they navigated by sticking their heads out over the side of the plane and looking down. When covered cockpits with windows were first introduced pilots didn't like them because there was no way to stick their head out. But if they had won the argument, they'd never have been able to fly at Mach 1 or at 30,000 feet. Stick your head into a Mach 1 airflow and see what the bloody stump looks like. I want to fly at Mach 1. I'll take the windows.

On Sunday, July 27, 2003, at 02:55 PM, ZZZ wrote:

I've forgotten, is Gosling a Java developer? If he is, why does he use a Mac? Masochism? "A state of denial"?

I use the MAC because it's a great platform. One of the nice things about developing in Java on the Mac is that you get to develop on a lovely machine, but you don't cut yourself off from deploying on other platforms. It's a fast and easy platform to develop on. Rock solid. I never reboot my machine... Really! Opening and closing the lid on a Powerbook actually works. The machine is up and running instantly when you open it up. No viruses. Great UI. All the Java tools work here: NetBeans and JEdit are the ones I use most. I tend to think of OSX and Linux with QA and Taste.

July 30, 2003