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

Terminologia de sabores
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

  1. ^ Howard Cannon, Flavors: A non-hierarchical approach to object-oriented programming , Symbolics Inc., 1982
  2. ^ 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.
  3. ^ " 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.
  4. ^ 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