Friday, June 11, 2010

Re Computer Science and "Geschichtsvergessenheit"

Recall this, and consider this:

There is not a single engineering discipline in which distinguished creations of past masters are not examined carefully. All prospective authors first have to read a lot. Only writers of programs think themselves ingenious, and that they do not have to read code written by others.

See?

(This was said by Grady Booch, in an interview with Heise Developer at Innovate 2010. I translated the text back to English from German as I do not have access to the original quote at this time. The German quote is in this article.)

9 comments:

  1. This is very thoughtful quote. I believe there should be more time spent in the analysis of previous work (design, coding, etc), including our own work slash evolution.

    However, one of my concern about this is that many programmers tend to either go in a different direction than others for the sake of going in a different direction, or they will rationalize their own coding practices because past masters did the same.

    Another of my concern is the impact of heavily relying on past masters' work in a teaching environment, such as universities. I have known teachers exclusively relying on such source code and these classes were the least useful. The choice of the past work is also relevant where a bad choice can set a bad example.

    I believe in the analysis of past work but not necessarily use them as practical examples to be applied today.

    What are your thoughts about my concerns?

    Ian.

    ReplyDelete
  2. I think results of past work can (and should) be used both as good and bad examples.

    ReplyDelete
  3. Michael, would you share your favourite good and bad examples from any past master(s)? One good, one bad. This will be a great article on your blog. :)

    I remember the operating system design class I had at university. Our teacher used Xinu and we had to purchase Operating System Design Volume 1: The XINU Approach, PC version. It was an horrible and buggy piece of software, a book filled with code (very little explanations, design and comments), and Xinu does not feature a boot loader because it runs on top of an host OS (DOS in the case of PC-Xinu)!

    Ian.

    ReplyDelete
  4. I know Xinu and actually like it quite a bit - but then, very technical books are just my taste.

    My favourite good and bad example is the Jikes Research Virtual Machine. The project started out in the nineties, and the code they accumulated over time grew - in spite of its niftyness - more and more ugly, including preprocessor usage (in Java). Then came the overhaul, use of contemporary Java features, and restructuring: sheer beauty. The legacy problem still lurks around many corners, but it's much better than before.

    Jikes shows both: how you should not any more implement a rather well-performing JVM in Java, and how you could consider doing it.

    ReplyDelete
  5. I have read about Jikes in the past but never studied it before. I glanced its code under your recommendation and I find it interesting. The two first things I have noticed is its clear structure and understandable code. On the downside, methods are long and the use of cases rather than polymorphism doesn't help.

    Jikes has been abandoned, right? How does it compare to Squeak VM? I like the approach taken in the Squeak VM.

    By the way, I am a big fan of Icon Programming Language for its string processing feature, generators, etc. The book The Implementation of the Icon Programming Language is great though the implementation itself is difficult to work with. Have you read this book?

    The problem in our operating system design class and using Xinu was that our teacher had to downsize every assignment because the bugs in Xinu made it very difficult to fulfil our assignments. Besides, what's the point to buy a book with so much code in it? I'd rather just to read the code.

    I think Tanenbaum's book on operating system with Minix is a better choice. Linux would be a good choice too to since it is actually used.

    Ian.

    ReplyDelete
  6. Jikes has not been abandoned: it's very alive! They have 3 GSoC students this year, for instance, and many researchers are using it. Regarding long methods and case uses, bear in mind that Jikes is system software after all - that typically involves some tradeoffs.

    The Squeak VM is implemented in Slang. That's quite unlike Smalltalk; I usually call it C with Smalltalk syntax. PyPy is much more up to date in this regard, implementing Python in minimally (!) restricted Python.

    Icon I do not know.

    ReplyDelete
  7. Apparently, Jikes and Jikes RVM are different projects. It can be read that Jikes is abandoned on Wikipedia. What's the difference between those two projects?

    The book on Icon implementation is free and available for download on the site I wrote above. I've got a hard copy but it is no longer in print. I think that you might like this book.

    Ian.

    ReplyDelete
  8. Jikes used to be a Java compiler by IBM. The Jikes Research Virtual Machine once used to be compilable with Jikes only, but they eventually made things work with standard implementations.

    I will take a look at the Icon book, thanks for the pointer.

    ReplyDelete
  9. Thanks for the explanation, Michael. :)

    Ian.

    ReplyDelete