RECHERCHE :
Bienvenue sur le site de Michel VOLLE
Powered by picosearch  


Vous êtes libre de copier, distribuer et/ou modifier les documents de ce site, à la seule condition de citer la source.
 GNU Free Documentation License.

Commentaire sur :

Donald E. Knuth, The Art of Computer Programming, trois volumes, Addison Wesley 1997

3 juillet 2002

The Art of Computer Programming trônait depuis quelques mois dans ma bibliothèque. J'avais lu des passages et ajourné la lecture de l'ensemble. Les livres longs ne m'ont jamais fait peur, mais pour être à l'aise il faut que je comprenne la personnalité de l'auteur : la lecture est un dialogue et on ne peut dialoguer que si l'on est en sympathie. Or je ne comprenais pas Donald Knuth. 

La lecture de Digital Typography m'a permis de voir à qui j'avais affaire. J'ai repris The Art of Computer Programming pour le lire en entier et dans l'ordre. Mon appétit poussant à l'exploration, je survole d'abord les exercices et les énumérations (parfois nécessaires mais toujours fastidieuses). J'y reviendrai, bien décidé à faire tous les exercices - ceux qui sont faisables du moins, car Knuth a placé parmi eux des problèmes que la profession des mathématiciens n'a pas encore résolus : une note de difficulté permet de les repérer. 

Knuth a voulu faire pénétrer le lecteur dans l'intimité de l'ordinateur, cette intimité que les langages de haut niveau masquent. Il a à cet effet construit une machine abstraite, le MIX (1009 en chiffres romains), qui condense les traits essentiels des ordinateurs actuels. Il a mis au point un langage, le MIXAL, analogue à l'assembleur mais libre des conventions de toute machine particulière. Il a écrit ses algorithmes dans ce langage : ainsi nous pouvons mentalement voir comment l'ordinateur exécute les algorithmes, calculer leur temps d'exécution etc. En étudiant ces programmes, nous apprenons à lire des programmes, savoir précieux [1]

Les livres d'informatique consacrés à un langage particulier contiennent souvent des passages d'une abstraction déroutante : on se demande où le concepteur est allé chercher telle idée ingénieuse, telle convention qui ne se justifie, semble-t-il, qu'à l'usage. Knuth nous présente la racine de ces conceptions : nous ne découvrons pas les listes en étudiant LISP, ni les arbres en étudiant un SGBD, mais nous abordons ces concepts pour eux-mêmes, en eux-mêmes, sous une forme développée qui ne laisse rien dans l'ombre. Cela prépare à se sentir chez soi lorsqu'on lira les textes où ces concepts sont utilisés. 

Évidemment ce livre n'est pas d'une lecture facile. Il mérite qu'on lui consacre du temps. Il faut savoir parfois ralentir et s'équiper d'un papier et d'un crayon. On a de temps à autre l'impression que Knuth s'est trompé : tel paragraphe m'a, pendant quelques heures, fait croire que j'avais pris le Maître en défaut. Hélas ! c'est moi qui suis lent à comprendre...


[1] "The reader will find it instructive to study as many of the MIX programs given in this book as possible - it is exceedingly important to acquire skill in reading other people's computer programs, yet such training has been sadly neglected in too many computer courses and it has led to some horribly inefficient uses of computing machinery" (vol. 1, p. 170).