SSブログ

Mesa言語 [プログラマー現役続行]

以前、Java読書会のメーリングリストへ投稿したものです(一部修正しています)。
Mesaは、米国Xerox社が開発した言語で、正確には、Xerox PARCが開発した言語です。私がMesaを用いた開発に従事したのは、1988年の後半から、1991年の春までです。手元に言語仕様がないので、詳細は忘れてしまいましたが、次のような特徴がありました。
  • インタフェース(API)とその実装を明確に分離する
  • マルチスレッドプログラミングを言語としてサポートしている。C.A.R.Hoareが提唱したモニターを最初に実装した言語とも言われていると聞いたことがあります。Java言語でいえば、メソッドをsynchronized宣言できるように、メソッド呼び出しでモニターロックを獲得されるようなメカニズムがありました。
  • 例外をサポートしていた。さらに、例外をキャッチした後に、例外処理を行って、例外の発生元に制御を戻すこともできた。たとえば、OutOfMemoryがスローされると誰かがキャッチして、メモリーを解放して、例外の発生もとに制御を戻して、あたかもメモリー不足がなかったかのように処理を続けるなどができた。
Mesaは単なる開発言語だけにとどまらず、Mesaにより書かれた統合開発環境としてXDE(Xerox Development Environment)があり、その上にすべてのGUIベースの開発ツールが統合されていました。基本的にOSからウィンドウシステム、アプリケーションと、ほとんどすべてがMesaにより書かれていました。

また、インタフェース(API)を実装したモジュールをネットワーク環境を通して、Xeroxグループ社内の地理的に分散しているサーバーから自動的にフェッチ(取り出す)したり、他のマシンからデバッグするためのリモートデバッグ機能も装備していました。

XDEは開発環境ですが、製品として、統合オフィス環境であるStarが開発されています。また、研究用のCedarと呼ばれるシステムもXDEとは全く別に開発されています。

Mesaはバイトコードに変換され、そのバイトコードを直接実行するXerox社独自のハードウェアで動作していました。その後、1988年に独自ハードウェア開発継続を断念して、Sunワークステーションへソフトウェアを移植するプロジェクトが米国Xerox社と富士ゼロックス社で共同プロジェクトとして始まりました。日米合わせて200名以上のエンジニアが、その移植のためのプロジェクトに従事して、StarがSunワークステーションへ移植され、GlobalViewと名前を変えて発売されています。

このプロジェクトのために、私は、生まれて初めて日本を出て、米国のロサンジェルスで2年半近い駐在生活を送ることになった訳です。当時29歳でした。この時、同じグループで一緒に仕事をしたのが、『プログラミング言語Java 第4版』の「付録B さらなる学習」の関連言語に挙げられている「Mesa Language Manual」の著者の一人として名前が挙がっているWilliam Mayburyでした。

この移植では、Mimosaと呼ばれるMesaコンパイラーが開発されて、MesaからC言語へ翻訳していました。マルチスレッドや多くのファイルを取り扱うための独自のシステムがSunOS上に構築されていました。ただし、この方式の移植には膨大な工数を必要とするために、既存のXerox社独自のハードウェアで動作していた膨大なソフトウェア資産をすべて移植することは行われませんでした。

この移植作業と並行して、数名の優秀なエンジニアにより行われていたのが、バイトコードエミュレータの開発です。Xerox社固有のハードウェア上で直接実行されるバイトコードをソフトウェアで実行するためのエミュレータ開発です。

このエミュレータは完成し、インテルCPUの高速化の恩恵もあり、Windows上で動作するStarとして、GlobalWinが製品化されて、Windows上でStarのソフトウェアが動作するようになりました。当然、XDEも動作するようになりました。

残念ながら、Xerox社は、最終的にはワークステーション事業から撤退し、今では、StarもGlobalViewも、GlobalWinも市場から無くなってしまいました。

ちなみに、溝の口のKSP(神奈川サイエンスパーク)のB棟4Fにある富士ゼロックス社の会議室コーナーには、富士ゼロックスが商品化したStarワークステーションと、Xerox PARCで開発されたあの「Altoワークステーション」が展示されています。
Salientと呼ばれたStarのSunワークステーションへの移植プロジェクトがなければ、私も米国へ駐在することはなかったと思います。Salientプロジェクトでは、私自身は単なる移植作業だけでなく、開発の効率を上げるために、SunOS上で動作する分散コンパイル用ツールや、(私と同僚で思い付いた)拡張Mesaコメントシンタックスの処理ツール※1の開発なども行っていました。

Mimosaコンパイラが生成したC言語のコードの誤り調査もよくやりました。当時のゼロックス社のStarの開発組織では、ほとんどのエンジニアがMesa言語とXDEしか知らず、Unix/C言語を知っているエンジニアはほとんどいませんでした。そのため、Mimosaコンパイラのバグだと思われる不具合については、生成されたC言語のコードが間違いではないかと調べてたりしたものです。型のキャストが多用されていたため、まるでLisp言語で書かれたような括弧だらけのコードだったということだけを覚えています。

※1 後に、Mimosaコンパイラの標準オプションとして統合されました。


スポンサーリンク





nice!(0)  コメント(2)  トラックバック(0) 

nice! 0

コメント 2

Susumu Irikura

柴田さん、こんにちは。

当時の勤務先で85年末くらいからJ-Starを導入していたのでMesa言語のことは知っていました。今更ながらどういった言語だったんだろうとこの記事で興味がでました。
調べてみたら、MSのリサーチセンターにスキャンしたドキュメントがあったので眺めてみようかと思います。
http://research.microsoft.com/en-us/um/people/blampson/23a-MesaManual/23a-MesaManualAbstract.html
by Susumu Irikura (2014-01-10 15:49) 

art2nd

こんにちは。

Xerox Star 8010 エミュレーター「Darkstar」を試してみました。
ViewPointが使えます。

https://2ndart.hatenablog.com/entry/2022/03/19/144643
by art2nd (2022-03-22 10:36) 

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0