UCSD Pascalは、移植性が高く、マシンに依存しないオペレーティングシステムであるUCSD p-System上で動作するPascalプログラミング言語システムです。UCSD Pascalは1977年に初めてリリースされました。開発はカリフォルニア大学サンディエゴ校(UCSD)で行われました。
1977年、カリフォルニア大学サンディエゴ校(UCSD)情報システム研究所は、当時入手可能だったあらゆるマイクロコンピュータ、およびキャンパス内のDEC PDP-11ミニコンピュータで動作する共通の環境を学生に提供するために、UCSD Pascalを開発した。このオペレーティングシステムは、UCSD p-Systemとして知られるようになった。
IBMが初代IBM PC向けに提供したオペレーティングシステムは、UCSD p-System、CP/M-86、IBM PC DOSの3種類でした。[ 1 ]ベンダーのSofTech Microsystems [ 2 ]は、IBM PC発売時点で20個のCPU用の仮想マシンを備え、p-Systemのアプリケーションの移植性を強調しました。同社は、ユーザーが購入したアプリケーションをp-Systemを実行する将来のコンピュータで使用できると予測しました。[ 3 ]広告では、これを「ユニバーサルオペレーティングシステム」と呼んでいました。[ 4 ]
PC MagazineはIBM PC上のUCSD p-Systemを酷評し、同言語で書かれたContext MBAのレビューの中で、「単純に良質なコードを生成しない」と述べている。 [ 5 ] p-Systemは、アプリケーションの不足と他の選択肢よりも高価であったため、IBM PC向けにはあまり売れなかった。以前、IBMは8086ベースの専用ワードプロセッシングマシンであるIBM DisplaywriterのオプションとしてUCSD p-Systemを提供していた。(Displaywriterのネイティブオペレーティングシステムは完全に社内で開発されており、エンドユーザーによるプログラミングには開放されていなかった。)
標準Pascalに対する注目すべき拡張機能としては、個別にコンパイル可能なユニットと文字列型が挙げられます。文字列処理を高速化するための組み込み関数(例えば、配列内の特定の検索パターンをスキャンするなど)が提供され、UCSD p-Systemが自己コンパイルおよび自己ホストできるようにするための言語拡張機能も提供されています。
UCSD Pascalはpコードマシンアーキテクチャに基づいていました。初期の仮想マシンへの貢献は、pコードをコンパイラの中間言語という本来の用途から、完全な実行環境へと拡張したことでした。UCSD Pascal pマシンは、アドレス指定が16ビット(メモリはわずか64KB)に制限された新しい小型マイクロコンピュータ向けに最適化されていました。James Goslingは、Java仮想マシンの設計において、 UCSD Pascalが( Smalltalk仮想マシンとともに)重要な影響を与えたと述べています。 [ 6 ]
UCSD p-System は、p-マシン(または擬似マシン。多くのユーザーは OSのように「Pascal マシン」と呼び始めたが、UCSD のドキュメントでは常に「擬似マシン」を使用していた) と呼ばれる仮想マシンを定義することで、マシンの独立性を実現しました。この仮想マシンには、p コード (または擬似コード) と呼ばれる独自の命令セットがあります。ニクラウス・ヴィルトの教え子であるウルス・アマンは、博士論文[ 7 ]で最初に p コードを発表しました。UCSDの実装は、チューリッヒ Pascal-P 実装から派生したものです。UCSD の実装は、チューリッヒの実装を「バイト指向」に変更しました。UCSD p コードは、Pascal プログラミング言語の実行に最適化されています。各ハードウェア プラットフォームは、p-System 全体と、その上で実行するためのすべてのツールを移植するために、そのプラットフォーム用に書かれた p コード インタプリタ プログラムのみを必要としました。後のバージョンでは、p コード ベースにコンパイルされる追加の言語も含まれていました。例えば、Apple Computerは、Apple版pシステム上で動作するpコードを生成するFortranコンパイラ[ 8 ] (カリフォルニア州サニーベールのSilicon Valley Softwareが作成)を提供しました。その後、TeleSoft(同じくサンディエゴに所在)は、pコードを使用する初期のAda開発環境を提供し、 Motorola 68000、System/370、Pascal MicroEngineなど、多くのハードウェアプラットフォーム上で動作させることができました。
UCSD p-Systemは、後のJavaプラットフォームといくつかの概念を共有しています。どちらも仮想マシンを使用してオペレーティングシステムとハードウェアの違いを隠蔽し、その仮想マシン上で動作するプログラムを使用してクロスプラットフォーム対応を実現しています。同様に、どちらのシステムも、仮想マシンを対象コンピュータの完全なオペレーティングシステムとして使用することも、別のオペレーティングシステムの下で「ボックス」として実行することも可能です。
UCSDのPascalコンパイラは、ポータブルオペレーティングシステムであるp-Systemの一部として配布された。
UCSD p-System は、1974 年頃、 UCSD のKenneth Bowles [ 9 ]の発案で始まりました。彼は当時登場していた新しいコンピューティング プラットフォームの数の多さから、新しいプログラミング言語が受け入れられるのは難しいと考えていました。彼は、チューリッヒのポータブルコンパイラの Pascal-P2 リリースをベースに UCSD Pascal を開発しました。彼は特に、プログラミングを教えるための言語としてPascalに興味を持っていました。UCSD は、オリジナルの Pascal に比べて重要な改良点となる 2 つの機能を導入しました。可変長文字列と、独立してコンパイルされたコードの「ユニット」(当時進化していた Ada (プログラミング言語) に含まれていたアイデア)です。Niklaus Wirth は、p-System、特に UCSD Pascal が Pascal を普及させたと評価しています。UCSDのバージョンが Pascal ユーザーの間でトップの座から転落し始めたのは、Turbo Pascalがリリースされてからのことでした。
UCSD Pascal の Pascal 方言は、Pascal-P2 で実装された Pascal のサブセットから派生したもので、Pascal-P2 は言語の完全な実装として設計されたのではなく、Pascal コンパイラのブートストラップ キットとしての機能に適合するように、「自己コンパイル可能な最小限のサブセット」として設計されていました。UCSD は、BASIC の文字列や、その他いくつかの実装依存機能を追加しました。UCSD Pascal は後に完全な Pascal 言語の他の多くの機能を取得しましたが、Pascal-P2 のサブセットは他の方言、特にUCSD 方言の多くをコピーしたBorland Pascalに残りました。

UCSD pコードエンジンには4つのバージョンがあり、それぞれにpシステムとUCSD Pascalの複数のリビジョンが含まれていました。pコードエンジン(つまりpマシン)のリビジョンはpコード言語の変更を意味し、そのためコンパイルされたコードは異なるpマシンバージョン間では互換性がありません。各リビジョンは先頭のローマ数字で表され、オペレーティングシステムのリビジョンはpコードのローマ数字に続く「ドット」番号で列挙されました。たとえば、II.3はpマシンの第2リビジョン上で動作するpシステムの第3リビジョンを表します。
オリジナル版は、カリフォルニア大学サンディエゴ校以外では公式には配布されなかった。しかし、バージョンI.3とI.5の両方のPascalソースコードは、関心のあるユーザー間で自由に交換されていた。特に、パッチ改訂版I.5aは最も安定したバージョンの一つとして知られていた。
広く普及し、初期の多くのマイクロコンピュータで利用可能でした。多数のバージョンがあり、Apple II(最終的にはApple Pascal)、DEC PDP-11、Intel 8080、Zilog Z80、MOS 6502ベースのマシン、Motorola 68000、IBM PCなどがありました(PC版のバージョンIIは、64Kのコードセグメント1つと64Kのスタック/ヒープデータセグメント1つに制限されていました。バージョンIVではコードセグメントの制限がなくなりましたが、コストが大幅に増加しました)。
この時代のプロジェクトメンバーには、ケネス・L・ボウルズ博士、マーク・アレン、リチャード・グリーブス、リチャード・カウフマン、ピート・ローレンス、ジョエル・マコーマック、マーク・オーバーガード、キース・シリングトン、ロジャー・サムナー、ジョン・ヴァン・ザントなどが含まれる。
Western Digital社向けに開発されたカスタムバージョンで、同社のPascal MicroEngineマイクロコンピュータ上で動作します。並列処理のサポートが初めて搭載されました。
SofTech が開発・販売した商用版。バージョン II をベースにしており、バージョン III からの変更は含まれていません。価格設定構造、p コード インタプリタによるパフォーマンスの問題、ネイティブ オペレーティングシステム (多くの場合、その上で動作していた) との競合などが原因で、販売は振るいませんでした。SofTech が製品を中止した後、p-System ユーザーとファンで構成された比較的小規模な会社である Pecan Systems が引き継ぎました。Pecan のリーズナブルな価格設定構造のおかげで、販売は多少回復しましたが、p-System と UCSD Pascal は徐々にネイティブ オペレーティングシステムとコンパイラに市場を奪われていきました。pコード カードを搭載したTI-99/4A 、 Commodore CBM 8096、Sage II/IV、HP 9000、および6502 セカンド プロセッサを搭載したBBC Microで利用可能。 [ 10 ]
Corvus Systemsのコンピュータは、ユーザーソフトウェアすべてにUCSD Pascalを使用していた。Constellation OSの「革新的なコンセプト」は、Pascalを(インタプリタ方式またはコンパイル方式で)実行し、一般的なソフトウェアをすべてマニュアルに含めることで、ユーザーが必要に応じて変更できるようにするという点だった。
PascalユニットはAdaパッケージに影響を与えた可能性が高い。
{{cite journal}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク)