vieweditattachhistoryswikistopchangessearchhelp

SIMULA 67

のちに SIMULA 。 オブジェクトを明示的に導入したプログラミング言語の原点。ここで、オブジェクト指向を…ではない点に注意。それがクラス指向、あるいはメッセージ指向のいずれを意図したものであっても、考え方もそれを表わす言葉としてすらも SIMULA の開発者によって、当時はまだ認識されていなかった。

SIMULA 67 は、 ALGOL 60 を拡張してシミュレーション用言語として作られた SIMULA I を前身に持つが、自身は汎用言語。SIMULA I にはすでに「プロセス」と「アクション」という機能があったが、それをあらためて「クラス」と「オブジェクト」と呼ぶようになったのは SIMULA 67 から。クラスとオブジェクト(プロセスとアクション)は、当初、疑似並列処理を実現するための機構で、処理を中断/完了した後もローカル変数の内容を保持できるような「ブロック」と呼ばれる仕組みの模索から始まって、それを発展させたもの。

SIMULA のクラスとオブジェクトのうち、クラスを使うことでユーザーが自由に必要なデータ型を定義できる点に着目し、抽象データ型という考え方をまとめたのがリスコフ(CLU)。それだけでは不十分で、継承と動的結合も必要であるとした結果(カプセル化、継承、多態性)、現在主流のオブジェクト指向プログラミングのスタイル(クラス指向)を確立したのがストラウストラップ(C++)。その流れとはまったく別に、クラスよりオブジェクトのほうに重きを置き、メッセージングというアイデア(メッセージ指向)を具現化したのがケイ(Smalltalk)…といった関係にある。

つまり、クラスもオブジェクトも、はじめにオブジェクト指向ありきで必要にせまられて作られた言語機能ではなく、オブジェクト指向(抽象データ型クラス指向メッセージ指向)という考え方のほうが、この SIMULA のクラスやオブジェクトをとっかかりにして作られた、ということになる。
--sumim

参考:



このページを編集 (1952 bytes)


Congratulations! 以下の 6 ページから参照されています。

This page has been visited 6658 times.