Lisp

Page d'aide sur l'homonymie Cet article concerne le langage de programmation. Pour le protocole Internet, voir Locator/Identifier Separation Protocol.
Lisp
Logo.
Date de première version 1958
Paradigmes fonctionnel, impératif
Auteur John McCarthy
Typage dynamique
Dialectes Common Lisp, Emacs Lisp, Scheme, Clojure
Système d'exploitation Multiplate-forme

Lisp est la plus ancienne famille de langages de programmation à la fois impératifs et fonctionnels [1]. Développé initialement en tant que modèle pratique pour représenter des programmes (par contraste avec la notion théorique de machine de Turing), il est devenu dans les années 1970 et 80 le langage de choix pour la recherche en intelligence artificielle. Les langages Lisp sont aujourd'hui utilisés dans de nombreux domaines, de la programmation Web à la finance [2], et dans certains cursus de formation en informatique [3].

Le terme Lisp a été forgé à partir de l'anglais « list processing » (« traitement de listes »). Tous les dialectes de Lisp partagent les mêmes opérateurs de manipulation de listes chaînées simples. Lisp se distingue en outre par une syntaxe simple en notation préfixée, son typage dynamique des données, le support pour la programmation fonctionnelle, sa gestion automatique de la mémoire et la faculté de manipuler le code source en tant que structure de données.

Les langages Lisp sont reconnaissables immédiatement à leur apparence. Le code source des programmes est écrit en utilisant la même syntaxe que celle des listes — la syntaxe parenthésée des S-expressions. Chaque sous-expression d'un programme (ou structure de données) est délimitée par des parenthèses. Cela simplifie grandement l' analyse syntaxique des programmes Lisp et rend simple la métaprogrammation — la création de programmes qui créent d'autres programmes ou modifient le programme courant.

Si l'on excepte le langage machine et le langage d'assemblage (ou plus communément «  assembleur »), Lisp est le deuxième langage le plus ancien (juste après Fortran) parmi les langages qui se sont largement diffusés. Lisp a beaucoup évolué depuis le début des années 1960 et a ainsi donné naissance à de nombreux dialectes.

Histoire

Le langage Lisp fut inventé par John McCarthy en 1958 alors qu'il était au Massachusetts Institute of Technology (MIT). Il publia un article intitulé « Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I » [4] (soit « Fonctions Récursives d'expressions symboliques et leur évaluation par une Machine, partie I ») dans la revue CACM en 1960 ; la partie II ne fut jamais publiée.

Le premier interpréteur fonctionnait sur un ordinateur IBM 704 et deux instructions de cette machine devinrent les deux opérations primitives de Lisp pour décomposer les listes :

  • car (Contents of Address register) : le premier élément de la liste ;
  • cdr (Contents of Decrement register) : le reste de la liste.

L'opération qui consiste à fabriquer une liste à partir d'un premier élément et d'une liste est notée cons.

Dans son article, John McCarthy introduit deux syntaxes : les S-expressions (expressions symboliques, parfois appelées « sexp ») et les M-expressions (méta-expressions permettant l' homoïconicité pour exprimer les fonctions manipulant des S-expressions autrement dit pour mettre en œuvre la réflexion ). Les M-expressions n'ont jamais été très appréciées et la plupart des Lisps de nos jours utilisent des S-expressions pour les programmes comme pour les données. C'est la syntaxe des S-expressions qui fait reprocher à Lisp son abondance de parenthèses, mais c'est aussi une des raisons de la puissance et de la souplesse du langage.

En raison de son expressivité et de sa flexibilité, Lisp eut beaucoup de succès dans la communauté de l' intelligence artificielle. (cf Apports).

Dans les années 1970, on créa des ordinateurs spécialisés dans l'exécution de programmes Lisp : les machines Lisp.

Durant les années 1980 et 1990, on fit de grands efforts pour unifier les nombreux dialectes de Lisp qui étaient apparus. Le résultat fut la normalisation de Common Lisp dont la norme ANSI fut publiée en 1994 sous la référence « ANSI X3.226-1994 Information Technology Programming Language Common Lisp ». L' ISO publia de son côté en 1997 la norme ISLISP  (en) ISO/IEC 13816:1997(E), révisée en 2007 par la norme ISO/IEC 13816:2007(E). À ce moment, Lisp était bien moins florissant qu'à sa grande époque.

Bien qu'éclipsé par des langages proches de la machine (C, C++), Lisp reste un langage relativement utilisé, en particulier en tant que langage embarqué dans des applications, où il sert de langage d'extension. Les cas les plus connus d'utilisation embarquée de Lisp sont l'éditeur de textes Emacs et le langage AutoLISP  (en) d' AutoCAD. On notera par ailleurs que Lisp vient en quatrième position en termes de lignes de codes utilisées pour implémenter les 8 600 paquets sources disponibles dans le système d'exploitation Debian publié en juin 2005. Les huit premiers langages se distribuent ainsi : C (57 %), C++ (16,8 %), Shell (9 %), Lisp (3 %), Perl (2,8 %), Python (1,8 %), Java (1,6 %), Fortran (1,2 %) [5]. En juillet 2013, Lisp se place en 15e position de l' index TIOBE.

Other Languages
aragonés: Lisp
العربية: ليسب
azərbaycanca: Lisp
žemaitėška: Lisp
беларуская: Лісп
català: Lisp
کوردیی ناوەندی: لیسپ
čeština: Lisp
Cymraeg: Lisp
dansk: Lisp
Deutsch: Lisp
Ελληνικά: Lisp
español: Lisp
eesti: Lisp
euskara: Lisp
فارسی: لیسپ
suomi: Lisp
Gaeilge: LISP
galego: Lisp
עברית: LISP
hrvatski: Lisp
Հայերեն: Լիսպ
íslenska: Lisp
italiano: Lisp
日本語: LISP
한국어: 리스프
Latina: Lisp
lietuvių: Lisp
latviešu: Lisp
മലയാളം: ലിസ്പ്
монгол: Lisp
मराठी: लिस्प
Bahasa Melayu: LISP
norsk bokmål: Lisp
polski: Lisp
português: Lisp
română: LISP
русский: Лисп
srpskohrvatski / српскохрватски: Lisp
Simple English: LISP
slovenčina: Lisp
shqip: Lisp
српски / srpski: Lisp (programski jezik)
svenska: Lisp
தமிழ்: லிஸ்ப்
тоҷикӣ: Лисп
Türkçe: Lisp
українська: LISP
Tiếng Việt: Lisp
中文: LISP