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.

Commentaires sur :

Michael Sipser "Introduction to the Theory of Computation" PWS 1997

La lecture de ce livre est une drôle d'expérience. Vous l'achetez parce que vous voulez régler un vieux compte avec la théorie de l'informatique : la machine de Turing, la théorie des langages, les algorithmes, la décidabilité, le fait qu'il n'existe pas de programme qui sache vérifier les programmes, le cryptage à clé publique, les ordres de grandeur qui distinguent le faisable (polynomial) de l'impossible (exponentiel), etc. Vous feuilletez le livre en soupirant : définitions, lemmes et théorèmes s'enchaînent, cela n'a pas l'air facile à lire. Mais comme vous êtes courageux et désireux d'apprendre, un soir vous vous y mettez. Et vous y passez la nuit ! puis le livre ne vous quitte plus : vous le lisez dans le métro, dans les salles d'attente, aux chiottes (oui oui), partout où vous avez un instant de tranquillité. Vous passez des soirées de lecture délicieuse.

Une expérience m'a frappé : vous arrivez sur le quai du RER, vous constatez en râlant qu'il y en a pour sept minutes d'attente. Vous sortez le Sipser du cartable, vous lisez à peine une demie page, et hop ! le RER est là par magie. Ce livre accélère le temps.

Sipser est un grand pédagogue. Sans renoncer à la rigueur, il conduit le long d'un chemin facile, vérifiable ; en partant d'automates simples il fait découvrir les langages, les grammaires, la machine de Turing, la décidabilité, la récursion, la complexité dans le temps (durée des calculs) et dans l'espace (taille de la mémoire nécessaire), etc. Il est vrai qu'il faut  revenir souvent sur ses pas pour se remémorer les résultats acquis, mais c'est bien le moindre des efforts que l'on puisse consentir.

J'admire d'autant plus l'effort pédagogique des Américains que je me rappelle avec colère certains livres français. Connaissez-vous la recette pour faire sérieux ? la voici :
- affecter de croire que le lecteur connaît les définitions : cela dispense de les indiquer ;
- donner les démonstrations selon le formalisme le plus strict : il faudra du mérite pour les comprendre ;
- se référer au cadre théorique le plus abstrait : tout ce qui est pratique est vulgaire ;
- ne pas donner d'indication sur les intentions qui président au raisonnement : ce serait pécher contre la rigueur ;
- dans les calculs, sauter deux lignes sur trois : le lecteur ébahi cherchera le passage d'une ligne à l'autre ;
- ne pas relire les épreuves d'imprimerie : on est au dessus de ça, et une erreur par ci par là contribue à la difficulté.

La grande astuce de Sipser, c'est d'écrire deux fois la même démonstration : une fois en langage courant pour donner une idée générale (c'est ce qu'il appelle "proof ideas") ; la deuxième fois en notation formelle. Lorsque je lis un chapitre la première fois, je me contente des "proof ideas" pour avoir une idée d'ensemble. Puis je lis les démonstrations en entier pour me familiariser avec les notations.

Certes tout cela fait partie de la formation d'un étudiant en informatique. Mais je ne suis qu'un modeste praticien, je n'ai pas fait ces études-là ; je me suis toujours demandé comment font ceux qui inventent des langages, conçoivent des compilateurs, etc. J'étais écrasé par une montagne d'abstraction floue. Avec Sipser je suis au sommet de la montagne ; je domine les vallées où je me traînais auparavant. Mon expérience me permet d'y voir des choses que l'étudiant en informatique ne discerne peut-être pas : cette théorie m'est familière. Reste à consolider le pont qui la relie à ma pratique.