Flavors , [1] une des premières extensions orientées objet de Lisp développée par Howard Cannon au Laboratoire d’intelligence artificielle du MIT pour la machine Lisp et son Langage de programmation Lisp Machine Lisp , a été le premier langage de programmation à inclure des mixins . [2] Symbolics l’a utilisé pour ses machines Lisp et l’a finalement développé en New Flavors ; les saveurs originales et nouvelles étaient des modèles OO qui transmettaient des messages . Il a été extrêmement influent dans le développement du Common Lisp Object System (CLOS). [3]
Des implémentations de Flavors sont également disponibles pour Common Lisp . [4]
De Nouvelles saveurs ont remplacé l’envoi de messages par l’appel de fonctions génériques .
Adapte les offres :beforeet :afterles démons avec la combinaison de méthodes par défaut (appelée :daemon).
Comparaison des saveurs et des fonctionnalités CLOS
Flavors propose quelques fonctionnalités introuvables dans CLOS :
- Emballages
- Accès lexical automatique aux slots en utilisant des variables dans les méthodes.
- Fonctions de saveur internes, macros et sous-ensembles.
- Constructeurs générés automatiquement.
- DEFFLAVORchoix : :required-methods, :abstract-flavor, :mixture.
- SENDfonction d’envoi de messages.
CLOS offre les fonctionnalités suivantes introuvables dans Flavors :
- Multiméthodes
- Méthodes spécialisées sur des objets individuels (via EQL).
- Méthodes spécialisées sur les types Common Lisp (symbole, entier, …).
- Méthodes spécialisées sur les types def-struct.
- Créneaux de classe.
Terminologie
Les saveurs | CLOS |
---|---|
saveur | classe |
saveur des composants | superclasse |
saveur dépendante | sous-classe |
saveur de composant local | superclasse directe |
saveur dépendante locale | sous-classe directe |
fonction générique | fonction générique |
méthode combinée | méthode efficace |
choix de méthode | qualificateur de méthode |
exemple | exemple |
variable d’instance | insérer |
commande de composants aromatiques | liste de priorité des classes |
Références
- ^ Howard Cannon, Flavours: Une approche non hiérarchique de la programmation orientée objet , Symbolics Inc., 1982
- ^ page 46 de Thompson, CW, Ross, KM, Tennant, HR et Saenz, RM 1983. “Construire des interfaces de langage naturel basées sur des menus utilisables vers des bases de données”. Dans Actes de la 9e Conférence internationale sur les très grandes bases de données (31 octobre – 2 novembre 1983). M. Schkolnick et C. Thanos, Eds. Bases de données très volumineuses. Éditeurs Morgan Kaufmann, San Francisco, Californie, 43–55.
- ^ ” Symbolics (1985) utilisait New Flavors (un modèle d’envoi de messages, comme Java aujourd’hui), Xerox utilisait CommonLoops , Lisp Machine Incorporated utilisait Object Lisp (Bobrow, 1986) et Hewlett-Packard proposait d’utiliser Common Objects (Kempf , 1987). Les groupes se sont affrontés dans le cadre de l’effort de normalisation en cours pour Common Lisp à l’époque et ont finalement opté pour un standard basé sur CommonLoops et New Flavours. p. 108 de Veitch 1998.
- ^ Saveurs pour Allegro CL
- Veitch, Jim (1998). “Une histoire et une description de CLOS”. Dans Salus, Peter H. (éd.). Manuel des langages de programmation, Volume IV: Langages de programmation fonctionnels et logiques (1ère éd.). Édition technique de Macmillan. p. 107–158. ISBN 1-57870-011-6.
Lectures complémentaires
- Moon, David A. (juin 1986). “Programmation orientée objet avec des saveurs” (PDF) . Actes de conférence sur les langages et applications des systèmes de programmation orientés objet . OUPSLA ’86. p. 1–8. doi : 10.1145/28697.28698 . ISBN 978-0-89791-204-4. S2CID 17150741 . Consulté le 17 mars 2022 .
- “Flavors, Technical Report”, Laboratoire d’intelligence artificielle du MIT , Cambridge (Mass.), 1980
- Daniel Weinreb et David A. Moon , “Flavors: Message Passing in the Lisp Machine” , AI Memo No. 602, novembre 1980, MIT AI Lab