Via slashdot, I learn of the passing of John Backus (NYT obituary) co-creator of the Backus-Naur Form, and the guy who led the team that developed the Fortran programming language. Predictably, practically the first comment on the slashdot thread is knocking Fortran.
Back when I was studying engineering at University in the early nineties, I had to learn Fortran - my final year project involved writing a moderately substantial program using it. Well, the biggest program I'd ever written at the time. I learned a lot about the day-to-day stuff of programming from that project; it was probably the formative experience that convinced me that I'd quite like to do such things for a living. As a result, at times like this, I feel a need to leap to the defence of the language.
FORTRAN (from "FORmula TRANslation") may have flaws, but comparing it to C is like comparing the Wright Flyer to a Sopwith Camel. Yes, the Camel is the better plane, but I don't hear many people complaining about the Wright Flyer's poor rate of climb - as the name implies, it was pretty radical that it flew. Fortran, developed in the mid-to-late 1950s, was the first high-level programming language to see widespread use. Before it came along, programming was done in assembly language, if you were lucky.
In this context, "high-level" means two main things: "approximately readable by normal people" and "you don't have to worry about the precise design of the CPU you're running on". Assembler language is neither - it's pretty much a one-to-one mapping of the raw machine code into easier-to-remember mnemnoics like "LDA", "JSR" or "BNE" (I said easier, not easy), you need to keep tabs on exactly what data is currently in which bit of the CPU and tell the cpu when to ship stuff out into the main memory.
High-level languages like Fortran separate the programmer from most of that stuff by providing a more human-friendly language (usually built around a combination of real words and algebraic-style expressions) for the programmers to work with, and a "compiler" that translates the human-code into the machine-code. The designers of Fortran made a few mistakes, which have been fixed in many newer languages, but they didn't exactly have the opportunity to learn from the mistakes of others, because no one else had done it before. Criticising Fortran for its lack of (for example) Polymorphism is like complaining that the Wright Flyer didn't have seat-back DVD players (the early models didn't even have SEATS).
For all its faults, Fortran (albeit in an evolved form) is still in widespread use today. As its expanded name implies, Fortran is not a general-purpose language - it was invented specifically for the purpose of mathematical computation. They added native support for Complex Numbers well before support for characters (i.e. text) and there are some extremely high-powered mathematics code libraries available. If you want to do some seriously heavy-duty computational fluid dynamics, Fortran's still a contender. Which is why they taught it to me, 'cause that's the sort of thing aero engineers do.
Not bad for a programming language that's over half a century old (a milestone that the grand old man of programming languages, C, won't reach for another 15 years or so).
So, RIP John Backus. Thanks for inventing the most important tool of my profession.