Smaki (język programowania) - Flavors (programming language)
Flavours , wczesne zorientowane obiektowo rozszerzenie Lisp, opracowane przez Howarda Cannona w Laboratorium Sztucznej Inteligencji MIT dla maszyny Lisp i jej języka programowania Lisp Machine Lisp , było pierwszym językiem programowania, który zawierał mixins . Symbolics użył go w swoich maszynach Lisp i ostatecznie przekształcił go w Nowe Smaki ; zarówno oryginalne, jak i nowe Smaki były przesłaniem przekazującym modele OO. Miał ogromny wpływ na rozwój Common Lisp Object System (CLOS).
Implementacje Flavours są również dostępne dla Common Lisp .
Nowe Flavours zastąpiły wysyłanie wiadomości wywołaniem funkcji ogólnych .
Oferty smaków :before
i :after
demony z domyślną kombinacją metod (tzw :daemon
.).
Porównanie smaków i funkcji CLOS
Flavours oferuje kilka funkcji, których nie ma w CLOS:
- Owijki
- Automatyczny dostęp leksykalny do slotów przy użyciu zmiennych w metodach.
- Wewnętrzne funkcje smakowe, makra i zamienniki.
- Konstruktory generowane automatycznie.
-
DEFFLAVOR
opcje::required-methods
,:abstract-flavor
,:mixture
. -
SEND
funkcja wysyłania wiadomości.
CLOS oferuje następujące funkcje, których nie ma w Smakach:
- Multimethods
- Metody wyspecjalizowane w poszczególnych obiektach (via
EQL
). - Metody wyspecjalizowane w typach Common Lisp (symbol, liczba całkowita, ...).
- Metody wyspecjalizowane w typach def-struct.
- Miejsca na klasy.
Terminologia
Aromaty | ZAMKNIJ |
---|---|
smak | klasa |
smak komponentu | superklasa |
smak zależny | podklasa |
smak składnika lokalnego | bezpośrednia superklasa |
smak zależny od lokalnego | podklasa bezpośrednia |
funkcja ogólna | funkcja ogólna |
metoda łączona | skuteczna metoda |
opcja metody | kwalifikator metody |
instancja | instancja |
zmienna instancji | otwór |
zamawianie składników smakowych | lista pierwszeństwa klas |
Bibliografia
- ^ Howard Cannon, Flavours: A niehierarchiczne podejście do programowania obiektowego , Symbolics Inc., 1982
- ^ str. 46 w Thompson, CW, Ross, KM, Tennant, HR i Saenz, RM 1983. „Building Usable Menu-Based Natural Language Interfaces to Databases”. W materiałach z IX międzynarodowej konferencji nt. Bardzo dużych baz danych (31 października - 2 listopada 1983). M. Schkolnick i C. Thanos, wyd. Bardzo duże bazy danych. Morgan Kaufmann Publishers, San Francisco, CA, 43–55.
- ^ " Symbolics (1985) używał New Flavours (model wysyłania wiadomości, jak dziś Java), Xerox korzystał z CommonLoops , Lisp Machine Incorporated korzystał z Object Lisp (Bobrow, 1986), a Hewlett-Packard proponował używanie Common Objects (Kempf , 1987). Grupy rywalizowały ze sobą w kontekście wysiłków normalizacyjnych prowadzonych w tamtym czasie dla Common Lisp i ostatecznie zdecydowały się na standard oparty na CommonLoops i New Flavours. ” p. 108 z Veitch 1998.
- ^ Aromaty dla Allegro CL
- „Historia i opis zamknięcia”, Jim Veitch. Strony 107–158 Handbook of Programming Languages, tom IV: Functional and Logic Programming Languages , wyd. Peter H. Salus . 1998 (wydanie 1), Macmillan Technical Publishing; ISBN 1-57870-011-6 .Linki zewnętrzne
Dalsza lektura
- „New Flavours”, David A. Moon , S. Keene - Proceedings of ACM Conf. Programowanie obiektowe , systemy (konferencja ACM 1986 OOPSLA), 1986
- „ Programowanie obiektowe ze smakami ”, David A. Moon . Konferencja na temat języków i aplikacji systemów programowania obiektowego 1986, ISSN 0362-1340
- „Flavours, Technical Report”, MIT Artificial Intelligence Laboratory , Cambridge (Mass.), 1980
- Daniel Weinreb i David A. Moon , „Flavours: Message Passing in the Lisp Machine” , AI Memo No. 602, listopad 1980, MIT AI Lab