Modula-2
出典: フリー百科事典『ウィキペディア(Wikipedia)』
テンプレート:Infobox プログラミング言語 テンプレート:プログラミング言語 Modula-2(モジュラ・ツー)は、コンピュータのプログラミング言語の一種で、1978年頃にチューリッヒ工科大学のニクラウス・ヴィルトにより、先立って構想されたプログラミング言語「Modula」の後継として創案されたものである。汎用手続き型言語で、構文の多くは同様にヴィルトの手掛けたPascal言語に基いたものとなっている。名前「Modula-2」は「モジュールの」を意味する英語「modular」に由来する。
特徴
Pascal との上位互換にはなっていない。Pascal にモジュールの概念を追加し、分割コンパイルやソフトウェア部品のライブラリ化による再利用が可能である。また、単一の処理装置での並行処理を可能にするコルーチンや、データ抽象化の機能を持つ。一方では、ハードウェアへの直接アクセスなども可能にしている。各ライブラリは、定義モジュールと実現モジュールの2つのファイルから構成され、ライブラリの整合性はリンク時に厳密に検査される。全体として、Adaの縮小版のような仕様である。
Pascal との共通点
- 配列の範囲等の実行時検査が可能である。
- 手続きや関数を入れ子にできる。
- 引数は値渡しと参照渡しが使用できる。
- 手続きや関数の内部で定義された名前はその外部からは参照できない。
Pascalとの相違点
- 大文字と小文字は区別される、予約語は全て大文字。
- 標準手続きはライブラリとして提供される。
- 絶対参照、出入力ポート制御、ビット型などの、ハードウェアを直接操作する低レベル機能を持つ。
- 内部インタプリタが必要な書式付出力機能を持たない。
IF
文などの制御文は複数の文を対象とするため、明示的に予約語END
で閉じる。- 手続きと関数の定義は同じ予約語
PROCEDURE
で開始する。 - 関数の返却値は
RETURN
文で与える。 - FORTRAN でいうところの整合配列を使用できる。
- コメントを入れ子にできる。
GOTO
文はない。代わりに無限ループを構成するLOOP
文とそれから脱出するEXIT
文を持つ。FOR
文は予約語BY
によって増分を 1 か -1 以外にもできる。予約語DOWNTO
はない。
例
MODULE sample ;
FROM InOut IMPORT WriteLn,WriteString ;
BEGIN
WriteString('This is Modula-2') ;
WriteLn
END sample.
ヴィルト自身がビットスライスプロセッサを使用し、ハードウェア管理から、独自のウインドウシステムを持つオペレーティングシステムを含めたオリジナルのワークステーションシステム Lilith の全体を Modula-2 だけで構築して見せ、その実用性と強力さを示した。
発表当時は、究極の手続き型言語ともてはやされたが、現在では、Ada と同様、あまり広く使用されているとは言えない。
関連項目
- Pascal — ヴィルト自身が作った Modula-2 の元になった言語
- Modula — Modula-2 の前段階の言語
- Modula-3 — Modula-2 のオブジェクト指向言語へ拡張
- Mesa — 影響を受けたとされる
- Simula - 影響を受けたとされる
- Oberon - オブジェクト指向言語、ヴィルトの次の作品
外部リンク
- http://murray.newcastle.edu.au/users/staff/peter/m2/Modula2.html (英文)
- http://www.arjay.bc.ca/Modula-2/m2faq.html (英文)
- http://www.nongnu.org/gm2/ — 開発中の GNU Modula-2 (英文)
- http://objective.modula2.net/ — 開発中の Objective Modula-2 (英文)