Spence Green

التكرار يعلم الحمار

I work at Lilt. In addition to computers and languages, my interests include travel, running, and scuba diving. more...

Knuth on Software

without comments

Much attention has been paid to Knuth’s recent interview on Informit. The Slashdot thread shows all the signs of a flame war, and the blogosphere has evidenced a vigorous response as well. The maelstrom has two focii: Knuth’s rejection of most eXtreme programming (XP) practices and his admission that he wouldn’t “be surprised at all if the whole multithreading idea turns out to be a flop.” To him, the emergence of multicore processors “looks more or less like the hardware designers have run out of ideas, and that they’re trying to pass the blame for the future demise of Moore’s Law to the software writers by giving us machines that work faster only on a few key benchmarks!” Revisions of TAOCP will not contain parallized versions of his algorithms, nor will he devote significant research time to the subject.

These criticisms are unremarkable. Jeff Atwood, among others, labeled the multicore hype an extension of the clock-speed race in the late 90’s. 900MHz is better than 700Mhz, so four cores must be better than two. Right? So say the marketing panjandrams. Most consumers lack a rudimentary understanding of computer architecture, so marketers need a comprehensible “hook.” Core count, like clock speed, seems analogous to horsepower, torque, and other “power” metrics. Consumers need such a gimick.

The criticism of Agile is even less significant. Agile introduces practices that good programmers intuitively follow. Knuth is a good programmer, and he does not need advice.

What the masses seem to have missed was this insight into Knuth’s working habits:
My general working style is to write everything first with pencil and paper, sitting beside a big wastebasket. Then I use Emacs to enter the text into my machine, using the conventions of TeX. I use tex, dvips, and gv to see the results, which appear on my screen almost instantaneously these days. I check my math with Mathematica.

I program every algorithm that’s discussed (so that I can thoroughly understand it) using CWEB, which works splendidly with the GDB debugger. I make the illustrations with MetaPost (or, in rare cases, on a Mac with Adobe Photoshop or Illustrator). I have some homemade tools, like my own spell-checker for TeX and CWEB within Emacs. I designed my own bitmap font for use with Emacs, because I hate the way the ASCII apostrophe and the left open quote have morphed into independent symbols that no longer match each other visually. I have special Emacs modes to help me classify all the tens of thousands of papers and notes in my files, and special Emacs keyboard shortcuts that make bookwriting a little bit like playing an organ. I prefer rxvt to xterm for terminal input. Since last December, I’ve been using a file backup system called backupfs, which meets my need beautifully to archive the daily state of every file.

I currently use Ubuntu Linux, on a standalone laptop—it has no Internet connection. I occasionally carry flash memory drives between this machine and the Macs that I use for network surfing and graphics; but I trust my family jewels only to Linux.

This passage reveals the character of genius, which is realized through these disciplines:

  • Real progress comes not from independent ideas, but from the careful accumulation and synthesis of quality information.
  • Understanding comes through action. Knuth does not jsut write about algorithms. He programs them, dissects them, and then disseminates them.
  • Distractions must be minimized. Complicating access to the internet during the work day is one of the best ways to start.
  • Real genius cannot be separated from art, which has much to do with taste. In the 70’s, Knuth grew tired of visually imprecise electronic typesetting systems. His frustration must not have been unique, but his ability to identify, decompose, and solve it was.

Edward Said once wrote that the American university remains the only refuge for those interested in reflection and the refinement of the intellect. What must be considered is that personal habits–not just talent and environment–have much to do with the expansion of human knowledge.

Written by Spence

May 6th, 2008 at 12:31 pm

Posted in Software

Leave a Reply

You must be logged in to post a comment.