Niklaus Wirth: When good Computer Science ideas go bad

October 15th, 2006

Niklaus Wirth has an interesting and provocative article on the theme of once promising Computer Science ideas that have become obsolete, or at least have not delivered on their initial promise.

Good Ideas — Through the Looking Glass. IEEE Computer, Jan. 2006, pp. 56-68.

“An entire potpourri of ideas is listed from the past decades of Computer Science and Computer Technology. Widely acclaimed at their time, many have lost in splendor and brilliance under today’s critical scrutiny. We try to find reasons. Some of the ideas are almost forgotten. But we believe that they are worth recalling, not the least because one must try to learn from the past, be it for the sake of progress, intellectual stimulation, or fun.”

He starts with computer architecture but has the most to say, not surprisingly, about programming, programming languages and programming paradigms. This comment on the introduction of perators with side-effects in C is amusing.

“The ugliness of a construct usually appears in combination with other language features. In C, we may write, for example, x+++++y, a riddle rather than an expression, and a challenge for a sophisticated parser! Guess what? Is its value is equal to ++x+++y+1? Or is the following correct?

    x+++++y+1==++x+++y     x+++y++==x+++++y+1

One is tempted to postulate a new algebra! It is indeed absolutely surprising with which eqanimity this notational monster was accepted by the world-wide programmer’s community.”

Most of the questionable ideas he identifies will meet with general agreement. But when discussing programming paradigms he is particularly hard, unjustifiably IMHO, on the paradigms of functional, logic and object oriented programming. The short version is that he sees he first two as failed experiments and the last as a re-branding of traditional procedural programming techniques. It’s true that Lisp and Prolog did not change the way we all program, but I am amazed at how many people continue to use these languages with great success for serious work. When they fit the problem at hand, you can not beat them. The same is true for OO languages as well, but they seem to be doing quite well without any kind words from their supporters.

While I can’t agree with everything in the article, which I spotted on LTU, it’s certainly worth reading and thinking about.