| デザイン: | コンピュータシステム研究所 (CSL) |
|---|---|
| 開発者 | ゼロックス PARC |
| 初登場 | 1976年[2] |
| 安定版リリース | Mesa 6.0 (バージョン 41) / 1981 年 7 月 |
| タイピングの規律 | 強い、静的 |
| 影響を受けた | |
| アルゴル | |
| 影響を受けた | |
| Java、Modula-2、Cedar、PostScript [3] | |
Mesa [1]は、1970年代半ばに米国カリフォルニア州パロアルトのゼロックスパロアルト研究所で開発されたプログラミング言語です。Mesaは「高水準」プログラミング言語であるため、言語名は当時のプログラミング言語のキャッチフレーズに基づいた語呂合わせでした。
Mesa はALGOLに似た言語で、モジュールプログラミングを強力にサポートしています。すべてのライブラリモジュールには、ライブラリのインターフェイスを指定する定義ファイルと、インターフェイス内のプロシージャの実装を指定する1 つ以上のプログラムファイルの 2 つ以上のソースファイルがあります。 [4]ライブラリを使用するには、プログラムまたは高レベルのライブラリが定義を「インポート」する必要があります。Mesa コンパイラは、インポートされたエンティティのすべての使用を型チェックします。この個別のコンパイルと型チェックの組み合わせは、当時は珍しいものでした。[要出典]
Mesa は、言語の設計と実装、特にソフトウェア例外、スレッド 同期、増分コンパイルの処理において、いくつかの革新をもたらしました。
Mesa は、グラフィカル ユーザー インターフェイスを備えた最初のパーソナル コンピュータの 1 つであるXerox Alto上で開発されましたが、Alto のシステム ソフトウェアのほとんどはBCPLで記述されていました。Mesa は、後のXerox StarワークステーションおよびGlobalViewデスクトップ環境のシステム プログラミング言語でした。Xerox PARC は後に、Mesa のスーパーセットである Cedar を開発しました。
Mesa と Cedar は、 Modula-2やJavaなどの他の重要な言語の設計に大きな影響を与え、 GUIの基礎、ネットワーク環境、およびゼロックスがコンピューター サイエンスの分野に貢献したその他の進歩の開発と普及にとって重要な手段となりました。
歴史
Mesa はもともと、ゼロックス パロアルト研究所の支部であるコンピュータ システム研究所 (CSL) で、実験的なマイクロコード ワークステーションであるAlto用に設計されました。当初、その普及は PARC と、ゼロックスが Alto を寄贈したいくつかの大学に限定されていました。
Mesa は後に、 Xerox 8010 (Xerox Star、Dandelion)やXerox 6085 (Daybreak)などの Xerox の商用ワークステーション、特にPilot オペレーティング システムのシステム プログラミング言語として採用されました。
Xerox 開発環境(XDE)と呼ばれる二次開発環境により、開発者はワールド スワップ メカニズムを使用してオペレーティング システム Pilot と ViewPoint GUI アプリケーションの両方をデバッグできました。これにより、ワールドの「状態」全体をスワップ アウトし、システム全体を麻痺させる低レベルのシステム クラッシュをデバッグできるようになりました。この手法は、大規模なアプリケーション イメージ (数メガバイト) にはあまり適応しませんでした。そのため、マイクロコード マシンが段階的に廃止され、基本ハードウェア命令セット用の Mesa PrincOps エミュレーターを実行する SPARC ワークステーションと Intel PC が採用されたとき、後のリリースの Pilot/Mesa ワールドはワールド スワップ ビューから移行しました。
Mesa はスタックマシン言語にコンパイルされ、これまで達成された中で最も高いコード密度 (高水準言語のステートメントあたり約 4 バイト) を実現したと言われています。これは 1981 年の論文で宣伝されており、ゼロックス システム開発部門 (当時は PARC の開発部門) の実装者が命令セットを調整し、結果として得られたコード密度に関する論文を発表しました。[5]
Mesa は Mesa プログラミング コースを通じて教えられました。このコースでは、当時 Xerox が提供していた幅広い技術を一通り学び、最後にプログラマーが「ハック」、つまり役に立つように設計された実用的なプログラムを書くというものでした。このようなハックの実際の例としては、1988 年に書かれた BWSMagnifier があります。このプログラムでは、サイズ変更可能なウィンドウと変更可能な拡大率によって定義されたワークステーション画面のセクションを拡大することができました。Xerox の訓練を受けた Mesa プログラマーは、GUI、ネットワーク、例外、マルチスレッド プログラミングの基礎に精通しており、これらが業界の標準ツールになる 10 年近くも前からその知識を身につけていました。
Xerox 社内では、Mesa は最終的に Cedar プログラミング言語に置き換えられました。多くの Mesa プログラマーと開発者は 1985 年に Xerox を去り、そのうちの何人かはDEC Systems Research Centerに移り、そこで Mesa の経験を生かしてModula-2+、後にModula-3を設計しました。
主な特徴
セマンティクス
Mesaはモジュール境界を越えた型チェックを備えた強く型付けされたプログラミング言語でしたが、その型システムには十分な柔軟性があり、ヒープアロケータをMesaで記述することができました。[6]
インターフェイスと実装が厳密に分離されているため、Mesa では真の増分コンパイルが可能になり、アーキテクチャやプラットフォームに依存しないプログラミングが促進されます。また、イーサネット経由のリモート デバッグなど、ソース レベルのデバッグも簡素化されます。
Mesa には 4 種類の例外を含む豊富な例外処理機能があり、モニターを介したスレッド同期もサポートしていました。Mesa は Pilot オペレーティング システムで導入された概念であるモニター BROADCAST を実装した最初の言語でした。[7]
構文
Mesa は BCPL やCではなくALGOLとPascalに基づいた「命令型」かつ「代数的」な構文を持っています。たとえば、複合コマンドは中括弧ではなくBEGINとENDキーワードで示されます。Mesa では、すべてのキーワードは大文字で記述されます。[1]
PARC では、より一般的な 1967 版ではなく 1963 版のASCII を使用したため、Alto の文字セットには、アンダースコアではなく左向き矢印 (←) が含まれていました。この結果、Alto プログラマー (Mesa、Smalltalk などを使用するプログラマーを含む) は、複合識別子に慣例的にcamelCase を使用していました。この慣例は、PARC の標準プログラミング スタイルに組み込まれました。一方、左向き矢印が使用可能だったため、ALGOL で元々使用されていたように、代入演算子にそれを使用することができました。
Mesa の設計者が例外機能を実装しようとしたとき、彼らはアルゴリズム言語における例外処理機能についての論文を書いたコロラド出身の修士課程卒業生[誰? ] を雇いました。これにより、 SIGNAL、ERROR、ABORT、RETRY、CATCH、CONTINUEといったプリミティブを備えた、当時としては最も豊富な例外機能が生まれました。この言語にはシグナル処理の完全なカバレッジを検証するための型安全なチェックがなかったため、キャッチされない例外はリリースされたソフトウェアのバグの一般的な原因でした。
杉
Mesaはプログラミング言語Cedarの前身です。[8] [9] Cedarの主な追加機能は、ガベージコレクション、動的型、ロープによる文字列のサポートの改善、限定的な型のパラメータ化、マルチモジュールソフトウェアパッケージの型安全な部分を識別するための特別な構文で、決定論的な実行を保証し、メモリリークを防ぎます。
子孫
- 米国国防総省は、ゼロックス社に Mesa を同社の「IronMan」プログラミング言語 ( Steelman 言語の要件を参照) に使用するよう打診しましたが、ゼロックス社は相反する目的のため断りました。ゼロックス PARC の従業員は、Mesa はゼロックス社のソフトウェア エンジニアを他社のエンジニアよりも生産性の高いものにする独自の利点であると主張しました。国防総省は最終的に、候補の中からAda プログラミング言語を選択し、開発しました。
- オリジナルの Star Desktop は ViewPoint Desktop に進化し、その後GlobalViewとなり、 SunOS UnixやAIXなどのさまざまな Unix プラットフォームに移植されました。Mesa からCへのコンパイラが作成され、その結果生成されたコードはターゲット プラットフォーム用にコンパイルされました。これは実行可能なソリューションでしたが、このアプローチを使用すると Mesa コンパイラと関連ツール チェーンのパワーが失われるため、Unix マシンでの開発はほぼ不可能になりました。出版業界では Sun SPARC ワークステーションで商業的にある程度の成功を収めましたが、このアプローチは製品を孤立させ、市場機会を狭める結果となりました。
- 1976年、ゼロックスPARCでの休暇中に、ニクラウス・ヴィルトはMesaと知り合い、それが彼のModula-2言語の設計に大きな影響を与えました。 [10]
- JavaはMesaを前身として明示的に言及しています。[11]
参照
参考文献
- ^ abc Mitchell, James G. ; Maybury, William; Sweet, Richard (1979): Mesa Language Manual - version 5.0" XEROX PARC、Computer Systems Laboratory (CSL)、Technical Report CSL-79-3。オンラインコピーは www.bitsavers.org で入手可能、2019 年 5 月 15 日にアクセス。
- ^ メサ、ソフトウェア保存グループ
- ^ ペリー、TS(1988年5月)。「『PostScript』は何でも印刷できる:事例」IEEE Spectrum . 25 (5): 42–46. doi :10.1109/6.4550. S2CID 33376390。
- ^ Mesa 言語マニュアル、第 7 章。(マニュアルでは、モジュールという用語をソース ファイルの意味で使用しています。)
- ^ スウィート、リチャード、サンドマン、ジェームズ(1982年3月)、「メサ命令セットの実証分析」、プログラミング言語とオペレーティングシステムのアーキテクチャサポートに関する第1回国際シンポジウムの議事録 - ASPLOS-I、pp. 158–166、doi:10.1145/800050.801839、ISBN 0897910664、S2CID 1353842
- ^ Geschke , Charles ; Morris, James H. ; Satterthwaite, Edwin H. (1977 年 8 月)。「Mesa の初期の経験」。Communications of the ACM。20 ( 8): 540–552。doi : 10.1145 /359763.359771。S2CID 15737342。
- ^ Lampson, Butler W. ; Redell, David D. (1980 年 2 月)。 「 Mesa でのプロセスとモニターの使用経験」。Communications of the ACM。23 ( 2): 105–117。CiteSeerX 10.1.1.142.5765。doi : 10.1145 / 358818.358824。S2CID 1594544。
- ^ Lampson, Butler W. Cedar 言語の説明。Xerox PARC 技術レポート。
- ^ Swinehart, Daniel C.; Zellweger, Polle T.; Hagmann, Robert B. (1985年7月). 「シーダーの構造」. SIGPLAN Notices . 20 (7): 230–244. CiteSeerX 10.1.1.110.9565 . doi :10.1145/800225.806844. S2CID 2788992.
- ^ Wirth, Niklaus ( 2007). 「Modula-2 と Oberon」。プログラミング言語の歴史に関する第 3 回 ACM SIGPLAN 会議の議事録。サンディエゴ。pp. 3-1–3-10。CiteSeerX 10.1.1.91.1447。doi : 10.1145 /1238844.1238847。ISBN 978-1-59593-766-7.S2CID 1918928 。
{{cite book}}: CS1 メンテナンス: 場所が見つかりません 発行者 (リンク)。 - ^ Gosling, James ; Joy, Bill ; Steele, Guy ; Bracha, Gilad . Java 言語仕様 (第 2 版).
外部リンク
- Mesa プログラミング言語マニュアル、バージョン 5 (1979)、bitsavers.org より
- その他の Mesa ドキュメントは bitsavers.org にあります
- World-Stop デバッガー Archived 26 August 2016 at the Wayback Machine、Don Gillies、Xerox SDD/ISD 従業員、1984–86。
- Teitelman , Warren ( 1984年4 月)。「シーダー巡り」。IEEEソフトウェア。1 (2): 44–73。CiteSeerX 10.1.1.105.3163。doi :10.1109/ms.1984.234050 。
