Is Java partly responsible for a neglect of basic skills in computer science education?
Two professors emeritus at New York University, who also happen to be executives at AdaCore, which specializes in the Ada programming language, criticize Java in an article entitled "Computer Science Education: Where Are The Software Engineers of Tomorrow?" in CrossTalk - The Journal of Defense Engineering, this month.
"It is our view that computer science education is neglecting basic skills," particularly in the areas programming and formal methods, according to the article, written by Robert Dewar, AdaCore president, and Edmond Schonberg, AdaCore vice president.
"We consider that the general adoption of Java as a first programming language is in part responsible for this decline," they wrote.
Java, the authors said, has been used in introductory programming courses in a "misguided attempt" to make programming more fun.
"The irresistible beauty of programming consists in the reduction of complex formal processes to a very small set of primitive operations. Java, instead of exposing this beauty, encourages the programmer to approach problem-solving like a plumber in a hardware store: by rummaging through a multitude of drawers (i.e. packages) we will end up finding some gadget (i.e. class) that does roughly what we want," the article stated.
"The result is a student who knows how to put a simple program together, but does not how know how to program," according to the article.
The authors did give Java points for concurrent programming and reflection, which is the understanding that a program can be instrumented to examine its own state to determine its own behavior in a dynamically changing environment.
At Sun Microsystems, which created Java, representatives scoffed at the article, noting that the authors have an interest in Ada.
"If you look at these guys, they specialize in Ada," said Tim Bray, Sun director of Web technologies. Ada, Bray said, was "the most expensive, embarrassing failure in the history of computer languages."
"I felt like I was reading something out of the '80s," given the article's Ada emphasis and its lack of discussion about Ruby, Python and agile methodologies, Bray said.
Java, according to Sun, is being used at more than 869 universities. Additionally, the BlueJ environment has been developed for the purpose of teaching object orientation with Java.
In an emailed response, Schonberg stood up for the authors' involvement with AdaCore.
"Of course, if we are involved in Ada software it is because we are convinced of its technical superiority in many areas, but our opinions do not come from business interests but from decades as academics, teaching across the curriculum, and participating in long-term language design and implementation projects. Our negative views of the impact of Java on early CS education come from experience (ours, and that of colleagues at NYU) teaching more advanced courses," Schonberg said.