Modula-2

Modula-2とは



Modula-2は、1978年頃にニクラウス・ヴィルトによって開発されたプログラミング言語です。ヴィルトが以前に設計したModulaの後継として位置づけられ、汎用的な手続き型言語として設計されました。構文の多くは、ヴィルトが手がけたPascal言語に基づいています。「Modula-2」という名前は、「モジュール」を意味する英語の「modular」に由来します。

特徴



Modula-2は、Pascalとの上位互換性はありません。Pascalにモジュールの概念を追加し、分割コンパイルやソフトウェア部品のライブラリ化による再利用を可能にしました。また、単一の処理装置での並行処理を可能にするコルーチンや、データ抽象化の機能も備えています。一方、ハードウェアへの直接アクセスも可能にするなど、低レベルな操作も行うことができます。

各ライブラリは、定義モジュールと実現モジュールの2つのファイルで構成され、ライブラリの整合性はリンク時に厳密に検査されます。全体的な仕様としては、Adaの縮小版のような特徴を持っています。

ヴィルト自身は、ビットスライスプロセッサを使用し、ハードウェア管理から独自のウィンドウシステムを持つオペレーティングシステムを含むワークステーションシステムLilith全体をModula-2だけで構築し、その実用性と強力さを示しました。

発表当時は、究極の手続き型言語としてもてはやされましたが、現在ではAdaと同様に、あまり広く使われているとは言えません。

Pascalとの共通点



Modula-2はPascalと多くの共通点を持っています。

配列の範囲などの実行時検査が可能
手続きや関数を入れ子にできる
引数は値渡しと参照渡しを使用できる
手続きや関数の内部で定義された名前はその外部からは参照できない

Pascalとの相違点



Modula-2はPascalとは異なる点も多くあります。

大文字と小文字は区別される(予約語は全て大文字)
予約語「AND」の代わりに「&」、「NOT」の代わりに「~」が使える。不等号は「#」を使用
部分範囲型は「[..]」でくくり、集合型は「{..}」でくくる。注釈は「(..)」でくくり、入れ子にできる
整数型は符号ありの「INTEGER」と符号なしの「CARDINAL」を区別する
10進数以外に、2進数・8進数・16進数で定数を指定できる
文字列定数は「'」だけでなく「"」で囲むこともでき、添え字0から始まる文字の配列として扱われる。C言語と同様、コード0の文字(0C)によって終了する
IF文などの制御文は、複数の文を対象とするため、明示的に予約語「END」で閉じる。「else if」の代わりに「ELSIF」を用いる
CASE文の各選択肢には複数の文を書くことができ、選択肢は「|」で区切る。「ELSE」も存在する。「RECORD CASE」の書き方も少し異なる
GOTO文はない。代わりに無限ループを構成する「LOOP」文と、そこから脱出する「EXIT」文を持つ
FOR文は予約語「BY」によって、増分を1または-1以外にも設定できる。予約語「DOWNTO」はない
手続きと関数の定義は同じ予約語「PROCEDURE」で開始する。関数は「RETURN」文で値を返すことができる。手続きの終わりを示す「END」の後ろには、手続き名を書く必要がある。手続き型の変数が存在する
手続きの引数として整合配列を使用できる。整合配列は1次元に限られ、添え字0から始まる。配列aの最大の添え字は「HIGH(a)」によって取得できる
標準手続きは原則としてライブラリとして提供される。ただし、「CHR」や「ORD」などはModula-2でも標準手続きである
モジュールが存在する。モジュールは初期化部分を持ち、どの識別子をモジュール外から参照できるかを定義できる。分割コンパイルもモジュールを単位に行う
絶対参照、入出力ポート制御、ビット型などのハードウェアを直接操作する低レベル機能を持つ
コルーチンを持つ



modula2
MODULE Hello;
IMPORT InOut;
BEGIN
InOut.WriteString("Hello, Modula-2!");
InOut.WriteLn;
END Hello.


標準



Modula-2は、ISO 10514として規格化されています。対応する日本工業規格は存在しません。

ISO 10514-1:1996
ISO 10514-2:1998(ジェネリックプログラミング)
ISO 10514-3:1998(オブジェクト指向

ヴィルトの著作『Programming in Modula-2』は、Modula-2の紹介とレポートから構成されており、厳密ではないものの標準的なものとして扱われます。日本語訳も出版されています。

関連書籍



Niklaus Wirth著、斎藤信男訳『Modula-2プログラミング』(改訂第3版)マイクロソフトウェア、1986年
N.ヴィルト著、浦昭二; 國府方久史訳『アルゴリズムとデータ構造』近代科学社、1990年。ISBN 4764901625
ニクラウス・ヴィルト著、筧捷彦訳『翻訳系構成法序論』近代科学社、1986年

関連項目



Pascal_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E'>Pascal) - ヴィルト自身が作ったModula-2の元になった言語
Modula - Modula-2の前段階の言語
Modula-3 - Modula-2のオブジェクト指向拡張版
Mesa) - 影響を受けたとされる
Simula - 影響を受けたとされる
Oberon) - オブジェクト指向言語、ヴィルトの次の作品

外部リンク



Modula-2 Frequently Asked Questions(英語)
ISO/IEC JTC1/SC22/WG13 Modula-2(英語)
Lilith and Modula-2(英語)
GNU Modula-2(英語)
ADW Modula-2(英語)
Gardens Point Modula-2 (GPM/CLR)(英語)

もう一度検索

【記事の利用について】

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

【リンクついて】

リンクフリーです。