# Monday, January 14, 2008

Bruce Eckel says "Java: Evolutionary Dead End"

I was reading a great post on Coding Horror, programming and human factors by Jeff Atwood, a great blog if you're looking for one, and came across some great think about the software development process. I'm being a bit coy because I am intending to make that post the subject of my next post, but I then happened over to Bruce Eckel's blog and read his post entitled Java: Evolutionary Dead End.

I got to reading and felt he makes some really great points about the thoughtfulness that goes into putting a feature into a language. I'm loathe to quote the whole thing here, but I'll give you a little sampling.

Since the beginning I've complained that, at the same time that it claims to be simple, Java is too noisy as a language. Code is read much more than it is written, and this noise directly translates to real costs in software development. Brain cycles are a very scarce resource, and anything that uses them up without benefit -- even something as seemingly innocuous as the extra verbiage in System.out.println() -- takes those cycles away from somewhere they could be useful, and reduces the programming efficiency of the language ( Steve Yegge recently wrote about this problem ).

In his presentation, Josh said that the last-minute addition of wildcards to Java generics may have pushed the complexity of the language too far. Neal Gafter has suggested that we reify generics. Both were originally unequivocal fans of Java generics, based on their responses to the criticisms I wrote about the topic. Now there seems to be a shift, and I've also seen other people begin to say "generics are still great but ..." (Although Tim Bray recently called them a disaster ).


People lived tolerably for many years, then suddenly it became essential that generics be shoehorned into the language. This was remarkably coincidental with the appearance of generics in C#, which also appeared to produce several other features in Java 5. It seems that the urgency of these features came not from solving true problems in the Java language, but in Sun trying to maintain the perception of competitiveness against Microsoft's C#. This is probably not so far off the mark, because the reason that Java had to be rushed out in rough form in the first place was the belief that there was a market window that must be captured. A programming language designed by following marketing impulses is eventually going to end up chasing its tail.

I don't pretend to be an expert on anything JAVA. Being generous, I'm a neophyte when it comes to JAVA. Being honest, I was going to pick it up this year, but never got around to it. I'm a C# guy who moved over from VB.NET who moved over after about 3 months from VB6 who had just realized that I had outgrown VBA. Quite a pedigree, I'm sure. And yes, I do give the JAVA developers at work a hard time at every opportunity, but one thing that I am sensitive to is the evolution of languages and what features make it in and what don't. I've recently started to work on .NET 3.5 after just getting used to .NET 2.0. And the way it looks from all the hoopla .NET has picked up a whole bunch of stuff that is "going to make my life easier" - and I'm sure some of it will. However I'm sure the list of things that I think are just stupid bolt-ons is going to get longer.

So as JAVA marches on and it's proponents start to proclaim to have heard it's death knell - it appears that Mr. Eckel is pushing Scala. I wonder how long it will be before I'm feeling the same way about C#. Now I know as a "Microsoft Guy" I'm supposed to drink the cool-aid and hook my WPF app up to my WCF endpoint to execute some work using WF and serializing the whole mess using LINQ, but my relationship with Microsoft is a bit more complicated than that. Sure I make my living by spinning their threads in to yarn and weaving a beautiful tapestry to fill my application space (that's for you Noam), but it's really more like:

I see Microsoft much like I do an ex-girlfriend - sure we've been really close in the past, but I've been burned and now I'm a little hesitant to take her calls - I don't want to be hurt again.

Truly I don't get the MS zealots.

Actually, Noam had shared another post from Coding Horror entitled The Magpie Developer, also a good read, talking about the technology crush* and going on to rightfully making fun of the ramblings of some technology company blog I refuse to ink to here because of how closely their ideas correspond to Junior High social dynamics. This unnamed "thinker" (if you really want to know give codinghorror.com some traffic and the proceed at your own risk) spouts some inane drivel about the perceived ecosystem of "elite developers" fleeing to new technology as the "riff-raff" show up.

So I guess in that estimation I'm the riff-raff, wondering if my language is still what the cool kids are using. The amalgam of these two posts has inspired a technological malaise that will take several ticks to snap out of. Do I bother learning a doomed flawed language, JAVA? Is my current language of choice no longer cool? But seriously, JAVA dead or alive can pay my bills. If C# isn't being used by the cool kids anymore, what will us former drama dorks do?

Oh yeah, now I remember, if I smell something in the office, it must be the rotting corpse of Java...

*Technology Crush: if you write software you know the one - the feeling like we're close to every possible acro-nymonic combination of letters to indicate a functionally infinite number of technologies it's my business to keep abreast of, else I fall behind and have to support my family by shining shoes or apples (I'd shoot for the midtown location - shorter commute).

Monday, January 14, 2008 1:45:04 AM (Eastern Standard Time, UTC-05:00)
#    Comments [0] |
Comments are closed.