Sunday, April 27, 2008

Don Knuth on Open Source, Multicores and Literate Programming

Donald Knuth, the father of TeX and author of the long unfinished multi-volume set of books entitled "The Art of Computer Programming", sounds off in this interesting interview.

His comment on unit testing (or an overzealous reliance on it) seems a bit obscured here. I am certainly more inclined to concur with his other quote: "early optimization is the root of all evil," because unit testing tends to promote that bad strategy with respect to system performance. Some personal war stories describing exactly that will be delivered this week in my Guerrilla Boot Camp class.

However, do read and heed what he says about multicores and multithreaded programming. It should sound familiar. BTW, where he apparently says "Titanium", he means Itanium.

His riff on "literate programming" is a bit of a yawn for me because we had that capability at Xerox PARC, 25 years ago. Effectively, you wrote computer code (Mesa/Cedar in that case) using the same WYSIWYG editor that you used for writing standard, fully-formatted documentation. The compiler didn't care. This encouraged very readable commentary within programs. In fact, you often had to look twice to decide if you were looking at a static document or dynamic program source. As I understand it, Knuth's worthy objective is to have this capability available for other languages. The best example that I am aware of today, that comes closest to what we had at Xerox, is the Mathematica notebook. You can also use Mathematica Player to view any example Mathematica notebooks without purchasing the Mathematica product.

1 comment:

steve jenkin said...

PERL with its embedded doco is the closest environment I've seen to 'literate programming'.

It allows 'pod' to be included in the source (good) and this is the norm for CPAN modules. It doesn't support nicely typeset docs with good diagrams.

Quickly reading on CWEB, I'm surprised it isn't taught as *the* method in CS & SE courses... This industry is Fad based, has no sense of history and less rigour and discipline :-(

Hence Great Things whither on the vine - while MS-Vista sells 140M copies.

I'm suspecting that programming, like management, *actively* discards really useful advances that require too much 'professionalism'... It's not by accident that general computing capability has markedly declined over the last 3-5 decades.