The Art Of Computer Programming

Se c'è un libro che riassume l'essenza della programmazione è probabilmente TAOCP, The Art Of Computer Programming di Donald Knuth. Un testo considerato fondamentale anche da Bill Gates che una volta disse: “Se pensi di essere un buon programmatore… mandami un riassunto di TAOCP, se sei riuscito a leggerlo tutto”

TAOCP
Source: https://cs.stanford.edu
Talmente importante da creare una vera moda: The Art Of Multiprocessor Programming, The Art Of R Programming, ...

Il progetto completo prevede sette volumi, di cui però sono usciti solo tre più qualcosa del quarto. Probabilmente è il libro moderno dalla gestazione più lunga: è stato cominciato nel 1962, quando Donald non era ancora sposato, con l'idea di concluderlo velocemente ("prima della nascita di mio figlio").

Ascoltalte Donald Knuth mentre racconta di come è stato scritto TAOCP in questa intervista:

All'origine di questa durata infinita non c'è solo l'ampiezza degli argomenti trattati, ma anche l'attenzione maniacale di Knuth per la correttezza.

E' ancora famosa questa frase riportata nel primo volume:

The first finder of any error in my books receives $2.56; significant suggestions are also worth $0.32 each. At present the books are fairly new, so your chances of finding a previously unreported error today are much better than they will be a month from now. Indeed, if you are really a careful reader, you may be able to recoup more than the cost of the books this way.

In sostanza, Knuth offre un premio in denaro di 1 dollaro (esadecimale) per ogni errore trovato nei suoi libri. La lista dei vincitori è pubblicata qui. I totali sono naturalmente in notazione esadecimale.

Una parte corposa del testo è dedicata agli esercizi, con difficoltà crescente, ma definita in maniera precisa con un codice numerico da 0 a 50, da "risolvibile a mente" fino a "senza soluzione nota":

00 An extremely easy exercise that can be answered immediately if the material of the text has been understood; such an exercise can almost always be worked "in your head."

10 A simple problem that makes you think over the material just read, but is by no means difficult.. You should be able to do this in one minute at most; pencil and paper may be useful in obtaining the solution.

20 An average problem that tests basic understanding of the text material, but you may need about fifteen or twenty minutes to answer it completely.

30 A problem of moderate difficulty and/or complexity; this one may involve more than two hours' work to solve satisfactorily, even more if the TV is on.

40 Quite a difficult or lengthy problem that would be suitable for a term project in classroom situations. A student should be able to solve the problem in a reasonable amount of time, but the solution is not trivial.

50 A research problem that has not yet been solved satisfactorily, as far as the author knew at the time of writing, although many people have tried. If you have found an answer to such a problem, you ought to write it up for publication; furthermore, the author of this book would appreciate hearing about the solution as soon as possible (provided that it is correct).

Le prime edizioni di TAOCP erano basate sul linguaggio Assembly di un ipotetico computer MIX 1009 inventato dallo stesso Knuth per l'occasione (perché 1009? perché MIX è la codifica in numerazione romana di 1009). Lo stesso Knuth difende questa scelta di un linguaggio di basso livello, ostico, spiegando che quando si riesce a scrivere un algoritmo di ordinamento in Assembly allora gli altri linguaggi non presenteranno problemi particolari.

Ulteriori informazioni, correzioni, addendum a TAOCP si possono trovare nella pagina del sito personale di Donald Knuth.

Prossimo pannello:  Elements



Versione: 03/02/2022 - 16:23:52

Parole: 361

Pannelli

Libreria                    
TAOCP                       
Elements                    
Bazaar                      
10print                     
Aesthetic Programming       
Critical Code Studies       
🔎