Ароматизаторы (язык программирования) - Flavors (programming language)

Flavors , раннее объектно-ориентированное расширение Lisp, разработанное Говардом Кэнноном из лаборатории искусственного интеллекта Массачусетского технологического института для машины Lisp и ее языка программирования Lisp Machine Lisp , был первым языком программирования, который включал миксины . Symbolics использовала его для своих машин Lisp и в конечном итоге разработала его в New Flavors ; и оригинальный, и новый Flavors были моделями OO с передачей сообщений . Это оказало огромное влияние на развитие объектной системы Common Lisp (CLOS).

Реализации Flavors также доступны для Common Lisp .

В New Flavors отправка сообщений заменена вызовом общих функций .

Предлагает варианты :before и :after демоны с комбинацией методов по умолчанию (называемой :daemon ).

Сравнение вкусов и характеристик CLOS

Flavors предлагает несколько функций, которых нет в CLOS:

  • Обертки
  • Автоматический лексический доступ к слотам с использованием переменных внутри методов.
  • Внутренние функции аромата, макросы и подстановки.
  • Автоматически сгенерированные конструкторы.
  • DEFFLAVOR опции: :required-methods , :abstract-flavor , :mixture .
  • SEND функция отправки сообщений.

CLOS предлагает следующие функции, которых нет в Flavors:

  • Мультиметоды
  • Методы, специализированные на отдельных объектах (через EQL ).
  • Методы, специализирующиеся на типах Common Lisp (символ, целое число, ...).
  • Методы, специализирующиеся на типах def-struct.
  • Слоты классов.

Терминология

Терминология ароматизаторов
Ароматизаторы ЗАКРЫТЬ
вкус учебный класс
компонент ароматизатора суперкласс
зависимый аромат подкласс
ароматизатор местного компонента прямой суперкласс
местный вкус прямой подкласс
общая функция общая функция
комбинированный метод эффективный метод
вариант метода квалификатор метода
пример пример
переменная экземпляра слот
заказ вкусовых компонентов список приоритетов классов

Рекомендации

  1. ^ Ховард Кэннон, Flavors: неиерархический подход к объектно-ориентированному программированию , Symbolics Inc., 1982
  2. ^ стр. 46 Томпсона, К.В., Росс, К.М., Теннант, Х.Р., и Саенз, Р.М. 1983. «Создание удобных интерфейсов на основе меню на естественном языке для баз данных». В материалах 9-й международной конференции по очень большим базам данных (31 октября - 2 ноября 1983 г.). М. Школьник и К. Танос, ред. Очень большие базы данных. Издательство Морган Кауфманн, Сан-Франциско, Калифорния, 43–55.
  3. ^ « 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.
  4. ^ Ароматизаторы для Allegro CL
  • «История и описание CLOS» Джима Вейтча. Страницы 107–158 Справочника по языкам программирования, Том IV: Функциональные и логические языки программирования , изд. Питер Х. Салус . 1998 (1-е издание), Macmillan Technical Publishing; ISBN   1-57870-011-6

дальнейшее чтение