2.6 Implanter un interpréteur en C : Lisp est mon Guide - naver/lispe GitHub Wiki

Fonctionnel contre Impératif

Lorsque l'on commence à s'intéresser à l'informatique théorique d'un peu près, on tombe inévitablement sur la distinction entre programmation fonctionnelle et programmation impérative. Les deux mondes semblent s'affronter en un combat titanesque avec à la clef la DOMINATION DU MONDE...

D'un côté la pureté de la programmation fonctionnelle, qui offre un paradis de fonctions sans effet de bord, de structures de données immuables, que l'on peut à loisir adapter à tous les besoins avec un minimum d'effort. De l'autre, l'industrie brutale et conquérante qui impose une programmation lourde, répétitive, compliquée à maintenir, mais pragmatique.

Je caricature un peu... Les lecteurs voudront bien m'en excuser. Mais parfois à la lecture des différents papiers et autres présentations, c'est un peu l'impression que le débat donne depuis l'extérieur. L'opposition entre un monde éthéré et libre et un monde brutal et pragmatique.

C'est un peu plus compliqué que ça...

Certaines choses s'expriment beaucoup mieux en programmation fonctionnelle, surtout quand les algorithmes peuvent s'abstraire de la lourdeur des variables globales, mais malgré les efforts héroïques de certains, il faut quand même avouer que les notions d'IO sont plus simples en programmation impérative.

En quarante ans de programmation, j'ai pu expérimenter une multitude de langages, fonctionnels, impératifs ou logiques, dans une multitude de domaine. Il est clair que certains algorithmes se prêtent mieux à certains domaines que d'autre. C'est une évidence, une succession de portes ouvertes au bout de laquelle je sens qu'un mur bien rugueux m'attend.

D'ailleurs aujourd'hui, le débat commence à ressembler un peu à une bataille d'arrière cours, quand la majorité des langages dit impératifs, finissent par emprunter beaucoup de principes aux langages fonctionnels. La frontière entre les deux se réduit d'année en année.

Malgré tout, il faut bien avouer que dans la plupart des projets, l'impératif et en particulier, le monde de l'objet domine.

Fabriquer son propre interpréteur

Je travaille depuis des années dans le développement de langages de programmation. Ma première incursion dans le domaine s'est faite bizarrement lors de mon doctorat en linguistique, pour lequel je développais un analyseur syntaxique dont les règles assez complexes, inspirées d'une théorie syntaxique disparues: GSP, nécessitaient un interpréteur assez complexe.