Ароматы (язык программирования)
Вкусы , [1] раннее объектно-ориентированное расширение Lisp, разработанное Говардом Кэнноном в Лаборатории искусственного интеллекта Массачусетского технологического института для машины Lisp и ее языка программирования Lisp Machine . Lisp был первым языком программирования, включавшим примеси . [2] Компания Symbolics использовала его для своих машин на Лиспе и в конечном итоге разработала его в 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.
- Классовые слоты.
Терминология [ править ]
Вкусы | ЗАКРЫТЬ |
---|---|
вкус | сорт |
вкус компонента | суперкласс |
зависимый вкус | подкласс |
вкус местных компонентов | прямой суперкласс |
местный зависимый вкус | прямой подкласс |
универсальная функция | универсальная функция |
комбинированный метод | эффективный метод |
вариант метода | квалификатор метода |
пример | пример |
переменная экземпляра | слот |
заказ вкусовых компонентов | список приоритета классов |
Ссылки [ править ]
- ^ Говард Кэннон, Flavors: неиерархический подход к объектно-ориентированному программированию , 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 г., Лаборатория искусственного интеллекта Массачусетского технологического института.