Flavors , [1] раннее объектно-ориентированное расширение Lisp, разработанное Говардом Кэнноном в лаборатории искусственного интеллекта Массачусетского технологического института для машины Lisp и ее языка программирования Lisp Machine Lisp , был первым языком программирования, который включал миксины . [2] Symbolics использовала его в своих машинах на Лиспе и, в конечном итоге, доработала его до New Flavors ; и оригинальный, и новый Flavors были моделями OO с передачей сообщений . Это оказало огромное влияние на развитие объектной системы Common Lisp (CLOS). [3]
Реализации Flavors также доступны для Common Lisp . [4]
В New Flavors отправка сообщений заменена вызовом общих функций .
Предлагает варианты :before
и :after
демоны с комбинацией методов по умолчанию (называемой :daemon
).
Сравнение вкусов и функций CLOS [ править ]
Flavors предлагает несколько функций, которых нет в CLOS:
- Обертки
- Автоматический лексический доступ к слотам с использованием переменных внутри методов.
- Внутренние функции аромата, макросы и подстановки.
- Автоматически сгенерированные конструкторы.
DEFFLAVOR
опции::required-methods
,:abstract-flavor
,:mixture
.SEND
функция отправки сообщений.
CLOS предлагает следующие функции, которых нет в Flavors:
- Мультиметоды
- Методы, специализированные на отдельных объектах (через
EQL
). - Методы, специализирующиеся на типах Common Lisp (символ, целое число, ...).
- Методы, специализирующиеся на типах def-struct.
- Слоты классов.
Терминология [ править ]
Ароматизаторы | ЗАКРЫТЬ |
---|---|
вкус | класс |
компонент ароматизатора | суперкласс |
зависимый аромат | подкласс |
ароматизатор местного компонента | прямой суперкласс |
местный вкус | прямой подкласс |
общая функция | общая функция |
комбинированный метод | эффективный метод |
вариант метода | квалификатор метода |
пример | пример |
переменная экземпляра | слот |
заказ вкусовых компонентов | список приоритетов классов |
Ссылки [ править ]
- ^ Ховард Кэннон, Flavors: неиерархический подход к объектно-ориентированному программированию , Symbolics Inc., 1982
- ^ стр. 46 Томпсона, К.В., Росс, К.М., Теннант, Х.Р., и Саенс, Р.М. 1983. «Создание удобных интерфейсов на основе меню на естественном языке для баз данных». В материалах 9-й международной конференции по очень большим базам данных (31 октября - 2 ноября 1983 г.). М. Школьник и К. Танос, ред. Очень большие базы данных. Издательство Морган Кауфманн, Сан-Франциско, Калифорния, 43–55.
- ^ « Symbolics (1985) использовала New Flavors (модель отправки сообщений, такая как Java сегодня), Xerox использовала CommonLoops , Lisp Machine Incorporated использовала Object Lisp (Bobrow, 1986), а Hewlett-Packard предлагала использовать Common Objects (Kempf , 1987). Группы соперничали друг с другом в контексте усилий по стандартизации Common Lisp в то время и, наконец, остановились на стандарте, основанном на CommonLoops и New Flavors ». п. 108 Veitch 1998.
- ^ Ароматизаторы для Allegro CL
- «История и описание CLOS» Джима Вейтча. Страницы 107–158 Справочника по языкам программирования, Том IV: Функциональные и логические языки программирования , изд. Питер Х. Салус . 1998 (1-е издание), Macmillan Technical Publishing; ISBN 1-57870-011-6
Дальнейшее чтение [ править ]
- «Новые вкусы», Дэвид А. Мун , С. Кин - Труды ACM Conf. Объектно-ориентированное программирование , системы (конференция ACM 1986 OOPSLA), 1986
- « Объектно-ориентированное программирование со вкусами », Дэвид А. Мун . Конференция по языкам и приложениям систем объектно-ориентированного программирования 1986, ISSN 0362-1340
- "Ароматизаторы, технический отчет", Лаборатория искусственного интеллекта Массачусетского технологического института , Кембридж (Массачусетс), 1980 г.
- Дэниел Вайнреб и Дэвид А. Мун , «Ароматизаторы: передача сообщений в Lisp-машине» , AI Memo No. 602, ноябрь 1980, MIT AI Lab.