Oberon

歴史

NS32032ベースのCeresワークステーションプロジェクトの一部として開発された。同名のプログラミング言語で記述されている。基本システムはニクラウス・ヴィルトと Jürg Gutknecht が設計・実装し、その全貌が彼らの著書 "Project Oberon" で詳述されている。その後、チューリッヒ工科大学のチームにより他のハードウェアにも移植され、雑誌などにも紹介されている。

ユーザインタフェース

Oberonのユーザインタフェースはテキストユーザインタフェース (TUI) だった。GUIの便利さとCUIの記述能力を兼ね備えており、Oberon 言語の命名規則と密接に関連している。画面に表示されるあらゆるテキストを編集可能で、それをコマンド入力に使うことができる。コマンドプロンプトのようなものは必要とされない。一般的なCUIとは大幅に異なるが、そのTUIは非常に効率的で強力である。ただし、慣れるまで時間がかかる。その使用法とプログラミングについては Martin Reiser の著書 "The Oberon System" が詳しい。この方式は後のオペレーティングシステムに影響を与えたとは言えないが、ロブ・パイクのAcme (Plan 9) に強い影響を与えた。Macintosh Programmer's Workshop のインタフェースと似ているが、Oberonはヴィルトの以前のプロジェクトであるLilithに基づいており、MacintoshとLilithはどちらも Alto に触発されたものだという経緯がある。

バージョン

Oberon OS は、一般に無料でいくつかのプラットフォーム上で動作する。非常に小型である。Oberon 言語コンパイラ、各種ユーティリティ、ウェブブラウザ、TCP/IPネットワーク、GUIなど全てのパッケージを入れても 3.5インチフロッピーディスク1枚に納まる。IBM PC互換機で動作するバージョンを Native Oberon と呼ぶ。
ヴィルトの開発したオリジナルに近いバージョンとして Oberon V4 がある。これもチューリッヒ工科大学で開発されたが、最新版はリンツ大学にある。ただし、2000年以降開発が停止している。
チューリッヒ工科大学は近年、動的オブジェクトとOSの並行性の研究に注力しており、新たな Active Object Oberon という言語とそれを使ったOSをリリースした。そのOSは当初 AOS と呼ばれていたが、現在は A2 または Bluebottle と呼称されている。チューリッヒ工科大学のサイトでは大部分のソースと共にこれを公開している。現在のバージョンではIA-32のデュアルプロセッサまでと、StrongARMファミリをサポートしている。
チューリッヒ工科大学の Native Systems Group では、Oberon をベースとした用途限定のOSである stailaOS を開発した。これは、リアルタイム解析、高速商取引システム、主記憶のみで動作するERPシステムなどが用途とされている。

Native Oberon

Native Oberon はx86ベースのPC上で動作するOberonである。ハードウェアに対する要求仕様が小さい（Pentium 133MHz、ハードディスクは100MB、表示は1024×768ピクセル、オプションでスリーコム製ネットワークカード）。フロッピーディスク1枚で基本システムを動作させることが可能で、追加のソフトウェアはネットワーク経由でインストールできる。Native Oberon もシステム全体がOberon言語で書かれている。

設計目標

Oberon は安全性を指向した言語である。配列境界チェック、ガベージコレクション、強い型チェックなどの機能がある。これらはロジックのバグを早期に発見することを目的としており、プログラム実行時に顕在するバグの数を劇的に減少させる。しかし、他の言語がバグ削減を目的として採用している機能が実装されていない（例えば、enum型、プログラマ指定の整数範囲型）。結果として数式的部分に関してはプログラマが注意しなければならない。

Visibility Flag

グローバル変数、型、定数、プロシージャはデフォルトでは宣言しているモジュール内でのみ可視である。Visibility Flag をつけることで他のモジュールからも見えるようにできる。Visibility Flag とは例えばリードライト許可の場合アスタリスク(*)である。フラグをうっかり忘れた場合の安全を考慮してデフォルトが選ばれている。
ローカル変数、型、定数、プロシージャは常に宣言しているプロシージャ内でのみ可視である。

参照渡しと値渡し

プロシージャの引数に関して2つのモードが可能である。値渡し（Call by value）では引数に式を使用でき、式を評価した結果の値がプロシージャに渡される。参照渡し（Call by reference）では変数を渡すことだけが許されるので、その変数の値はプロシージャ内で変更される可能性がある。参照渡しにする場合、プロシージャの定義で引数に VAR という予約語を付与する。

Oberon

OberonはOSとともにチューリッヒ工科大学などで公開されている。

Oberon-2

1991年に一部改訂を行い、オブジェクト指向を取り入れFOR文を復活させたものがOberon-2であり、現在最も一般的実装となっている。Native Oberon と呼ばれるOSを含めた実装はPC上で動作する。.NET向けに若干の拡張を加えたバージョンもチューリッヒ工科大学で開発されている。
チューリッヒ工科大学が保守しているOberon-2コンパイラとしては、Windows版、Linux版、OS X 版がある。他にもAtari TOSやAmigaOSといった各種OSで動作するバージョンがある。
イギリスのマンチェスター大学の Stephen J Bevan は、LexとYaccでヴィルトらの仕様に基づいたOberon-2の字句解析器と構文解析器を作成した。最新バージョンは1.4である。

Oberon-07

ヴィルトが2007年に定義したのがOberon-07である。Oberon-2ではなく本来のOberonに基づいており、2011年に仕様が改訂されている。主な変更点は、数値型の明示的変換関数（FLOOR、FLTなど）を必ず使うようにした点、LOOP文とEXIT文を排除した点、WHILE文が拡張された点、RETURN文が関数の最後にのみ存在するようにした点、インポートされた変数や構造のある引数がリードオンリーとなった点、配列をCOPY文を使わずに代入できるようになった点などである。
コンパイラの実装としては、32ビットWindows版 Oberon-07M、32ビットARM版、Cortex-M3マイクロコントローラ版、ヴィルトが設計したRISCプロセッサを Xilinx FPGA Spartan-3 ボードに実装したもので動作する版がある。

Active Oberon

Active Oberon はOberonの別の拡張版で、オブジェクト指向を取り入れ（オブジェクト単位のアクセス制限など）、表明、プリエンプティブな優先度付きスケジューリング、メソッドの文法の若干の変更などがなされている。オブジェクトはスレッドまたはプロセスとして機能させることもできる。対応するOSはA2またはBluebottleと呼ばれる。

関連言語

Oberon系統の言語開発は継続している。Oberon-2をさらに発展させたのが Component Pascal で、チューリッヒ工科大学からスピンオフしたオベロン・マイクロシステムズやクイーンズランド工科大学がサポートしている。他にも特定分野向けにOberonの精神を受け継いだ言語として、LagoonaやObliqがある。
チューリッヒ工科大学にて、.NET環境向けに Zonnon という新言語が開発されている。Oberonの特徴を引き継ぎつつ、Pascalから一部機能を復活させたものだが、文法は異なる。動的オブジェクト、演算子オーバーロード、例外処理などの機能が追加されている。.NET向けに Microsoft Visual Studio のプラグインとして処理系を使用することができる。
Oberon-Vは数値解析向けにOberonを拡張した言語で、特にベクタープロセッサやパイプラインアーキテクチャのスーパーコンピュータでの利用を意図している。元々は小セネカにちなみ Seneca と呼ばれていた。