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
1. Généralités
On peut tout faire avec Lisp comme dans n’importe quel autre langage de programmation classique ou non. Ses caractéristiques fondent aussi ses différences. Au regard des langages procéduraux tels que Pascal, C ou Ada, Lisp apporte l’objet fonctionnel manipulable sans restriction, une programmation récursive efficace ainsi qu’une gestion automatique de la mémoire. Ce dernier trait est essentiel. Un gestionnaire de mémoire est un mécanisme qui permet d’allouer de la mémoire selon les besoins des programmes et qui libère automatiquement toute zone inutilisée : c’est la technique dite de GC (pour glaneur de cellules). Longtemps décriés pour leur inefficacité, les GC sont un composant incontournable des langages modernes. Eux seuls permettent d’obtenir une gestion sûre de la mémoire sans référence à des données disparues ni à des données inutilement conservées. L’avènement de la programmation par objets et par événements multiplie les besoins en mémoire et rend quasiment illusoire le recours à des méthodes manuelles de gestion de cette mémoire. D’autre part, les systèmes de mémoire virtuelle profitent des GC qui savent compacter les données vivantes et ainsi diminuer les défauts de page permettant d’obtenir que des applications avec GC soient plus performantes que sans !
1.1 Caractéristiques
Lisp fut historiquement fondé sur un certain nombre de principes fondamentaux [7] :
-
Lisp est un langage fonctionnel pour le calcul symbolique ;
-
la structure principale de données est la liste ;
-
peu de fonctions sont prédéfinies ;
-
la récursion est le principal schéma de mise en œuvre des fonctions ;
-
l’utilisation des variables n’est pas soumise à déclaration préalable : les variables ne sont pas typées ;
-
les programmes sont représentés par des listes et sont donc des objets manipulables par programme ;
-
tous les mécanismes dont use Lisp pour ses besoins propres sont mis à la disposition de l’utilisateur ; en particulier, le mécanisme d’évaluation qui permet de convertir un programme en une valeur, est accessible en Lisp même, sous le non de eval ;
-
la gestion de la mémoire est entièrement automatique ;
-
la mise en œuvre de Lisp est interactive.
Ces propriétés ressortissent...
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
Généralités
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