パラダイム | 命令型、構造化、モジュラー、オブジェクト指向 |
---|---|
登場時期 | 1991年 |
設計者 | ニクラウス・ヴィルト、Hanspeter Mössenböck |
型付け | 強い静的型付け |
影響を受けた言語 | Oberon、 Modula-2、 Object Oberon |
影響を与えた言語 | Oberon-07、 Zonnon、 Active Oberon, Component Pascal, Go, Nim |
プラットフォーム | Windows、Linux、Solaris、MacOS |
Oberon-2 とは、プログラミング言語 Oberon を拡張し、オブジェクト指向的なコンセプトを取り入れた言語である。
1991年、チューリッヒ工科大学のニクラウス・ヴィルトと Hanspeter Mössenböck(現リンツ大学システムソフトウェア研究所)が開発した。Oberon-2 は Oberon の上位互換である。Oberon-2 は Object Oberon(Oberon にオブジェクト指向のコンセプトを導入した最初の試み)の再設計でもあった。
Oberon-2 は Oberon から限定されたリフレクションとインタフェースなどを持たない単一継承(型拡張)を受け継いでいるが、効果的な仮想メソッド(型束縛プロシージャ)を追加している。メソッド呼び出しは、C++のような仮想メソッドテーブルを使って実行時に確定する。
Smalltalk などの完全なオブジェクト指向言語に比べると、Oberon-2 の基本データ型はオブジェクトになっておらず、クラスもオブジェクトではなく、多くの操作がメソッドではないし、メッセージパッシングの概念もなく、ポリモーフィズムも限定的である(SmalltalkやRubyのようなダックタイピングがなく、Javaのようなインタフェースも定義できない)。オブジェクト/クラスレベルでのカプセル化もサポートしていないが、モジュールをその目的で使用することができる。
Oberon-2 のリフレクションはメタオブジェクトを使わず、実行ファイル内に含まれる型記述子を単に読み、それが型やプロシージャを定義しているモジュールに渡される。その構造体の形式が言語レベルで渡されるなら(例えば Oberon System 3 がそうである)、ライブラリレベルでのリフレクションの実装が可能である。従って、言語コードを全く変えずにライブラリレベルでほとんど全てを実行することも可能である。実際、Oberon System 3 は言語レベルとライブラリレベルのリフレクションを多用している。