フレーバー(プログラミング言語)

Flavors [ 1 ]は、 MIT人工知能研究所ハワード・キャノンLispマシンとそのプログラミング言語Lisp Machine Lispのために開発した、 Lispの初期のオブジェクト指向拡張です。Mixin組み込んだ最初のプログラミング言語として知られています。[ 2 ] SymbolicsはこれをLispマシンに採用し、最終的にNew Flavorsへと発展させました。オリジナルとNew Flavorsはどちらもメッセージパッシング型のオブジェクト指向モデルでした。これはCommon Lisp Object System (CLOS)の開発に大きな影響を与えました。 [ 3 ]

フレーバーの実装はCommon Lispでも利用可能である。[ 4 ]

新しいフレーバーは、メッセージの送信を汎用関数の呼び出しに置き換えました。

フレーバーは、デフォルトのメソッドの組み合わせ ( と呼ばれる) を持つ:beforeおよびデーモンを提供します。 :after:daemon

フレーバーとCLOS機能の比較

Flavors は CLOS にはないいくつかの機能を提供します。

  • ラッパー
  • メソッド内の変数を使用してスロットに自動的に語彙アクセスします。
  • 内部フレーバー関数、マクロ、およびサブスト。
  • 自動的に生成されたコンストラクター。
  • DEFFLAVORオプション: :required-methods、、:abstract-flavor:mixture
  • SENDメッセージを送信する機能。

CLOS は、Flavors にはない次の機能を提供します。

  • マルチメソッド
  • 個々のオブジェクトに特化したメソッド ( 経由EQL)。
  • Common Lisp 型 (シンボル、整数など) に特化したメソッド。
  • def-struct 型に特化したメソッド。
  • クラススロット。

用語

フレーバー用語
フレーバークローズ
風味クラス
コンポーネントフレーバースーパークラス
依存的な風味サブクラス
地元の食材の風味直接スーパークラス
地域依存のフレーバー直接のサブクラス
ジェネリック関数ジェネリック関数
複合法効果的な方法
方法オプションメソッド修飾子
実例実例
インスタンス変数スロット
風味成分の順序クラス優先順位リスト

参考文献

  1. ^ハワード・キャノン『フレーバーズ:オブジェクト指向プログラミングへの非階層的アプローチ』Symbolics Inc.、1982年
  2. ^ Thompson, CW, Ross, KM, Tennant, HR, Saenz, RM 1983「データベースへの使いやすいメニューベースの自然言語インターフェースの構築」46ページ。第9回国際超大規模データベース会議(1983年10月31日~11月2日)議事録。M. SchkolnickおよびC. Thanos編『超大規模データベース』Morgan Kaufmann Publishers、サンフランシスコ、カリフォルニア州、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に基づく標準に落ち着きました。」Veitch 1998の108ページ。
  4. ^ Allegro CLのフレーバー
  • Veitch, Jim (1998). 「CLOSの歴史と解説」. Salus, Peter H. (編). 『プログラミング言語ハンドブック 第4巻:関数型プログラミング言語と論理型プログラミング言語』(第1版). Macmillan Technical Publishing. pp.  107– 158. ISBN 1-57870-011-6

さらに読む