2008-01-08

Even grumpier old man comment...

On reading through the actual article on Java Programming, I can see that they are complaining about the dumbing down of CS for todays environment.. however, I have to say it sounds like the inevitable anger about change..

----
Let us propose the following principle: 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. How it does it is not interesting! The result is a student who knows how to put a simple program together, but does not know how to program. A further pitfall of the early use of Java libraries and frameworks is that it is impossible for the student to develop a sense of the run-time cost of what is written because it is extremely hard to know what any method call will eventually execute. A lucid analysis of the problem is presented in [4].
----

Well that is one way to look at it, but really isn't this what computer scientists have been wanting for multiple years? I mean a good portion of the Mythical Man Month was about the fact that there wasn't a plumber's tool-kit but every programmer had to make their own. The issue is what should be seen as a time for radical rethought of what Computer Science/Engineering is and means to be in a day when the pocket watch the average student has on them contains more CPU than the IBM 360 that most older Phd's wrote their thesis on.

What is Computer Science? Is it a math heavy course where a person should be able to write a proof of every 'line of code' that is written? How does one prove a hundred million lines of code without a hundred million different people?

What is Computer Engineering? Is it the design of computer circuits? Or is it the process of using the plumbing developed by others to build larger projects than were possible 10 years ago? Is it knowing how to safely do this with a set of known tools that can be trusted to some extent?

Yes machine programming is important.. but with the trend towards virtual machines inside of real hardware.. what is more important to teach? Yes math is important, but so is pair-programming techniques and being able to interact with human beings.. where is that taught?

In many cases, I think that this is where CS/CE is going to break down into many different sub-fields that people will focus on.. and like when this happens in other sciences.. there will be all the turf wars and stupid name calling of saying the other isn't a real field (as in Biological Physics arguments with Astro Physics students... blech).

Anyway.. no idea where this post is going.. so end it now.