Oberon

Oberon: オペレーティングシステムプログラミング言語



Oberon(オベロン)は、スイスのチューリッヒ工科大学でニクラウス・ヴィルト率いるチームによって設計・開発されたオペレーティングシステム(OS)とプログラミング言語の名称です。その名前は、天王星の衛星であるオベロンに由来しています。

Oberon オペレーティングシステム



オペレーティングシステムとしてのOberonは、1980年代後半にチューリッヒ工科大学で、同名のプログラミング言語を用いて開発されました。特徴的なのは、テキストベースのユーザーインターフェース(TUI)を採用している点です。このインターフェースでは、画面上のテキストを直接編集し、それをコマンドとして実行することが可能です。従来のコマンドプロンプトのようなものは存在せず、独特の操作感を持っています。

歴史


Oberon OSは、NS32032ベースのCeresワークステーションプロジェクトの一環として開発されました。基本システムはニクラウス・ヴィルトとJürg Gutknechtによって設計・実装され、その詳細な内容は著書「Project Oberon」で解説されています。その後、他のハードウェアへの移植も行われ、雑誌などでも紹介されました。

ユーザーインターフェース


OberonのTUIは、GUIの使いやすさとCUIの記述能力を兼ね備えることを目指しており、Oberon言語の命名規則と密接に関連しています。画面に表示されるテキストはすべて編集可能で、それをそのままコマンドとして入力できます。この方式は非常に効率的で強力ですが、慣れるまでに時間がかかるという側面もあります。使用法とプログラミングについては、Martin Reiserの著書「The Oberon System」に詳しい解説があります。このTUIは、ロブ・パイクのAcme(Plan 9)に強い影響を与えましたが、他のオペレーティングシステムに広く採用されることはありませんでした。

バージョン


Oberon OSは、一般に無料で利用でき、いくつかのプラットフォームで動作します。特筆すべきはその小型さで、Oberon言語コンパイラ、各種ユーティリティ、ウェブブラウザ、TCP/IPネットワーク、GUIなど、必要なパッケージをすべて含めても3.5インチフロッピーディスク1枚に収まるほどです。IBM PC互換機で動作するバージョンは「Native Oberon」と呼ばれます。

オリジナルのOberonに近いバージョンとして「Oberon V4」があります。これはチューリッヒ工科大学で開発されましたが、最新版はリンツ大学に存在します。ただし、2000年以降は開発が停止しています。近年では、動的オブジェクトとOSの並行性に関する研究が進められており、「Active Object Oberon」という新たな言語とそれを用いたOSがリリースされました。このOSは当初「AOS」と呼ばれていましたが、現在は「A2」または「Bluebottle」と呼ばれています。

チューリッヒ工科大学のNative Systems Groupでは、Oberonをベースとした用途限定のOS「stailaOS」も開発しています。これは、リアルタイム解析、高速商取引システム、主記憶のみで動作するERPシステムなどでの利用が想定されています。

Native Oberon


Native Oberonは、x86ベースのPC上で動作するOberonです。ハードウェアに対する要求が比較的低く、Pentium 133MHz、ハードディスク100MB、1024x768ピクセルの表示環境があれば動作します。基本システムはフロッピーディスク1枚で起動でき、追加ソフトウェアはネットワーク経由でインストールできます。Native Oberonもシステム全体がOberon言語で記述されています。

Oberon プログラミング言語



プログラミング言語としてのOberonは、PascalModula-2を生み出したニクラウス・ヴィルトが、チューリッヒ工科大学のチームと共に1986年に開発しました。これはOSであるOberonの開発の一環として、Modula-2をシステム実装言語として使用した際に、安全な型拡張機能が不足していたために新たに設計されました。当初から、教育目的で言語処理系とOSの詳細を書籍として出版する計画がありました。そのため、新言語は必要最低限の基本機能のみを備えたシンプルな設計となっています。

設計と特徴


Oberonの文法はModula-2によく似ていますが、より簡潔になっています。そのシンプルさから、コンパイラの生成するコードも小さく効率的です。言語仕様はEBNF(拡張バッカス・ナウア記法)で1ページ程度で記述できるほどです。コンパイラも約4000行程度で記述されています。Modula-2との大きな違いとして、ガベージコレクションが組み込まれている点が挙げられます。

Oberonは安全性を重視した言語であり、配列境界チェック、ガベージコレクション、強い型チェックなどの機能を備えています。これらの機能は、プログラム実行時に顕在化するバグを早期に発見し、その数を劇的に減少させることを目的としています。しかし、他の言語が採用しているようなenum型やプログラマ指定の整数範囲型などは実装されていません。そのため、数式的な部分に関してはプログラマが注意する必要があると言えます。

Oberonは、コードの不透明性をなくし、機能を限定することで誤用を防ぎ、ミスを減らすことを目指しました。この考え方はAPL(A Programming Language)と共通する部分がありますが、Oberonは簡略化しすぎて可読性を損なうことがないように設計されています。

議論と反論


Oberonが当初の目標を達成したかどうかについては、意見が分かれるところです。Adaの設計者の一人であるJean Ichbiahは、Oberonの簡略化の方針に異議を唱えました。これは、ヴィルトがAdaを「大きすぎる」と非難したことに対する反論で、「ヴィルトは大きな問題に対して小さな解決策が存在すると考えているが、私はそのような奇跡は信じない。大きな問題には大きな解決策が必要だ」と述べました。Oberonの開発者たちも、Oberonは行き過ぎた簡略化であったと考え、後のOberon-2ではFOR文の文法を復活させました(初期のOberonでは、WHILE文があれば十分だと考え削除されていました)。

機能を省くことで、プログラマが「車輪の再発明」をする必要があるという議論もあります。ライブラリはそのような問題を緩和しますが、言語を習得するということは、標準ライブラリについても学ぶことでもあります。Ichbiahの反論は、機能を標準ライブラリに移動させることによる単純化戦略にも当てはまると考えられます。ヴィルトやOberonの支持者は、Oberonがこの問題に対して基本的かつ効果的に対処していると主張しています。

主な特徴


  • - Pascal風でありながら、より一貫した文法
  • - 強力な型チェックと型拡張
  • - 型チェックインターフェース付きモジュールと分割コンパイル
  • - 全ての数値型間での互換性(式内での混用が可能)
  • - 文字列操作
  • - システムプログラミングをサポート

Visibility Flag


グローバル変数、型、定数、プロシージャは、デフォルトでは宣言されたモジュール内でのみ可視です。Visibility Flag(例えばリードライト許可のアスタリスク「」)を付けることで、他のモジュールからもアクセスできるようになります。このデフォルト設定は、フラグの付け忘れによる安全上の問題を考慮したものです。

ローカル変数、型、定数、プロシージャは、常に宣言されたプロシージャ内でのみ可視です。

参照渡しと値渡し


プロシージャの引数には、値渡し(call by value)と参照渡し(call by reference)の2つのモードがあります。値渡しでは、式の結果がプロシージャに渡され、参照渡しでは、変数の値がプロシージャ内で変更される可能性があります。参照渡しにするには、プロシージャ定義で引数にVARという予約語を付与します。

実装と派生


  • - Oberon: OSと共にチューリッヒ工科大学などで公開されています。
  • - Oberon-2: 1991年に一部改訂され、オブジェクト指向を取り入れ、FOR文を復活させたものです。現在最も一般的な実装であり、Native Oberonと呼ばれるOSを含む実装がPC上で動作します。.NET向けに拡張されたバージョンも開発されています。チューリッヒ工科大学が保守しているOberon-2コンパイラには、Windows版、Linux版、OS X版などがあります。
  • - Oberon-07: 2007年にヴィルトによって定義されたもので、Oberon-2ではなくオリジナルのOberonに基づいています。数値型の明示的な変換関数を必須とし、LOOP文とEXIT文を廃止し、WHILE文の拡張、RETURN文の制限などの変更が加えられています。コンパイラ実装には、32ビットWindows版、32ビットARM版、Cortex-M3マイクロコントローラ版などがあります。
  • - Active Oberon: Oberonの別の拡張版で、オブジェクト指向を取り入れ、アクセス制限、プリエンプティブな優先度付きスケジューリングなどを導入しています。オブジェクトをスレッドやプロセスとして実行できます。対応するOSはA2またはBluebottleと呼ばれています。

関連言語


Oberon系統の言語開発は継続的に行われています。Oberon-2をさらに発展させたものとしては、Component Pascalがあります。その他、特定分野向けの言語として、LagoonaやObliqなどが存在します。また、チューリッヒ工科大学では、.NET環境向けにZonnonという新しい言語を開発しています。これはOberonの特徴を引き継ぎつつ、Pascalの一部機能を復活させ、動的オブジェクト、演算子オーバーロード、例外処理などの機能が追加されています。

Oberon-Vは、数値解析向けにOberonを拡張した言語で、特にベクタープロセッサやパイプラインアーキテクチャのスーパーコンピュータでの利用を意図しています。

脚注



外部リンク の一覧を参照してください。


外部リンク



OS関連

The ETH Oberon Homepage
Native Oberon Home Page at ETHZ (Archived page)
Genealogy and History of The Oberon System
Oberon Community Platform - Wiki & Forum
BlueBottle/Aos/A2
Native Oberon Home Page
Native Oberon Hardware Compatibility
Notes and bug repairs for ETH Native Oberon
Lukas Mathis' Blog about Oberon

言語関連

Niklaus Wirth's Oberon page at ETH-Zürich
Oberon Language Genealogy
Oberon Web Ring
Oberon at SSW, Linz
Linux Native Oberon related section
Astrobe - ARM Oberon-07 Development System
Oberon System V4 for HP OpenVMS Alpha
64 bit Oberon-2 compiler for HP OpenVMS Alpha

言語の変遷

"The Programming Language Oberon" Wirth, (1988/90)
Oberon-2.Report.pdf'>"The Programming Language Oberon-2" H. Mössenböck, N. Wirth, Institut für Computersysteme, ETH Zürich, January 1992
Pascal.pdf'>"What's New in Component Pascal" (Changes from Oberon-2 to CP), Pfister (2001)
"Differences between Oberon-07 and Oberon" Wirth (2007)
* "The Programming Language Oberon-07 (Revised Oberon)" Wirth, 2007/11 (Most current language report)

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。