Tuesday, December 27, 2005

Why don't I care?

I've written code in Java, C++, C, PL/1, Pascal, Wang VS Assembler (clone of IBM 360/370 assembler), Fortran, and Basic. And I'm sure I'll learn new languages soon, because, like many others, I'm sensing that Java's reign is waning.

I'm obviously not a compiler engineer, because when I look back at the code I've written, I don't really focus on what language it was written in, but what the program did, and how it made people's lives better in some small way. I can't really say I prefer any of the above languages, except maybe they're all faster than Assembler, as that could get tedious (though the tedium was sometimes rewarded by being able to do something with particular Yankee efficiency).

I get frustrated when reviewing resumes with people who say that the candidate "must have" Java. I'd far prefer a C programmer who writes clear and beautiful code than someone who knows Java maybe a bit too well and is focused on playing silly language tricks that obfuscate the code. Just as in human languages, it doesn't matter what language is being used to express the thought, it's the thought that matters. And in engineering, clear and simple thought yields (in my opinion) the best code.

I didn't always feel this way. Is it cynicism? I don't think so, but maybe. I used to worry that I'd be out of date, unmarketable if I didn't make the jump from PL/1 to C, and the other language transitions after that.

Or maybe it's just evidence of the subspecialties in software engineering. Some English majors specialize in linguistics; others in literature. I'm glad the linguists are out there, because someone needs to make sure these languages parse and make sense. If I have to learn a new language soon, ok, bring it on. But until then, I prefer the literature :-)


Bob said...

When I wrote C++ server code we spent inordinate amounts of our time dealing with memory allocation issues, array boundaries issies, stack overwrites, unhandled exceptions, etc. In Java, the magnitude of these issues was reduced. But Java is not the only language with this attribute. And Java is not the only language that developers can make obscure.

A programming language can change the way you think about solving problems but a good engineer should be able to solve problems in multiple languages. I worry about someone who only knows Java or C++ or whatever. Diversity is good. Btw, read Joel's post on the "Perils of Java Schools".

NotesSensei said...

It looks like it is fashionable to call for epitaph of Java. It seems to me rather a sign of maturity of the language. We had Cobol ist dead, Pascal is dead, C is dead. Still you can make a decent living off that dead languages (would that make one a vulture :-)?)
And I agree: the important thing is how your code makes a difference for the user. So lets learn a new language. While Ruby seems hot, my bets are on Fabric (see http://damienkatz.net/2005/12/a_brief_introdu.html )
:-) stw

Bob said...

Why some people may be trying to write Java epitaph, I don't think that Joel was trying to do that (see my post on that.

The press loves to write about the "new thing". Currently it's Ruby (because of Rails) but there's a backlash from over-hype happening there as well.

In the end, commercial programmers write code in whatever they're employer or customers dictate. There are still developers out there making a living from dead languages. Given the gazillion lines of Java written over the last ten years, there would still be Java jobs for a long time to come even if usage of the language were on the decline.

Bob said...

D'oh! Typo. First line should read "While some people..."