Présentation
Auteur(s)
-
Christian QUEINNEC : Ancien élève de l’École Polytechnique - Ingénieur en chef de l’Armement - Maître de conférences à l’École Polytechnique
Lire cet article issu d'une ressource documentaire complète, actualisée et validée par des comités scientifiques.
Lire l’articleINTRODUCTION
Lisp est un langage de programmation ou plutôt, en l’absence actuelle de toute standardisation, une famille de dialectes spécialisés en calcul symbolique. L’invention de Lisp a répondu au besoin de manipulation d’entités variées et non plus simplement de nombres. Le calcul formel, les systèmes experts, les interfaces en langages naturels, la reconnaissance de formes ou, plus généralement, la représentation et la manipulation de connaissances deviennent ainsi directement accessibles sans recours à d’opaques codages numériques ; les algorithmes peuvent être concentrés à leur essence, et leur élaboration épouse, dans une large mesure, les contraintes internes des problèmes qu’ils résolvent et non celles du langage support.
Au dire de son inventeur, Lisp est un optimum local parmi les langages de programmation, ce qui explique sa longévité et sa stabilité [7]. Aucun de ses dérivés n’a su le supplanter : Lisp, les contenant déjà tous en germe, les assimila simplement à de nouveaux styles de programmation. Aujourd’hui, Lisp a cependant bien évolué et s’est considérablement enrichi de nouveaux types de données. Par ailleurs, son substrat mathématico‐logique (λ‐calcul, preuve de théorèmes, récursion...) ainsi que plus de trente années de recherche ont conduit à des systèmes (interprètes et / ou compilateurs) efficaces, à de très riches environnements de développement, à des machines spécialisées dans l’exécution de programmes Lisp ainsi qu’à des réalisations dont l’excellence n’est plus à prouver. Citons seulement et parce qu’elles représentent des extrêmes : Macsyma, système de calcul formel, et Emacs, éditeur de texte pleine page programmable [4].
VERSIONS
- Version archivée 1 de sept. 1988 par Christian QUEINNEC
DOI (Digital Object Identifier)
Cet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(240 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive
Présentation
3. Mise en œuvre de Lisp pur
Dès sa naissance, Lisp a été conçu comme un langage interactif. C’était, en 1960, une vision tout à fait nouvelle puisque les interactions s’y résumaient à des échanges de cartes perforées. Toutefois, tous les mécanismes qui ont permis plus tard l’éclosion des environnements de programmation étaient déjà présents.
3.1 Boucle fondamentale d’interaction
Une fois lancé, un système de développement Lisp entre dans une boucle d’interaction. Cette boucle consiste à lire un programme (read), à l’évaluer (eval), à imprimer sa valeur (print) puis à recommencer le tout. Cette boucle qui met en œuvre trois nouvelles fonctions spécialisées (read, eval, et print) peut ainsi être définie en Lisp :
(defun toplevel ()
(progn (print (eval (read)))
(toplevel)))
read est la fonction qui retourne en valeur un objet Lisp lu sur le flux d’entrée (clavier ou fichier). Ce n’est pas une véritable fonction au sens mathématique puisque à égalité d’arguments (et read n’en requiert pas) ne correspond point d’égalité de résultats ; autrement dit deux appels successifs à read n’ont aucune raison de retourner le même objet sauf pour l’usager à l’introduire deux fois de suite. read n’est, sous une forme fonctionnelle, que la réalisation d’un effet de bord, à savoir : soustraire du flux d’entrée une suite de caractères à convertir en une expression. read est une fonction de très haut niveau puisqu’elle permet de lire n’importe quoi depuis un simple chiffre jusqu’à un programme (donc une liste) de plusieurs milliers de lignes.
print est la fonction symétrique. Tout comme read, print est la version fonctionnalisée de la mise en œuvre d’un effet de bord qui est d’imprimer son argument. print est aussi une fonction générique de haut niveau car capable d’imprimer un flottant ou une liste de longueur tout à fait quelconque.
eval, enfin, est une des caractéristiques majeures de Lisp. eval est une fonction qui, prenant un argument quelconque, se saisit de lui et le considère comme un programme qu’il s’agit d’évaluer afin de retourner sa valeur. Peu de langages possèdent ce trait qui peut être vu, si on le replace dans le contexte d’un langage classique, comme la possibilité d’appeler...
Cet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(240 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive
Mise en œuvre de Lisp pur
Cet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(240 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive