Résumé | Ce séminaire sera le premier d'une série dont le but est de
présenter le langage Common Lisp aux collègues du LaBRI. Pour
le premier séminaire de la série, je donnerai un survol du
langage et un plan préliminaire pour les autres séminaires de la
série.
La plupart des membres du LaBRI on soit appris Lisp bien avant la date
de la normalisation par ANSI du langage Common Lisp (1994), soit pas
du tout (les jeunes). Le langage Common Lisp est très différent
du langage Lisp d'il y a quelques décennies et surtout très
différent d'un certain nombre de préjugés très
répandus. En particulier :
* La plupart des implémentations de Common Lisp génère du
code natif grâce à un compilateur incrémental. Par
contre, le langage est DYNAMIQUE et INTERACTIF dans le sans que la
sémantique est définie par une succession d'interactions.
* Grâce au compilateur et à la possibilité d'annoter le
programme de déclarations de types, la vitesse du code
généré est comparable à celle du compilateur GCC pour
le langage C.
* Le langage normalisé contient un système très
sophistiqué de programmation par objets, permettant notamment
la sélection multiple (multi-méthodes), les méthodes
secondaires (:before, :after, :around), plusieurs combinaisons de
méthodes et l'introspection etc. grâce au MOP
(méta-object protocol).
* Le système de conditions (appelés "exceptions" dans d'autres
langages) permet un véritable dialogue entre le code qui
détecte une situation exceptionnelle et le traitant de la
condition, grâce au système de RESTARTS.
* Les macros Common Lisp sont des fonctions qui transforment du code
Common Lisp (sous forme d'arbres syntaxiques) permettant ainsi le
rajout de nouvelles constructions syntaxiques sans les
problèmes du préprocesseur C ou C++. Ceci permet
l'écriture de langages dédiés sous forme de LANGAGES
ENCHÂSSÉS.
Après le premier séminaire, je compte présenter le langage de
manière interactive (sur ordinateur) en commençant par les
fonctionnalités les plus simples, et je pense consacrer chaque
séance à une fonctionnalité différente du langage afin de
permettre aux collègues de pouvoir suivre la présentation sans
avoir assisté à toutes les présentations précédentes. |