[Arte Numérica]

Arte Numérica > Inspiration > Donald Knuth

Donald Ervin Knuth

Home page at Stanford
Knuth's books
TAOCP The TeXbook
Advogato interview (2000)
CLB interview (1993)

The title of a paper by Eric Weiss sums up nicely the high regard for the work of Donald Knuth among computing practitioners: "In the art of programming, Knuth is first; there is no second".

On programming as an art:

My feeling is that when we prepare a program, the experience can be just like composing poetry or music; as Andrei Ershov has said, programming can give us both intellectual and emotional satisfaction, because it is a real achievement to master complexity and to establish a system of consistent rules.

Furthermore, when we read other people's programs, we can recognize some of them as genuine works of art. [...] The possibility of writing beautiful programs, even in assembly language, is what got me hooked on programming in the first place.

-- "Computer Programming as an Art", in Literate Programming {>>Amazon.com}

On literate programming:

Let us change our traditional attitude to the construction of programs. Instead of imagining that our main task is to instruct a computer what to do, let us concentrate rather on explaining to human beings what we want a computer to do.

The practitioner of literate programming [...] strives for a program that is comprehensible because its concepts have been introduced in an order that is best for human understanding, using a mixture of formal and informal methods that nicely reïnforce each other.

[...] I think that a complex piece of software is, indeed, best regarded as a web that has been delicately pieced together from simple materials. We understand a complicated system by understanding its simple parts, and by understanding the simple relations between those parts and their immediate neighbors. If we express a program as a web of ideas, we can emphasize its structural properties in a natural and satisfying way.

-- "Literate Programming" in Literate Programming

The best programs are written so that computing machines can perform them quickly and so that human beings can understand them clearly. A programmer is ideally an essayist who works with traditional aesthetic and literary forms as well as mathematical concepts, to communicate the way that an algorithm works and to convince a reader that the results will be correct.

-- "Algorithms, Programs, and Computer Science", in Selected Papers in Computer Science {>>Amazon.com}

On theory and practice:

If you find that you're spending almost all your time on theory, start turning some attention to practical things; it will improve your theories. If you find that you're spending almost all your time on practice, start turning some attention to theoretical things; it will improve your practice.

-- "Theory and Practice, IV", in Selected Papers on Computer Science