「Common Lisp Object System」の版間の差分

削除された内容 追加された内容
Guicho w (会話 | 投稿記録)
編集の要約なし
1行目:
{{lang|en|'''Common Lisp Object System'''}}(コモン リスプ オブジェクトシステム、略称 '''CLOS''')は、ANSI [[Common Lisp]] (CL) の一部をなす[[オブジェクト指向プログラミング]]機能であり、他の類似の言語([[EuLisp]] や [[Emacs Lisp]])にも導入されている<ref>「CLOS は標準規格である。複数のベンダーがCLOSを提供している。CLOS やその一部は他のLISP系言語である EuLisp や EmacsLisp にオブジェクト指向を導入するのに使われている」 p. 110 (Veitch 1998)</ref>。当初アドオンとして提案され、[[ANSI]]の標準に組み込まれた。CLOS は''強い型付け''をもつ(無名クラスは許されない)[[動的プログラミング言語|動的]](実行時に定義を変更できる)オブジェクトシステムであり、[[C++]]や[[Java]]のような静的なオブジェクト指向言語とは大きく異なる。初期のLISPオブジェクトシステム(MIT [[Flavors]] や [[Common LOOPS]])に影響されているが、より汎用的である。
 
LISPにオブジェクト指向を導入することは簡単である。2ページ程度のコードがあれば実現できる(Graham, 1994)。一方、オブジェクト指向LISPを柔軟で拡張性に富んだものに設計するのはより困難であった。CLOS は完全なオブジェクトシステムであり、オブジェクト指向風に実装されている。CLOS のオブジェクト指向実装は CLOS Metaobject Protocol (MOP) と呼ばれ、これによってカスタマイズや拡張が可能となっている。<ref>p. 108 (Veitch 1998)</ref>