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 :

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.