Commentaire sur :
Harold Abelson et Gerald Jay Sussman, Structure and
Interpretation of Computer Programs, MIT Press 1996
31 décembre 2001
A l'issue d'un entretien
avec Laurent Bloch sur les langages de programmation, je lui ai demandé de
m'indiquer l'ouvrage qui l'a mis sur la piste de Scheme. Il m'a
parlé d'Abelson et Sussman. Je ne lui en serai jamais trop reconnaissant.
Scheme est un dialecte de LISP. LISP est, avec Fortran, le plus ancien des langages de programmation en
usage aujourd'hui. LISP a
été conçu à la fin des années 50 pour les besoins de l'intelligence
artificielle, discipline à laquelle on attribue des ambitions que je crois démesurées.
Il m'avait toujours fait peur avec le "lambda calcul" auquel je ne
comprenais rien et ces notations qui me semblaient peu naturelles (abondance de
parenthèses, l'opérateur placé devant les opérandes etc.)
Bref : tout cela, c'était pour des intellectuels, pas pour moi (c'est ce que pense le lycéen qui feuillette en
début d'année un manuel de maths auquel il ne comprend rien ; pourtant, en fin
d'année, il le connaîtra à fond).
Le livre d'Abelson et Sussman comporte cinq gros
chapitres qui commencent chacun par une introduction de quelques pages. Il faut
d'abord lire ces introductions : on voit alors qu'ils traitent tous les problèmes que pose la programmation, du plus abstrait
(structures de données, procédures) au plus "physique" (construction du
compilateur, registres). Ils font parcourir au lecteur toutes les couches, du concept
à la machine.
Pour présenter l'ensemble des questions que pose
la programmation, ils ont choisi Scheme. En effet ce langage permet de
programmer de façon simple des choses délicates, subtiles
et puissantes comme la gestion des flux (est-ce le bon terme français pour
traduire "stream" ?) Une fois passé l'apprentissage des notations, quelle commodité ! Le lecteur
découvre des questions qui, avec d'autres langages, ne seraient
accessibles qu'au professionnel assidu et attentif. On entrevoit, à force de faire des exercices, la puissance de la programmation
"fonctionnelle" (qui utilise beaucoup la récursion) comparée à la programmation "impérative".
Même si la seconde paraît plus "naturelle" à ceux qui ont été
formés sur Fortran, c'est la première qui permet d'utiliser au mieux
l'ordinateur.
- Scheme est par ailleurs un langage élégant
: il est plus facile à écrire et à lire que des programmes en C++
et
il n'est pas verbeux. On n'y trouve rien d'aussi
sentencieux que la fameuse instruction Java :
- ... { public static void main (string args[ ]) { ...
Le livre est écrit avec simplicité mais
il n'est pas d'une lecture facile : il y faut beaucoup de concentration.
Je n'ai compris qu'après plusieurs lectures ce que signifiaient certains passages parfaitement
clairs. Il faudra que je le relise plusieurs fois pour bien en profiter.
On peut lire le livre sans écrire de programmes,
mais ce serait dommage : il faut programmer pour assimiler les tours de main
propres au langage, et pour se sentir à l'aise en lisant des programmes un peu
élaborés. Le livre fournit de nombreux exercices, et quand vous les aurez tous
faits vous aurez beaucoup appris. On peut télécharger gratuitement diverses versions de Scheme.
Laurent Bloch m'a recommandé DrScheme, "spécialement conçu pour des
apprentis" (c'est bien ce qu'il me fallait), et m'a indiqué pour le télécharger une adresse précieuse :
http://download.plt-scheme.org/drscheme/
.
Pour être complet, je dois dire que Pascal
Rivière m'avait recommandé Abelson et Sussman voici quelques années. Mais je
n'étais pas mûr alors : je pensais que c'était
"pour les intellectuels".
Pour le nouvel an des lecteurs de
volle.com :
1) achetez "Structure and interpretation of computer
programs" de Harold Abelson et Gerald Jay Sussman, MIT Press 2001 ( une traduction en
français a été publiée en 1997 par Interéditions, mais d'après
amazon.fr elle serait épuisée) ;
2) vous pouvez aussi assister en vidéo au
Cours de Scheme par Abelson et Sussman au MIT
: ce cours apporte un complément utile et très vivant à la lecture du
livre
3) téléchargez DrScheme depuis
http://download.plt-scheme.org/drscheme/ ;
4) consacrez pendant quelques mois une demie heure par jour à
votre nouveau hobby: la
programmation.
Vous ne le regretterez pas ! ... à condition bien sûr que vous aimiez les
plaisirs austères, ceux que l'on ne peut atteindre qu'après un certain effort. |
|