The Next 700 Programming Languages
5/15/2006 05:59:00 AM
J'ai lu récemment The Next 700 Programming Languages, un article de Landin, datant de 1966. Parce que le titre me plaisait bien, et qu'on m'a dit que c'était une référence dans le domain de la conception des langages de programmation. Vu de 2006 ça parait un peu simpliste, mais l'auteur ébauche en réalité des idées très nouvelles et très importantes. Ca me fait réaliser que l'informatique (j'ose pas dire la science, mais je le pense à moitié) avance plutôt par des déplacements lents de perspective que par des découvertes brutales et techniques. Dans cet article, Landin inspire de nombreux langages de programmation modernes, dont Haskell et la famille ML. Il développe un langage abstrait (ISWIM pour If you See What I Mean) réellement de haut niveau, dont le sens est clairement défini. Pour preuve de cela il exhibe des équations exprimant des propriétés simples des programmes, essentiellement des règles de substitution. Je n'en connais pas assez pour l'affirmer vraiment, mais il a tout l'air de lancer l'idée de la sémantique des langages de programmation. Lisez le vous même, voici quelques morceaux choisis.
Landin a l'idée d'isoler l'impératif du fonctionnel, ce qui donnera plus tard les monades de Haskell: The author thinks that the fruitful development to encompass all ISWIM will depend on establishing "safe" areas of an ISWIM expression, in which imperative features can be disregarded.
Il propose d'ailleurs une dénomination que je préfère à "fonctionnel": The word "denotative" seems more appropriate than nonprocedural, declarative or functional. The antithesis of denotative is "imperative".
Moins frappant, mais à mon sens une bonne description des qualités de ML: The special claim of ISWIM is that it grafts procedural notions onto a purely functional base without disturbing many of the desirable properties.
Je trouve qu'il y a beaucoup d'idées là dedans, et en général un bel effort de conception rigoureuse des langages de programmation. Le genre de chose qu'on voudrait voir plus souvent. Perl c'est rigolo, mais je trouve ça de plus en plus tristement antique. Les Perleux diront bien sûr que Perl cherche à être un langage naturel, favorisant la créativité, que c'est de l'art, bla bla. Je dis que la programmation n'est pas un art, mais un artisanat, ce qui n'exclut pas le plaisir du travail bien fait, mais met en avant la finalité. C'est pas de la peinture, c'est plus proche de l'horlogerie.
Les langages pop plus récents (Ruby,Python,Javascript,..) semblent cependant évoluer dans la bonne direction. Ils deviennent plus fonctionnels, et ont une notion de portée lexicale plus claire. Côté Ruby et Python on remarque que la (re-)définition remplace souvent implicitement l'assignation, à l'opposé des variables globales bordéliques de la génération Perl. Cela dit, je suis pas complètement heureux avec ça non plus, je trouve qu'on se fait vite piéger par les définition-par-défaut et on n'arrive plus à faire des assignations là où on le veut.
Voila.. j'avais deux trois trucs à cracher sur la prog :p
Landin a l'idée d'isoler l'impératif du fonctionnel, ce qui donnera plus tard les monades de Haskell: The author thinks that the fruitful development to encompass all ISWIM will depend on establishing "safe" areas of an ISWIM expression, in which imperative features can be disregarded.
Il propose d'ailleurs une dénomination que je préfère à "fonctionnel": The word "denotative" seems more appropriate than nonprocedural, declarative or functional. The antithesis of denotative is "imperative".
Moins frappant, mais à mon sens une bonne description des qualités de ML: The special claim of ISWIM is that it grafts procedural notions onto a purely functional base without disturbing many of the desirable properties.
Je trouve qu'il y a beaucoup d'idées là dedans, et en général un bel effort de conception rigoureuse des langages de programmation. Le genre de chose qu'on voudrait voir plus souvent. Perl c'est rigolo, mais je trouve ça de plus en plus tristement antique. Les Perleux diront bien sûr que Perl cherche à être un langage naturel, favorisant la créativité, que c'est de l'art, bla bla. Je dis que la programmation n'est pas un art, mais un artisanat, ce qui n'exclut pas le plaisir du travail bien fait, mais met en avant la finalité. C'est pas de la peinture, c'est plus proche de l'horlogerie.
Les langages pop plus récents (Ruby,Python,Javascript,..) semblent cependant évoluer dans la bonne direction. Ils deviennent plus fonctionnels, et ont une notion de portée lexicale plus claire. Côté Ruby et Python on remarque que la (re-)définition remplace souvent implicitement l'assignation, à l'opposé des variables globales bordéliques de la génération Perl. Cela dit, je suis pas complètement heureux avec ça non plus, je trouve qu'on se fait vite piéger par les définition-par-défaut et on n'arrive plus à faire des assignations là où on le veut.
Voila.. j'avais deux trois trucs à cracher sur la prog :p
1 commentaires:
rapport à l'informatique, la science, les déplacements de perspective: je crois que les grandes découvertes ne sont guere que des reformulations plus efficaces, marquantes, provocantes ou pertinentes de choses qui préexistaient au sens où elles étaient dans l'air du temps. ça ne remet pas en cause le mérite des savants et chercheurs, bien sûr, mais à mon sens ce sont juste des gens qui ont du nez, qui sont capables de changer d'angle de vision pour mieux appréhender un problème, se le poser en d'autres termes pour voir si par hasard en le voyant comme ça on ne saurait pas mieux y répondre.
Par Anonyme, Ã 15/5/06 15:55
Un commentaire ?
< Accueil