Sabores (linguagem de programação) - Flavors (programming language)
Flavors , uma extensão orientada a objeto para Lisp desenvolvida por Howard Cannon no Laboratório de Inteligência Artificial do MIT para a máquina Lisp e sua linguagem de programação Lisp Machine Lisp , foi a primeira linguagem de programação a incluir mixins . A Symbolics o usou para suas máquinas Lisp e, eventualmente, o desenvolveu em New Flavors ; tanto o Flavors original quanto o novo eram modelos OO que passavam mensagens . Foi extremamente influente no desenvolvimento do Common Lisp Object System (CLOS).
Implementações de sabores também estão disponíveis para Common Lisp .
New Flavors substituiu o envio de mensagens pela chamada de funções genéricas .
Ofertas de sabores :before
e :after
daemons com a combinação de método padrão (chamada :daemon
).
Comparação de sabores e recursos CLOS
O Flavours oferece alguns recursos não encontrados no CLOS:
- Wrappers
- Acesso léxico automático a slots usando variáveis dentro de métodos.
- Funções de sabor internas, macros e substs.
- Construtores gerados automaticamente.
-
DEFFLAVOR
opções::required-methods
,:abstract-flavor
,:mixture
. -
SEND
função de envio de mensagens.
CLOS oferece os seguintes recursos não encontrados no Flavors:
- Métodos multimétodos
- Métodos especializados em objetos individuais (via
EQL
). - Métodos especializados em tipos Common Lisp (símbolo, inteiro, ...).
- Métodos especializados em tipos de def-struct.
- Slots de classe.
Terminologia
Sabores | CLOS |
---|---|
sabor | aula |
sabor componente | superclasse |
sabor dependente | subclasse |
sabor do componente local | superclasse direta |
sabor dependente local | subclasse direta |
função genérica | função genérica |
método combinado | método eficaz |
opção de método | qualificador de método |
instância | instância |
variável de instância | fenda |
pedido de componentes de sabor | lista de precedência de classe |
Referências
- ^ Howard Cannon, Flavors: A non-hierarchical approach to object-oriented programming , Symbolics Inc., 1982
- ^ pg 46 de Thompson, CW, Ross, KM, Tennant, HR, e Saenz, RM 1983. "Building Usable Menu-Based Natural Language Interfaces To Databases". In Proceedings of the 9th International Conference on Very Large Data Bases (31 de outubro - 2 de novembro de 1983). M. Schkolnick e C. Thanos, Eds. Bases de dados muito grandes. Morgan Kaufmann Publishers, San Francisco, CA, 43–55.
- ^ " Symbolics (1985) estava usando New Flavors (um modelo de envio de mensagem, como Java hoje), a Xerox estava usando CommonLoops , Lisp Machine Incorporated estava usando Object Lisp (Bobrow, 1986), e Hewlett-Packard propôs usar Common Objects (Kempf , 1987). Os grupos competiam entre si no contexto do esforço de padronização em andamento para Common Lisp na época e, finalmente, se estabeleceram em um padrão baseado em CommonLoops e New Flavors. " p. 108 da Veitch 1998.
- ^ Sabores para Allegro CL
- "A History and Description of CLOS", de Jim Veitch. Páginas 107–158 do Manual de Linguagens de Programação, Volume IV: Linguagens de Programação Funcional e Lógica , ed. Peter H. Salus . 1998 (1ª edição), Macmillan Technical Publishing; ISBN 1-57870-011-6
Leitura adicional
- "New Flavors", David A. Moon , S Keene - Proceedings of ACM Conf. Programação Orientada a Objetos , Sistemas (ACM 1986 OOPSLA Conference), 1986
- " Programação orientada a objetos com sabores ", David A. Moon . Conferência sobre Linguagens e Aplicações de Sistemas de Programação Orientada a Objetos 1986, ISSN 0362-1340
- "Flavors, Technical Report", MIT Artificial Intelligence Laboratory , Cambridge (Massachusetts), 1980
- Daniel Weinreb e David A. Moon , "Flavors: Message Passing in the Lisp Machine" , AI Memo No. 602, novembro de 1980, Laboratório de AI do MIT