Hatena Blog Tags

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には

  • 言語仕様が厳密
  • ハードウェア環境への依存性が低い(抽象度が高い)
  • 配列、レコード、集合、ポインタといった構造化データがそろっている
  • if, while, repeatといった構造化制御方法がそろっている
  • 再帰呼び出しを許す

といった特徴がある一方で、これだけの言語でありながら処理系の負担が小さいという特徴があった。例を挙げるとPascal P4コンパイラはコメント込みで4000行しかない。処理系が小さく、かつフリーで手に入ることがあったことから、Pascalは多くの派生言語を生み出した。
Wirth自身は名著「アルゴリズム+データ構造=プログラム」の中で、コンパイラの例題に使う小規模言語PL/0を紹介しているが、これはPascalの縮小版である。初期の並行プログラミング言語を研究したPer Brinch HansenはPascalをもとにConcurrent Pascalを開発した。
Wirthはサバティカル休暇を生かしてXerox PARCやApple 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方言

このタグの解説についてこの解説文は、すでに終了したサービス「はてなキーワード」内で有志のユーザーが作成・編集した内容に基づいています。その正確性や網羅性をはてなが保証するものではありません。問題のある記述を発見した場合には、お問い合わせフォームよりご連絡ください。

ネットで話題

もっと見る

関連ブログ