Flavours , [1] una extensión temprana orientada a objetos de Lisp desarrollada por Howard Cannon en el Laboratorio de Inteligencia Artificial del MIT para la máquina Lisp y su lenguaje de programación Lisp Machine Lisp , fue el primer lenguaje de programación en incluir mixins . [2] Symbolics lo usó para sus máquinas Lisp, y eventualmente lo desarrolló en New Flavors ; tanto el Flavour original como el nuevo eran modelos de OO que pasaban mensajes . Tuvo una gran influencia en el desarrollo del Common Lisp Object System (CLOS). [3]
Las implementaciones de Flavours también están disponibles para Common Lisp . [4]
New Flavors reemplazó el envío de mensajes con llamadas a funciones genéricas .
Flavours ofrece :before
y :after
demonios con la combinación de métodos predeterminada (llamada :daemon
).
Comparación de características de sabores y CLOS
Flavours ofrece algunas características que no se encuentran en CLOS:
- Envoltorios
- Acceso léxico automático a las ranuras utilizando variables dentro de los métodos.
- Funciones de sabor internas, macros y substs.
- Constructores generados automáticamente.
DEFFLAVOR
Opciones::required-methods
,:abstract-flavor
,:mixture
.SEND
función para enviar mensajes.
CLOS ofrece las siguientes características que no se encuentran en Flavors:
- Multimétodos
- Métodos especializados en objetos individuales (vía
EQL
). - Métodos especializados en tipos Common Lisp (símbolo, entero, ...).
- Métodos especializados en tipos de def-estructura.
- Espacios de clase.
Terminología
Sabores | CERRAR |
---|---|
sabor | clase |
sabor del componente | superclase |
sabor dependiente | subclase |
sabor del componente local | superclase directa |
sabor dependiente local | subclase directa |
función genérica | función genérica |
método combinado | método efectivo |
opción de método | calificador de método |
ejemplo | ejemplo |
Instancia variable | espacio |
pedido de componentes de sabor | lista de precedencia de clases |
Referencias
- ^ Howard Cannon, Flavours: Un enfoque no jerárquico de la programación orientada a objetos , Symbolics Inc., 1982
- ^ página 46 de Thompson, CW, Ross, KM, Tennant, HR y Saenz, RM 1983. "Creación de interfaces de lenguaje natural basadas en menús utilizables para bases de datos". En Actas de la Novena Conferencia Internacional sobre Bases de Datos Muy Grandes (31 de octubre - 2 de noviembre de 1983). M. Schkolnick y C. Thanos, Eds. Bases de datos muy grandes. Morgan Kaufmann Publishers, San Francisco, CA, 43–55.
- ^ " Symbolics (1985) estaba usando New Flavors (un modelo de envío de mensajes, como Java hoy), Xerox usaba CommonLoops , Lisp Machine Incorporated usaba Object Lisp (Bobrow, 1986) y Hewlett-Packard propuso usar Common Objects (Kempf , 1987). Los grupos compitieron entre sí en el contexto del esfuerzo de estandarización que se estaba llevando a cabo para Common Lisp en ese momento y finalmente se establecieron en un estándar basado en CommonLoops y New Flavors ". pag. 108 de Veitch 1998.
- ^ Sabores para Allegro CL
- "Una historia y descripción de CLOS", por Jim Veitch. Páginas 107–158 del Manual de lenguajes de programación, Volumen IV: Lenguajes de programación lógicos y funcionales , ed. Peter H. Salus . 1998 (1ª edición), Macmillan Technical Publishing; ISBN 1-57870-011-6
Otras lecturas
- "Nuevos sabores", David A. Moon , S Keene - Actas de ACM Conf. Programación Orientada a Objetos , Sistemas (Conferencia ACM 1986 OOPSLA), 1986
- " Programación orientada a objetos con sabores ", David A. Moon . Conferencia sobre Lenguajes y Aplicaciones de Sistemas de Programación Orientados a Objetos 1986, ISSN 0362-1340
- "Flavors, Technical Report", Laboratorio de Inteligencia Artificial del MIT , Cambridge (Mass.), 1980
- Daniel Weinreb y David A. Moon , "Flavors: Message Passing in the Lisp Machine" , AI Memo No. 602, noviembre de 1980, MIT AI Lab