スマートフォン用の表示で見る

Pascal

構造化された初期の代表的なプログラミング言語

チューリッヒ工科大学のニクラス・ヴィルト(Niklaus Wirth、ニクラウス・ヴィルトとも)により開発された。

(Wikipediaより)

歴史

1960年代はコンパイラ研究が全盛期であり、とくにヨーロッパでは生成言語理論の研究に基づく、数理的に厳密なコンピューター言語への傾斜が多分にあった。これは米国Fortran/Cobolといった「実践的な」あるいは悪く言えば「便利ならいいじゃん」という動きへの反動だった。Algolを中心に発達したこの動きは最終的にプログラミング言語研究の集大成となるAlgol68を生むにいたったが、あまりに巨大すぎて常軌を逸していたため普及しなかった。Niklaus Wirthはそれまで小規模処理系をいくつか作っていたが、PascalはAlgol68への明確なアンチティーゼとして多分に研究的な意味も含めて開発された。WirthはETHの教授だったため、教育用に使ったのも事実である。

特徴

Pascalの最大の特徴はコンパクトにまとまった厳格な文法と、その定義である。生成言語理論研究を真摯に受け止め、リテラルの構造は正規文法で、言語構造は文脈自由文法で記述される。また、言語構造は拡張BNF記法を使った厳密なものでおこない、理解とコンパイラ開発が行いやすかった。一方で、「自分自身のコンパイラを開発できる」十分な実用性を持っていた。

普及

Pascalは研究開発過程で中間言語コンパイラによる記述が行われた。Pascal P4コンパイラと呼ばれたこのシステムは、仮想スタックマシン用のマシン語(P-Codeと呼ばれた)を生成する。Pascal P4コンパイラPascalで記述されていたため、コンパイラの実行コードも中間言語になっている。そのため、仮想スタックマシンの移植が完了すれば直ちにPascalコンパイラを使用できた。

1970年代後半くらいまでは大小問わずコンピューターには互換性の概念が希薄だったため、プログラム言語の移植はそれだけできちんとした論文が書ける分野だった。このような事情を背景に、移植の簡単なPascalは磁気テープ回覧で大學のコンピューターセンターの間に瞬く間に広まった。P-Codeはあまりに強力だったため、その後OS一式をP-Codeで記述するUCSD P-Systemがカリフォルニア大學サン・ディエゴ校で開発されると、これも非互換で当たり前だったマイコン市場で歓迎された。同様の思想はSmalltalkのbytecodeマシンにも見られる。

派生

Pascalには

といった特徴がある一方で、これだけの言語でありながら処理系の負担が小さいという特徴があった。例を挙げるとPascal P4コンパイラはコメント込みで4000行しかない。処理系が小さく、かつフリーで手に入ることがあったことから、Pascalは多くの派生言語を生み出した。

Wirth自身は名著「アルゴリズム+データ構造=プログラム」の中で、コンパイラの例題に使う小規模言語PL/0を紹介しているが、これはPascalの縮小版である。初期の並行プログラミング言語を研究したPer Brinch HansenはPascalをもとにConcurrent Pascalを開発した。

Wirthはサバティカル休暇を生かしてXerox PARCApple Computerを訪れている。Wirthはアプリケーション記述言語とOS記述言語を共用するというアイデア*1に疑問を抱いていたが、XeroxがMesaでワークステーションのシステムを記述しているのをみて考えを改めた。Wirthは研究室に戻るとシステム記述言語Modula-2を開発し、Am2900で作ったLilithワークステーションのシステム記述に使った。AppleはWirthに援助を求めてLisa/Macintosh用の主力開発言語だったPascalオブジェクト指向機能を付加する試みを行った。この結果生まれたClasscalはさらに発展してObject PascalとなりMacintosh初のオブジェクト指向フレームワーク、MacAppの土台となった。

Borland

Borland社のTurbo PASCALはその速いコンパイル速度と独自の拡張(分割コンパイルオブジェクト指向など)が為されていて一世を風靡した。そのノウハウDelphiに受け継がれている。

Turbo Pascalは5.5でObject Pascalに変身して周囲をあっといわせた*2。さらに6.0でアプリケーションフレームワーク Turbo Visionをバンドルした。Turbo VisionはCUI画面上でオーバーラップウインドウを実現する画期的なクラス・ライブラリだった。

Borlandの創設者Philip KahnはETHでN.Wirthの教えを受けたという。

*1:ありていに言えばC言語のアプローチ

*2:実際にはBorland方言