Mesa

提供: miniwiki
移動先:案内検索
Mesa
パラダイム 命令型
登場時期 1976年[1][2]
最新リリース 6.0 (1981年)[2]
型付け 強い静的型付け
影響を受けた言語 ALGOL 68, Pascal, Simula 67[3]
影響を与えた言語 Modula-2, Java
プラットフォーム Alto, Xerox Star
テンプレートを表示

Mesa(メサ)は、Xeroxが1970年代に開発した強い型付けを持つ汎用のプログラミング言語である。

概要

Mesa言語は1974年に基本的な言語仕様が決定され、Alto上で処理系が制作された[3]。なお、Altoそのもののソフトウェアは主にBCPLで書かれていた[2][3]Xerox StarワークステーションのOSであるPilotはMesaで書かれた[4]

言語の特徴としてはモジュール化静的な型チェック並行処理と共有変数のロック・アンロック、シグナル(例外処理)などがある[5][6]

ニクラウス・ヴィルトは1976年から翌年にかけてパロアルト研究所で過ごした。ヴィルトのLilithワークステーションとModula-2言語はそれぞれAltoとMesaの強い影響を受けている[7]

Java言語のモニタを使った並行処理はMesaに由来する[8]

文法

基本構文

Mesa言語は大文字と小文字を区別し、大文字のみの識別子は予約されている。予約語や定義ずみの識別子はすべて大文字で書かれる[9]

コメントは -- から行末、または次の -- が現れるまでである。

型宣言はPascalとよく似ており、基本型(INTEGER, CARDINAL, BOOLEAN, CHARACTER, LONG INTEGER, LONG CARDINAL, REAL)、数え上げ型サブレンジ型配列型、配列記述子(動的配列)型、レコード型、ポインタ型、手続き型などがある[10]。型宣言をすることもできる。Mesaは静的な型付けの言語であるが、それをすりぬけるためのUNSPECIFIED(1ワードの何でもはいる型)とLOOPHOLE組み込み手続きを使った型変換がサポートされている。定義ずみのSTRING型(レコード型へのポインタ)がある。

Pascalでいう集合型はないが、範囲を指定する演算子があり、範囲チェックやSELECTの選択肢、FORループの条件などに使うことができる。

代入やIF、SELECTなどは文としても式としても存在する。

ブロックはBEGINとENDで囲まれ、ALGOLと同様に中で変数などを宣言できる。ほかにループ用のDO..ENDLOOPがある。

モジュール

モジュールは分割コンパイルの単位で、インターフェースモジュールと実装モジュールがあり、これによって異なるモジュールの間で静的な型チェックができるようになった[11]。あるプログラムからモジュールを使用する場合、DIRECTORY節によって使用するモジュールを指定する。

実行時には各実装モジュールに対してフレーム(インスタンス)が生成される。NEWを使って実行時にフレームのコピーを生成することもできる[12]

並行処理

Mesaはコルーチンをサポートしている。PORTという型があり、手続きのように呼びだすことである手続きまたはモジュールから制御を移すことができる。

また、FORKを使って手続きを非同期に走らせることもできる。

複数のプロセスの排他制御のためにはモニタというモジュールの一種を作り、そこで条件変数を定義することができる。条件変数はNOTIFYすることでロックがかかり、WAITでロックがはずれる。

開発環境

Mesaは単なる言語というだけでなく、デバッガなどを含めたマルチウィンドウのGUI統合開発環境を持っている[13]。この統合開発環境は1980年に作られた[14]

脚注

  1. Sweet (1985) p.216
  2. 2.0 2.1 2.2 Mesa, Software Preservation Group, Computer History Museum, http://www.softwarepreservation.org/projects/lang/mesa 
  3. 3.0 3.1 3.2 上谷(1986) p.261
  4. 上谷(1986) p.53
  5. ManualのAbstract
  6. 上谷(1986) pp.53-54
  7. Pomberger, Gustav; Mössenböck, Hanspeter; Rechenberg Peter, Niklaus Wirth -- a Pioneer of Computer Science, p. 5, ftp://www.ssw.uni-linz.ac.at/pub/Papers/Moe00a.PDF 
  8. “1. Introduction”, Java Language Specification, Java SE 8 Edition, Oracle, http://docs.oracle.com/javase/specs/jls/se8/html/jls-1.html 
  9. Manual p.5
  10. 上谷(1986) p.266
  11. Sweet (1985) p.217
  12. 上谷 (1986) pp.262-265
  13. 上谷 (1986) p.270
  14. Sweet (1985) p.217

参考文献