Le Common Lisp : présentation et ressources
Dans ce document, le mot Lisp réfère en général au langage de programmation Common Lisp tel que défini par la norme ANSI INCITS 226-1994.
Sommaire
Le Common Lisp (CL) est un langage d'usage général de très haut niveau qui
permet plusieurs styles de programmation : impératif, fonctionnel et orienté-objet
(le niveau d'un langage de programmation fait référence à son pouvoir d'abstraction
linguistique - dit aussi le pouvoir d'expression).
Voici quelques unes des caractéristiques du Common Lisp:
- de nombreux types de donnée pré-définis, avec des caractéristiques inhabituelles
(par exemple des nombres entiers sans limite de grandeur ou encore des tableaux
dont la taille est adaptable dynamiquement, pendant l'exécution)
- une abondante librairie de fonctions utilitaires (par exemple, une centaine
de fonctions mathématiques)
- un modèle de développement rapide car interactif
et incrémental, que le code source soit interprété, compilé
ou un mélange des deux. Tout le contraire du modèle classique compilation,
link et test de la plupart des autres langages : en Lisp, chaque
fonction (unité élémentaire de programme) peut être compilée et testée isolément
- une gestion automatique de la mémoire (fini les erreurs liées aux
pointeurs)
- un système de traitement des erreurs sophistiqué et extensible (voir cet
article
dans Advances in Exception Handling Techniques, Springer, 2001)
- un langage à objets intégré (CLOS - Common Lisp Object System)
parmi les plus élaborés qui soient, au moins lorsque comparé à Smalltalk,
C++, Eiffel et Java.
Pour plus d'information à propos des caractéristiques du Common Lisp :
Grâce à son pouvoir d'expression, le Common Lisp procure un avantage technologique
à ses utilisateurs. Les articles suivants illustrent quelques uns des avantages
du CL par rapport à des langages courants comme Java et C++ :
- Lisp Lives! Un article de
Software Development Magazine, mars
2004
- Report
on Programming Languages, Space Telescope Science Institute, John Michael
Adams, 2003
- Pascal Costanza's Highly Opinionated Guide to Lisp, 2002
Pourquoi passer au Lisp, après 7 ans de pratique du Java.
- Beating the Averages
par Paul Graham, 2001.
Viaweb est une application Internet écrite en Lisp et vendue en 1998 à Yayoo
pour la somme de 49 million de dollars.
- Le Common Lisp et les applications numériques : On
using Common Lisp for Scientific Computing (Postscript), N. Neuss, 2002
- Software Fault Prevention
by Language Choice: Why C is Not My Favorite Language par Richard Fateman,
Université de Californie, Berkeley, 2001
- Lisp as an Alternative to
Java par Peter Norvig
- Accelerating
Hindsight: Lisp as a Vehicle for Rapid Prototyping, par Kent M. Pitman,
1994
Il n'y a quasiment pas de limite au domaine d'application du Common Lisp : de
l'Internet à la finance en passant par la conception de jeux vidéo, les applications
industrielles (y compris temps-réel), etc. Par exemple :
Pour d'autres exemples, voir les sites de l'ALU (Industry
Application and Success
Stories), Franz et
Lispworks.
- AllegroServe , un serveur
WEB libre en Common Lisp
- CL-HTTP,
un autre serveur WEB libre en Common Lisp (Common Lisp Hypermedia Server),
developpé par le M.I.T. Artificial Intelligence Laboratory
- Lispweb Mailing List, une
liste de diffusion à propos de l'utilisation du Lisp pour le développement
d'applications Internet écrites en Lisp
- Scsh, un shell Unix dont le langage de
Script est le Scheme (dialecte du Lisp)
- Ressources pour Lispworks : les projets de Dmitri
A. Ivanov
Les produits Lisp libres et commerciauxretour au sommaire
Certains fabricants d'environnements
Common Lisp proposent des versions gratuites de leurs produits commerciaux plus
ou moins bridées ; tous ces produits comprennent un environnement de développement
intégré (éditeur, etc.) :
Parmi les CL libres, un des plus populaires est le CMUCL
(pour Linux et divers Unix).
Un CL pour machines multi-processeurs (SMP): Scieneer
Common Lisp.
Les produits Lisp libres (sur CLiki). Autre répertoire sur le site de l'ALU (produits commerciaux et libres).
En français:
En anglais :
- Practical Common Lisp, Peter Seibel (2005, existe en version papier)
- Successful Lisp par David Lamkins (2004, existe en version papier)
- Basic
Lisp Techniques , par David Cooper, Jr. (au format PDF, 600Kb - Janvier 2002)
- On Lisp par Paul
Graham (fichiers Postcript ou PDF, plus d'un Mb). Techniques de programmation
Lisp avancées. existe en version papier.
- Common Lisp: A Gentle Introduction to Symbolic Computation par David S. Touretzky
- Lisp and elements
of style is a twelve-lecture course written by Nick Levine for delivery to undergraduates
at Anglia Polytechnic University. It covers
most introductory aspects of the language (apart from CLOS) and includes exercises,
suggestions for paractical sessions, two longer assignments and even an exam
with model answers. Free.
- The Common Lisp Cookbook
- The Dynamic Learning Center,
examples de programmation Lisp
- Voir aussi Common
Lisp Educational Resources sur le site de l'ALU
Il y a de nombreux bons livres sur le Common Lisp, la plupart en anglais.
En voici quelques uns:
En français
En anglais
- Pour un débutant, les 17 premiers chapitres de Lisp (Winston and Horn,
Addison Wesley, 3rd edition) constituent une excellente introduction à la
programmation et au Lisp. Les chapitres suivants sont des exemples du domaine
de l'IA (Intelligence Artificielle). Hautement recommandé. Info.
- Object-oriented Common Lisp de Stephen Slade (Prentice Hall)
est un très bon livre, en particulier pour ceux qui ont déjà une expérience de
la programmation. Convient aussi comme livre de référence.
- Object-Oriented Programming in Common Lisp - A Programmer's Guide to
CLOS par Sonia Keene (Addison Wesley). Indispensable pour celui
qui veut aborder la conception orienté-objet et apprendre à utiliser la partie
orienté-objet du Common Lisp.
Voir aussi la bibliographies de l'ALU.
Foires aux Questions et groupes de discussionretour au sommaire
Les FAQs suivantes (en anglais) ne sont plus mises à jour mais sont toujours
très utiles: