Depuis 1981 le cours d’Abelson et Sussman
introduit l’informatique au MIT. Il a fait l’objet d’un livre,
Structure and Interpretation of Computer
Programs. C'est un chef d’œuvre de pédagogie, et pourtant il est
difficile à assimiler : en le lisant, on comprend le texte ligne à ligne mais
pour comprendre vraiment ou, comme on dit, pour réaliser ce que
les auteurs ont voulu communiquer il reste du chemin à parcourir.
L’obstacle ne réside pas dans les langages
utilisés – l’anglais d’Abelson et Sussman est limpide, leur style est élégant et
la syntaxe du dialecte de LISP qu’ils utilisent pour programmer (Scheme) est
l’une des plus simples qui soient[1]. Mais
ils abordent frontalement les questions philosophiques nouvelles, et
peut-on dire renversantes, que pose l’informatique.
L'informatique s’écarte en effet de la
tradition grecque, qui est celle des mathématiques, car elle
accorde la priorité à l’action (« how to ») sur la contemplation de l’être (« what
is »). Elle s’appuie sur une pratique de l’abstraction, alors que notre
culture nous incite à opposer l'abstraction et la pratique. En logique elle
introduit la dimension de la performance
et la prise en compte du temps (états locaux, concurrence etc.) la complique
terriblement, ce qui indique combien nos raisonnements habituels sont maladroits
lorsqu'il faut penser un changement ou une évolution.
* *
En consultant la page consacrée à
Scheme sur Wikipédia j’ai découvert des ressources qui permettent de mieux
comprendre ce cours et dont l’ensemble forme, à ma connaissance, la meilleure
introduction qui soit à la programmation informatique :
- on peut assister à l’intégrale en
vidéo du cours d’Abelson et Sussman en 1986, y compris les questions des
étudiants. Abelson est un pédagogue exceptionnel, Sussman s’intéresse surtout
aux questions théoriques. Il est préférable de télécharger les séances l’une
après l’autre (de l’ordre de 500 Mo par séance).
- les
notes de cours (« lecture notes ») sont la transcription du cours dans sa
version de 2004, parfois plus claire que le cours de 1986.
On peut
télécharger d’un coup toute la documentation du cours, y compris le
livre.
La bonne méthode me semble être de commencer
par le livre, en faisant au moins une partie des exercices qu’il propose, puis
d’écouter les cours en vidéo et de lire enfin les notes de cours. Mais vous
pourrez préférer d'autres itinéraires.
* *
C’est intéressant, stimulant, et plus
profond que le discours sur le « numérique » que ressassent des philosophes, des
sociologues, des historiens qui n’ont jamais tenté de comprendre l’informatique
: comme ils n'y voient qu'une modeste technique, elle ne leur semble pas mériter
un effort approfondi et du haut de leur spécialité ils pensent pouvoir la juger
et en parler de façon pertinente.
Qu’ils s’y mettent ! Il n’est pas plus
difficile d'apprendre l'informatique que d’apprendre le grec et cela leur permettra de faire un bond
intellectuel d’une ampleur comparable à celui qu'ils ont fait lorsqu’ils ont
compris la démarche expérimentale, s'ils l'ont comprise.
Cela fera aussi le plus grand bien aux
praticiens de l’informatique, parfois peu conscients de la portée des outils
qu’ils manipulent quotidiennement (cf. ce que dit Stroustrup sur la
qualité des programmes).
[1]
Peu d'informaticiens sont assez sages pour éviter l'intégrisme lorsqu'il
s'agit de langage de programmation : chacun ne veut connaître que celui auquel
il s'est formé et couvre d'imprécations les autres chapelles. Loin de moi
l'intention de dénigrer un langage quelconque, mais le fait est que mes idées
se mettent en forme plus facilement, et de façon plus lisible, en Scheme qu'en
C. La structure de liste, qui associe à chaque variable un pointeur
vers la variable suivante, rend les langages de la famille LISP aussi souples
que solides et il est facile de s'habituer aux fameuses parenthèses.
|