I have to admit, at first glance I was pleasantly surprised. Somebody pointed me to a recent article of two professors at the New York university in which they argue that Java is an unsuitable language to learn how to program.
Java and me, we just don’t get along that well. All in all it’s just a nasty, posh little programming language. And far too complex, for that matter, like the evil twin sister of UML 2 (which itself deserves a Nobel prize for deliberately confusing people on a world-wide scale). Syntactically, Java has all it takes to guide a satellite to Mars or to control a nuclear plant. And then it is often being used to create yet another simple accounting application, insurance policy system, client management tool or user interface. It feels like cracking a walnut with a sledge hammer. Like someone in a tasteless, silver-coloured singlet is showing off muscles in the gym. A flashy display of power that almost begs to make errors and be unproductive.
And it has object-orientation built in too, a slightly overrated concept, if you ask me. Well, on the other hand, it is quite an achievement of the IT profession to create a structuring principle that fits so perfectly bad with the relational data model. And people keep on writing books about object-to-relational mappers. We violently force an apple through a sieve and are proud of the resulting pulp; who said IT doesn’t matter?
Ah yes, about that article.
Finally, somebody dared to speak out. I hoped. But I soon found out that the scientists are actually on the other side of the camp. From their perspective, Java is a light-headed, frivol tool which you use to quickly knock together some ad-hoc Internet applications. If programming becomes so easy and fun, then nobody needs to understand formal methods and complex algorithms any longer; this is the essence of their complaint. To put it even stronger: this way programmers become replaceable, because others – outsourcers for example, of all people – can do it too!
As an alternative, they recommend Ada, a nearly incomprehensible language which is rarely used to create programs. In that way, programming can again become the science it is truly supposed to be.
You’ve got to hand it to them: it’s definitely a landmark in staying away from reality.
I only have this from hearsay, but when COBOL68 was launched on the market, many believed that software engineers had no future anymore. COBOL resembled natural language so much that managers from now on could program themselves.
Admitted, it was the time of the hippies and the World looked pink. But if you take a good look at it, amazingly few things have really changed in 40 years. Also in 2008, many are convinced that the glory days of programming are over. The bulk of complex logic is embedded in standard packages and services and for the rest it is a matter of mashing up, gluing together reusable components, configuring business process management tools, extending powerful frameworks and generating code from high-level business models and focussed, domain-specific languages.
Doesn’t take that much coding any longer.
But will managers really be able to program themselves by now? No way.
IT possesses a self-cleaning capability that will always prevent that horror from becoming true. It is the capability that somehow made us to exchange the powerful, elegant 4GL’s of the nineties for the complex, object-oriented 3GL’s of today (just to make sure: C# is in no significant way different from Java). It is the same capability that routinely brings us to mix incompatible concepts as the relational model, OO and XML into one solution. It is the very same capability that even makes some respected people in our profession claim that we should all learn assembler again, because, you know, it’s the basis of everything.
Don’t worry, IT will stay complex for many years. Effortlessly.