2009年9月9日水曜日

UCSD-Pascalの思い出(2)

私が米国で勉強したUCSD-Pascalは、スクリーンエディターやコンパイラー、オペレーティングシステムが1つのパソコン(その当時は、AppleII)で動作していました。
これらのソースコードは、すべて、Pascalプログラムで記述されていました。これらのPascalプログラムはコンパイルされてシステムを構築必要がありますが、UCSD-Pascalでは、コンパイラーが生成するコードは、バイトコードと呼ばれる仮想のマシンコードが生成されていました。通常は、コンパイラーが生成するコードは、各CPUのマシンコードですが、UCSD-Pascalでは、これが仮想のマシンコードであることが特徴です。

仮想マシンコードは、インタープリタによって実行することシステムが動作していました。仮想マシンコードを解釈するインタープリタは、各CPUのアセンブラ(6502,z80,6800,pdp-11)でコーディングされており、当時の複数のパソコンで動作することができました。弱点は、インタープリター経由で動作することから、直接マシンコードで実行する場合に比べて、パフォーマンスが悪いという点ですが、逆に多くのパソコンに移植できる点がメリットです。
これは、Javaでも同じで、バイトコードとよばれる仮想マシンコードをJava仮想マシンと呼ばれるインタプリターで実行するもとのなります。なお、UCSD-Pascalもこの構成についてオリジナリティがある訳ではなく、Pascal言語の開発者であるチューリッヒ工科大学のニクラウス・ヴィルトが、最初に公開したシステムも同じP-コードとよばれる仮想マシンコードとインタプリターから構成されています。
詳しくは、ニクラウス・ヴィルトが著した「アルゴリズム+データ構造=プログラミングに書かれています。この本は、プログラミングを目指す人には、必ず読んで欲しい名著です。私も感激しました。

追伸:「アルゴリズム+データ構造=プログラミングは、絶版になってしまったそうです。残念!!!
みんなで、復刻ドットコムで復刻のリクエスト投票しましょう。


0 件のコメント:

コメントを投稿