Flavors (programming language)

Flavors (programming language)

Flavors[1], an early object-oriented extension to Lisp developed by Howard Cannon at the MIT Artificial Intelligence Laboratory for the Lisp machine and its programming language Lisp Machine Lisp, was the first programming language to include mixins.[2] Symbolics used it for its Lisp machines, and eventually developed it into New Flavors; both the original and new Flavors were message passing OO models. It was hugely influential in the development of the Common Lisp Object System (CLOS).[3]

Implementations of Flavors are also available for Common Lisp.[4]

New Flavors replaced message sending with calling generic functions.

Flavors offers :before and :after daemons with the default method combination (called :daemon).

Flavors offers a few features not found in CLOS:

  • Wrappers
  • Automatic lexical access to slots using variables within methods.
  • Internal flavor functions, macros and substs.
  • Automatically generated constructors.
  • DEFFLAVOR options: :required-methods, :abstract-flavor, :mixture.
  • SEND function for sending messages.

CLOS offers the following features not found in Flavors:

  • Multimethods
  • Methods specialized on individual objects (via EQL).
  • Methods specialized on Common Lisp types (symbol, integer, ...).
  • Methods specialized on defstruct types.
  • Class slots.

Terminology

Flavors terminology
Flavors CLOS
flavor class
component flavor superclass
dependent flavor subclass
local component flavor direct superclass
local dependent flavor direct subclass
generic function generic function
combined method effective method
method option method qualifier
instance instance
instance variable slot
ordering of flavor components class precedence list

References

  1. ^ Howard Cannon, Flavors: A non-hierarchical approach to object-oriented programming, Symbolics Inc., 1982
  2. ^ pg 46 of Thompson, C. W., Ross, K. M., Tennant, H. R., and Saenz, R. M. 1983. "Building Usable Menu-Based Natural Language Interfaces To Databases". In Proceedings of the 9th international Conference on Very Large Data Bases (October 31 - November 2, 1983). M. Schkolnick and C. Thanos, Eds. Very Large Data Bases. Morgan Kaufmann Publishers, San Francisco, CA, 43-55.
  3. ^ "Symbolics (1985) was using New Flavors (a message-sending model, like Java today), Xerox was using CommonLoops, Lisp Machine Incorporated was using Object Lisp (Bobrow, 1986), and Hewlett-Packard proposed using Common Objects (Kempf, 1987). The groups vied with each other in the context of the standardization effort going on for Common Lisp at the time and finally settled on a standard based on CommonLoops and New Flavors." pg 108 of Veitch 1998.
  4. ^ Flavors for Allegro CL
  • "A History and Description of CLOS", by Jim Veitch. Pages 107-158 of Handbook of Programming Languages, Volume IV: Functional and Logic Programming Languages, ed. Peter H. Salus. 1998 (1st edition), Macmillian Technical Publishing; ISBN 1-57870-011-6

Further reading

  • "New Flavors", David Moon, S Keene - Proceedings of ACM Conf. Object-Oriented Programming, Systems (ACM 1986 OOPSLA Conference), 1986
  • "Object-oriented programming with flavors", David A. Moon. Conference on Object Oriented Programming Systems Languages and Applications 1986, ISSN 0362-1340
  • Flavors, Technical Report, MIT Artificial Intelligence Laboratory, Cambridge (Mass.), 1980
  • Daniel Weinreb and David Moon, Flavors: Message Passing in the Lisp Machine, A.I. Memo No. 602, November 1980, MIT AI Lab



Wikimedia Foundation. 2010.

Игры ⚽ Нужна курсовая?

Look at other dictionaries:

  • Lisp (programming language) — Infobox programming language name = Lisp paradigm = multi paradigm: functional, procedural, reflective generation = 3GL year = 1958 designer = John McCarthy developer = Steve Russell, Timothy P. Hart, and Mike Levin latest release version =… …   Wikipedia

  • Oz (programming language) — Oz Paradigm(s) multi paradigm: logic, functional, imperative, object oriented, constraint, distributed, concurrent Appeared in 1991 Designed by Gert Smolka, his students Developer Mozart …   Wikipedia

  • Euphoria (programming language) — Euphoria openEuphoria logo Paradigm(s) Imperative, procedural Appeared in 1993 Designed by Jeremy Cowgar, Robert Craig (original), Matt Lewis, Derek Parnell …   Wikipedia

  • Ruby (programming language) — ] . IronRuby [cite web url = http://rubyforge.org/pipermail/ironruby core/2008 May/001909.html title = IronRuby / Rails Question author = John Lam date=2008 05 25 accessdate = 2008 05 25] [cite web url = http://www.iunknown.com/2008/05/ironruby… …   Wikipedia

  • Text Executive Programming Language — In 1979, Honeywell Information Systems announced a new programming language for their time sharing service named TEX, an acronym for the Text Executive processor. TEX was a first generation scripting language, developed around the time of AWK and …   Wikipedia

  • Object-oriented programming — Programming paradigms Agent oriented Automata based Component based Flow based Pipelined Concatenative Concurrent computing …   Wikipedia

  • List of programming languages — Programming language lists Alphabetical Categorical Chronological Generational The aim of this list of programming languages is to include all notable programming languages in existence, both those in current use and historical ones, in… …   Wikipedia

  • Language Integrated Query — LINQ redirects here. For the card game, see Linq (card game). Language Integrated Query Influenced by SQL, Haskell Language Integrated Query (LINQ, pronounced link ) is a Microsoft .NET Framework component that adds native data querying… …   Wikipedia

  • Data Manipulation Language — A data manipulation language (DML) is a family of syntax elements similar to a computer programming language used for inserting, deleting and updating data in a database. Performing read only queries of data is sometimes also considered a… …   Wikipedia

  • Inter-Language Unification — or ILU is a method for computer systems to exchange data, bridging differences in the way systems represent the various kinds of data. Even if two systems run on the same computer, or on identical computer hardware, many differences arise from… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”