Object Lisp, la fin d’une lignée

Nicolas
Ecosystèmes des langages de programmation
2 min readApr 17, 2017

Lisp (List Processing) qui fut créé à la fin des années 50 au MIT est une famille de langages se basant sur la manipulation de listes chaînées. Syntaxiquement, il est assez reconnaissable à ses commandes systématiquement placées dans des parenthèses permettant la déclaration de listes, car tout est liste en ce langage. De même, l’utilisation de la notation polonaise inversée le caractérise également facilement. Elle permet de sauter quelques étapes dans la compilation car on place les éléments dans l’ordre de lecture de l’assembleur).

Exemple en Lisp de la variable x incrémentée de 4 : (+ 4 x)

Object Lisp, le langage qui nous intéresse, fut créé et utilisé principalement dans les années 80 et descend de la famille des Lisp. Comme le suggère son nom, il se démarque car il facilite la Programmation Orientée Objets (POO).

La variable globale icon prend le statut d’objet : (setq icon (make-obj))

Contrairement à — par exemple — Java utilisant la programmation orientée classes, notre langage utilisera la programmation orientée prototypes. Il s’agira de créer de nouveaux objets à partir d’anciens : on appelle cela l’héritage ou la délégation.

Création d’un héritier de icon nommé icon-with-trail : (setq icon-with-trail (kindof icon))

On pourra donc créer un objet “fils” ayant les mêmes caractéristiques qu’un objet “père” à quelques différences près. En effet, en plus de tout ce que le père propose, le fils pourra avoir d’autres fonctions et variables servant à sa spécialisation. Le fils peut également modifier son propre usage des fonctions du père. Elles seront comme les fonctions originelles, sauf pour les différences qu’on spécifiera ; on parle alors de shadowing.

L’objet icon-with-trail shadow sa fonction goto-xy, il la redéfinit :

(defobfun (goto-xy icon-with-trail) (x y) (draw-line-on-graphics-screen x-coord y-coord x y)(shadowed-goto-xy x y))

A noter que comme tous les langages descendant de Lisp, le code est très compact mais les parenthèse sont nombreuses et il est possible de s’y perdre.

Dans ce langage, on considère que l’environnement Lisp habituel est l’objet global dont tous les autres héritent. Pour ce qui est des fonctions qu’on pourrait créer dans les objets, elles sont traitées comme des variables, mais on leur associe une suite d’actions au lieu d’une simple valeur.

Toutefois, face notamment à CLOS, un langage orienté objet également issu de la famille des Lisp, Object Lisp a été plus ou moins abandonné de nos jours. CLOS est peut-être moins simple, mais plus général que ne le fut Object Lisp, et est le premier langage de programmation passé comme standard (en 1994) ; suite à cela, personne n’a jugé utile d’ajouter des bibliothèques au vieux langage pour faire concurrence.

Source : http://lispm.de/docs/Publications/Common%20Lisp/ObjectLisp-Manual.pdf (on ne notera qu’une seule source, mais celle-ci étant le manuel de référence d’Object Lisp, il est possible de s’y fier)

--

--