Язык программирования
Flavors , [1] раннее объектно-ориентированное расширение Lisp , разработанное Говардом Кэнноном в Лаборатории искусственного интеллекта Массачусетского технологического института для машины Lisp и ее языка программирования Lisp Machine Lisp , был первым языком программирования, включавшим примеси . [2] Компания Symbolics использовала его для своих машин Lisp и в конечном итоге разработала его в New Flavors ; как исходный, так и новый вариант представляли собой объектно-ориентированные модели передачи сообщений . Он оказал огромное влияние на разработку объектной системы Common Lisp (CLOS). [3]
Реализации ароматов также доступны для Common Lisp . [4]
Новые варианты заменили отправку сообщений вызовом универсальных функций .
Расширяет предложения :before
и :after
демоны с помощью комбинации методов по умолчанию (называемой :daemon
).
Сравнение вкусов и функций CLOS
Flavors предлагает несколько функций, которых нет в CLOS:
- Обертки
- Автоматический лексический доступ к слотам с использованием переменных внутри методов.
- Внутренние функции вкуса, макросы и подстановки.
- Автоматически генерируемые конструкторы.
DEFFLAVOR
параметры: :required-methods
, :abstract-flavor
, :mixture
.SEND
функция отправки сообщений.
CLOS предлагает следующие функции, которых нет во Flavors:
- Мультиметоды
- Методы, специализирующиеся на отдельных объектах (через
EQL
). - Методы, специализирующиеся на типах Common Lisp (символ, целое число,...).
- Методы, специализирующиеся на типах def-struct.
- Классовые слоты.
Терминология
Рекомендации
- ^ Говард Кэннон, Ароматы: неиерархический подход к объектно-ориентированному программированию, Symbolics Inc., 1982.
- ^ стр. 46 Томпсона, К.В., Росс, К.М., Теннанта, Х.Р. и Саенс, Р.М., 1983. «Создание удобных для использования интерфейсов естественного языка на основе меню для баз данных». В материалах 9-й международной конференции по очень большим базам данных (31 октября - 2 ноября 1983 г.). М. Школьник и К. Танос, ред. Очень большие базы данных. Издательство Morgan Kaufmann, Сан-Франциско, Калифорния, 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 Вейча 1998 г.
- ^ Ароматы для Allegro CL
- Вейч, Джим (1998). «История и описание CLOS». В Салусе, Питер Х. (ред.). Справочник по языкам программирования, том IV: Языки функционального и логического программирования (1-е изд.). Техническое издательство Macmillan. стр. 107–158. ISBN 1-57870-011-6.
дальнейшее чтение
- Мун, Дэвид А. (июнь 1986 г.). «Объектно-ориентированное программирование с разными вкусами» (PDF) . Материалы конференции «Языки и приложения объектно-ориентированных систем программирования» . УПСЛА '86. стр. 1–8. дои : 10.1145/28697.28698. ISBN 978-0-89791-204-4. S2CID 17150741 . Проверено 17 марта 2022 г.
- «Ароматы, технический отчет», Лаборатория искусственного интеллекта Массачусетского технологического института , Кембридж (Массачусетс), 1980 г.
- Дэниел Вайнреб и Дэвид А. Мун , «Вкусы: передача сообщений в машине Lisp», AI Memo № 602, ноябрь 1980 г., Лаборатория искусственного интеллекта Массачусетского технологического института.