Autres aspects
Lisp
H2520 v2 Archive

Autres aspects
Lisp

Auteur(s) : Christian QUEINNEC

Date de publication : 10 juin 1995

Logo Techniques de l'Ingenieur Cet article est réservé aux abonnés
Pour explorer cet article plus en profondeur Consulter l'extrait gratuit

Déjà abonné ?

Présentation

1 - Généralités

  • 1.1 - Caractéristiques
  • 1.2 - Histoire

2 - Noyau de Lisp

  • 2.1 - Atomes
  • 2.2 - Liste
  • 2.3 - Syntaxe
  • 2.4 - Fonctions
  • 2.5 - Formes
  • 2.6 - Variables
  • 2.7 - Prédicats
  • 2.8 - Sélecteurs
  • 2.9 - Composition fonctionnelle
  • 2.10 - Construction de listes
  • 2.11 - Formes spéciales
  • 2.12 - Conditionnelle
  • 2.13 - Séquence
  • 2.14 - Construction de fonctions
  • 2.15 - Récursivité
  • 2.16 - Évaluation récursive
  • 2.17 - Pensée récursive
  • 2.18 - Mention
  • 2.19 - Résumé

3 - Mise en œuvre de Lisp pur

  • 3.1 - Boucle fondamentale d’interaction
  • 3.2 - Évaluateur
  • 3.3 - Exemple détaillé
  • 3.4 - Représentation des données
  • 3.5 - Trace d’évaluation

4 - Autres aspects

  • 4.1 - Fonctions anonymes
  • 4.2 - Macros
  • 4.3 - Échappements
  • 4.4 - Propriétés

5 - Dialectes de Lisp

  • 5.1 - Common Lisp
  • 5.2 - Scheme
  • 5.3 - Autres

6 - Conclusion

Sommaire

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’article

INTRODUCTION

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].

Logo Techniques de l'Ingenieur

Cet article est réservé aux abonnés.
Il vous reste 93 % à découvrir.

Pour explorer cet article Consulter l'extrait gratuit

Déjà abonné ?


VERSIONS

Il existe d'autres versions de cet article :

DOI (Digital Object Identifier)

https://doi.org/10.51257/a-v2-h2520

Lecture en cours
Présentation

Article inclus dans l'offre

"Technologies logicielles Architectures des systèmes"

(236 articles)

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques.

Des contenus enrichis

Quiz, médias, tableaux, formules, vidéos, etc.

Des modules pratiques

Opérationnels et didactiques, pour garantir l'acquisition des compétences transverses.

Des avantages inclus

Un ensemble de services exclusifs en complément des ressources.

Voir l'offre

4. Autres aspects

D’autres aspects de Lisp existent qui méritent d’être présentés. Les fonctions, telles qu’elles furent introduites dans le paragraphe 2.14, portent toutes un nom mais, de fait, le concept de fonction est anonyme.

x → x 47 + 1 est une fonction à part entière quoique n’ayant jamais été baptisée d’un nom édifiant. Il est possible en Lisp de définir des fonctions anonymes grâce à la forme spéciale lambda provenant du λ‐calcul (Church 1936). On écrira alors (lambda (x ) (+ (expt x 47 ) 1)) ; lambda crée une fonction dont les variables et le corps figurent en premier et second paramètres.

L’application d’une fonction lie ses variables aux valeurs de ses paramètres d’appel : ses arguments. On parle alors d’établissement de liaisons. Ces liaisons ont une portée lexicale : elles ne sont visibles que du seul corps de la fonction. Ce mécanisme ne s’est définitivement imposé que vers 1984 à la suite de Scheme par préférence au modèle où les liaisons avaient une portée dynamique : elles étaient visibles pendant tout le temps d’exécution du corps de la fonction sans restriction aucune sur les endroits où pouvaient figurer les variables s’y référant (et notamment hors du corps de la fonction). Ce choix s’est imposé par souci de sécurité pour la construction de grands logiciels où les problèmes de modularité et de confinement prennent le pas.

Il est possible de modifier une liaison (et non une variable) grâce à la forme spéciale setq. C’est, en Lisp, l’équivalent de l’affectation des langages classiques avec tous les problèmes qu’elle apporte [10]. Son usage sera donc modéré.

4.1 Fonctions anonymes

Les fonctions anonymes sont un concept important de Lisp. Tout d’abord, elles sont des citoyens de première classe, c’est‐à‐dire des objets à part entière, sans restriction...

Logo Techniques de l'Ingenieur

Cet article est réservé aux abonnés.
Il vous reste 95 % à découvrir.

Pour explorer cet article Consulter l'extrait gratuit

Déjà abonné ?


Lecture en cours
Autres aspects

Article inclus dans l'offre

"Technologies logicielles Architectures des systèmes"

(236 articles)

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques.

Des contenus enrichis

Quiz, médias, tableaux, formules, vidéos, etc.

Des modules pratiques

Opérationnels et didactiques, pour garantir l'acquisition des compétences transverses.

Des avantages inclus

Un ensemble de services exclusifs en complément des ressources.

Voir l'offre

Sommaire
Sommaire
Logo Techniques de l'Ingenieur

Cet article est réservé aux abonnés.
Il vous reste 93 % à découvrir.

Pour explorer cet article Consulter l'extrait gratuit

Déjà abonné ?


Article inclus dans l'offre

"Technologies logicielles Architectures des systèmes"

(236 articles)

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques.

Des contenus enrichis

Quiz, médias, tableaux, formules, vidéos, etc.

Des modules pratiques

Opérationnels et didactiques, pour garantir l'acquisition des compétences transverses.

Des avantages inclus

Un ensemble de services exclusifs en complément des ressources.

Voir l'offre