It is probably no surprise that Paul Jansen and Robert Dewar feel very differently about not only Java, but about programming languages in general.
Paul Jansen, managing director of TIOBE software, maintains the TIOBE index of popular programming languages, which – here’s the key point – ranks Java as the top programming language.
Robert Dewar, professor emeritus of computer science at New York University and CEO of software firm AdaCore, deplores Java’s dominant role in today’s college programs. While not against Java itself, he feels that its many pre-written libraries allow students to develop software without truly understanding deep programming.
As noted in this interview – The ‘Anti-Java’ Professor and the Jobless Programmers – he claims that Java’s classroom prevalence is churning out CS grads who are marginally competent. At worse, they’re easily replaced by offshore programmers.
Moreover, Dewar refers to the TIOBE index as “meaningless,” opining that the index’s emphasis on a language’s Web presence limits its value. “Many serious application developers are not even present on the Web, which tends to overemphasize academic and hobbyist views,” he says. “As the list itself says, this has nothing to do with quality of languages or level of usage.”
So, given that I had asked professor Dewar his view of TIOBE, I felt inclined to check with Paul Jansen to get his response. Is the TIOBE index meaningless? Does it perhaps rank Java too highly?
Jansen’s response: “Robert Dewar is ignoring an important change in the software engineering community.”
First, Jansen compares the evolution of programming to the development of the automobile in the early 1900s.
“ In the previous century the motto was ‘If you don’t understand the machine (such as its memory model) you can’t program.’ Compare this with the early days of the car: If you didn’t know how engines worked, you couldn’t drive; the machines broke more often than now and there were less skilled engineers to fix them.”
“Do you need to know something about engines to be a professional driver nowadays? I don’t think so. Taxi drivers don’t know that much about their engines. There is, of course, an exception. If we look at the high tech side of the car industry – in car racing – then you need to know something about the car engine in order to get the most out of it.”
“If we translate this to the story of Robert Dewar then he is either still in the old days of computing, or he is only surrounded by very high tech and demanding companies. I suspect that he is a little of both.”
In the interview with Dewar, I paraphrased his attitude about Java in the classroom by writing, “Consequently, CS majors sail through a curriculum of Math Lite, earning a smiley-face on their papers for ‘developing’ projects using pre-built libraries.”
Jansen disagrees with this attitude. “It shows that he doesn’t understand that nowadays it’s important to select the right components and assemble them into a working application. It’s a skill to do this right – it is far from easy, given the vast amount of libraries. You don’t need to know about pointers or learn to program Ada to become excellent in this skill.”
Jansen refers back to his analogy of cars and programming, in which today’s drivers don’t need to fully understand what’s under the hood:
Paul Jansen
“We are now in an age of reusing components. Only very complex software projects with lots of real-time and reliability requirements can afford to stay close to the metal. So should we educate people to be able to develop software for those few complex systems? Or should we teach them how to make the right choices of what languages and libraries to use for the job?”
In short, software development is a dynamic business, and those entering the field need to focus on the current realities.
“I agree that the list is indeed meaningless in the context of the anti-Java professor. He wants to educate people in the good old way of engineering. Nothing wrong with that. We only monitor new trends. Such as the need for dynamic typing, the introduction of generics, and the integration of functional programming elements in object-oriented languages. We try to understand why the programming language market is moving in such directions. That is something completely different.”
Oh, and About Outsourcing
There is at least one area in which Dewar and Jansen agree – and it has huge implications for today’s young programmers.
Noted Dewar: “If all we do is train students to be able to do simple Web programming in Java, they won’t get jobs, since those are the jobs that can be easily outsourced.”
Jansen sees this similarly. “He is right in this. But outsourced to whom? India? China? The scope of the TIOBE index is the entire world, not only the U.S. software market. So this doesn’t count as an argument against the TIOBE index.”
A major question is posed by the fact that both Dewar and Jansen agree that Java skills alone won’t enable a programmer to survive outsourcing. If this is true, should Java play such a dominant role in the classrooms of U.S. universities?