削除された内容 追加された内容
→‎標準: 節追加
1行目:
{{Infobox プログラミング言語|名前={{lang|en|Modula-2}}|ロゴ=|パラダイム=[[手続き型プログラミング言語|手続き型]]|登場時期=1978年頃|設計者=[[ニクラウス・ヴィルト]]|開発者=|最新リリース=|型付け=強い[[静的型付け]]|処理系=[http://www.excelsior-usa.com/xdsx86win.html XDS], [http://www.sysecol.ethz.ch/SimSoftware/RAMSES/MacMETH.html MacMETH]||方言=|影響を受けた言語={{lang|en|[[Mesa]]}}{{lang|fr|[[Pascal]]}}|影響を与えた言語=|ウェブサイト=}}
{{プログラミング言語}}
{{lang|en|'''Modula-2'''}}(モジュラ・ツー)は、コンピュータの[[プログラミング言語]]の一種で、1978年頃に[[チューリッヒ工科大学]]の[[ニクラウス・ヴィルト]]により、先立って構想されたプログラミング言語「{{Lang|en|Modula}}」の後継として創案されたものである。汎用[[手続き型言語]]で、構文の多くは同様にヴィルトの手掛けた[[Pascal|{{lang|ft|Pascal}}言語]]に基いたものとなっている。名前「{{lang|en|Modula-2}}」は「モジュールの」を意味する英語「{{lang|en|<u>modula</u>r}}」に由来する。
 
==特徴==
{{lang|fr|Pascal}} との上位互換にはなっていない。{{lang|fr|Pascal}} にモジュールの概念を追加し、分割コンパイルやソフトウェア部品のライブラリ化による再利用が可能である。また、単一の処理装置での[[並行処理]]を可能にする[[コルーチン]]や、[[データ抽象化]]の機能を持つ。一方では、ハードウェアへの直接アクセスなども可能にしている。各ライブラリは、定義モジュールと実現モジュールの2つのファイルから構成され、ライブラリの整合性はリンク時に厳密に検査される。全体として、{{lang|en|[[Ada]]}}の縮小版のような仕様である。
 
=={{lang|fr|Pascal}} との共通点 ==
*配列の範囲等の実行時検査が可能である。
*手続きや関数を入れ子にできる。
12行目:
*手続きや関数の内部で定義された名前はその外部からは参照できない。
 
=={{lang|fr|Pascal}}との相違点 ==
*大文字と小文字は区別される、予約語は全て大文字。
*標準手続きはライブラリとして提供される。
20行目:
*手続きと関数の定義は同じ予約語 <code>PROCEDURE</code> で開始する。
*関数の返却値は <code>RETURN</code> 文で与える。
*{{lang|en|FORTRAN}} でいうところの整合配列を使用できる。
*コメントを入れ子にできる。
*<code>GOTO</code> 文はない。代わりに無限ループを構成する <code>LOOP</code> 文とそれから脱出する <code>EXIT</code> 文を持つ。
35行目:
</source>
 
ヴィルト自身が[[ビットスライスプロセッサ]]を使用し、ハードウェア管理から、独自のウインドウシステムを持つ[[オペレーティングシステム]]を含めたオリジナルの[[ワークステーション]]システム {{lang|en|[[Lilith]]}} の全体を {{lang|en|Modula-2}} だけで構築して見せ、その実用性と強力さを示した。
 
発表当時は、究極の手続き型言語ともてはやされたが、現在では、{{lang|en|Ada}} と同様、あまり広く使用されているとは言えない。
 
== 標準 ==
Modula-2 は、ISO 10514 として規格化されている。対応する[[日本工業規格]]は存在しない。
* ISO 10514-1:1996
* ISO 10514-2:1998 ([[ジェネリックプログラミング]])
* ISO 10514-3:1998 ([[オブジェクト指向]])
 
==関連項目==
*{{lang|fr|[[Pascal]]}} &mdash; ヴィルト自身が作った {{lang|en|Modula-2}} の元になった言語
*{{lang|en|[[Modula]]}} &mdash; {{lang|en|Modula-2}} の前段階の言語
*{{lang|en|[[Modula-3]]}} &mdash; {{lang|en|Modula-2}} の[[オブジェクト指向言語]]へ拡張
*{{lang|en|[[Mesa]]}} &mdash; 影響を受けたとされる
*{{lang|en|[[Simula]]}} - 影響を受けたとされる
*{{lang|en|[[Oberon]] }}- [[オブジェクト指向言語]]、ヴィルトの次の作品
 
==外部リンク==
52 ⟶ 58行目:
*http://www.arjay.bc.ca/Modula-2/m2faq.html (英文)
*http://sc22wg13.twi.tudelft.nl/ (英文)
*http://www.nongnu.org/gm2/ &mdash; 開発中の {{lang|en|GNU Modula-2}} (英文)
*http://objective.modula2.net/ &mdash; 開発中の {{lang|en|Objective Modula-2}} (英文)
 
[[Category:プログラミング言語|MODULA2]]