The Art of Computer Programming

The Art of Computer Programming (TAOCP) est une série de livres en plusieurs volumes sur la programmation informatique, écrits par Donald Knuth. En 2020, seuls les trois premiers ont été publiés en entier, le premier tome du quatrième volume étant paru début 2011[1] :

  • Volume 1, Fundamental Algorithms (troisième édition 1997) ;
  • Volume 2, Seminumerical Algorithms (troisième édition 1997) ;
  • Volume 3, Sorting and Searching (seconde édition, 1998) ;
  • Volume 4A, Enumeration and Backtracking (2011).

Toujours en 2020, les deux autres tomes prévus pour le quatrième volume, Combinatorial Algorithms, sont en cours de rédaction. Certaines parties sont disponibles en ligne[2]. Au total, sept volumes sont prévus.

Histoire

Donald Knuth étant considéré comme un expert dans l'écriture de compilateurs, il commença à écrire un livre sur la conception de compilateurs en 1962. Il réalisa rapidement qu'il devrait considérablement augmenter le domaine traité par son livre. En 1965, Knuth finit d'écrire le premier jet de ce qui devait être un volume unique composé de douze chapitres. Il s'agissait d'un manuscrit de 3 000 pages. Il supposait qu'une page dactylographiée correspondrait à cinq pages manuscrites. L'éditeur calcula un rapport d'une page manuscrite et demi pour chaque page dactylographiée. Le livre ferait donc 2 000 pages. Le plan du livre fut donc modifié pour comprendre sept volumes d'un ou deux chapitres chacun. Le volume 4 a ensuite été divisé en 4A, 4B, 4C et peut-être même 4D.

En 1976, Knuth prépara la seconde édition du volume 2, nécessitant d'être à nouveau mis en page. Mais le style de mise en page n'était plus disponible et le travail devait être refait. En 1977, Knuth décida de passer quelques mois pour travailler sur un nouvel outil. Huit ans plus tard, il avait achevé TeX, qui est depuis lors utilisé pour tous les volumes.

La célèbre offre d'« un dollar hexadécimal »[3] en récompense de la correction de toute erreur découverte dans les volumes de TAOCP (présente dès la première édition du premier volume) contribua à créer un ouvrage de très grande qualité et continuellement mis à jour. Une autre caractéristique de cet ouvrage est la gradation de difficulté des exercices, qui vont du niveau « échauffement » aux problèmes de recherche encore non résolus.

Cet art de programmer que promeut Knuth consiste en le message suivant : plutôt que de hacker en assembleur et de faire gagner quelques secondes au programme (ce serait une optimisation qui a son mérite mais qui n'est pas universelle ni pérenne car elle dépend trop de la machine sur laquelle tournera l'algorithme), il vaut mieux prendre du recul sur le problème considéré, en extraire les structures combinatoires en jeu, étudier via les outils mathématiques ad hoc les propriétés typiques de ces structures (Knuth établit très souvent le comportement en moyenne en utilisant des techniques de séries génératrices), ce qui permet finalement de mieux affûter l'algorithme à utiliser, et d'avoir ainsi de gigantesques gains d'efficacité. C'est également là le sens qu'il faut donner à son aphorisme « L'optimisation prématurée est la source de tous les maux (ou presque) en programmation ».

Le premier volume s'ouvre par une section d'étude de ces outils (principalement combinatoires) destinés à l'analyse des algorithmes ; avec la collaboration de Ronald Graham et Oren Patashnik, Knuth a largement développé cette section sous forme d'un manuel de combinatoire intitulé Concrete Mathematics.

Notes et références

  1. « Donald E. Knuth | InformIT », sur www.informit.com (consulté le )
  2. Consulter TAOCP
  3. « Knuth's Books », sur www-cs-faculty.stanford.edu (consulté le )

Annexes

Articles connexes

  • MMIX (architecture logicielle utilisée dans TAOCP)
  • IBM 650

Liens externes

  • Portail de l’informatique
Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.