CPL(Combined Programming Language、統合
プログラミング言語)は、
1960年代に
ケンブリッジ大学と
ロンドン大学の共同プロジェクトとして開発された
プログラミング言語です。
C言語の遠い祖先にあたり、その設計思想や構文の一部は、後の
プログラミング言語に大きな影響を与えました。
CPLの誕生
CPLは、
ケンブリッジ大学の数学研究所と
ロンドン大学コンピュータ部が共同で開発した言語であり、その名前の「統合」は共同開発であることを示しています。当初は「ケンブリッジ
プログラミング言語」と呼ばれていましたが、後にCPLへと改称されました。開発には、
クリストファー・ストレイチーをはじめとする多くの研究者が関わりました。
1963年には論文が発表され、ケンブリッジのタイタンコンピュータとロンドンのアトラスコンピュータに実装されました。CPLは、当時主流であった
ALGOL 60の影響を強く受けていましたが、
ALGOLが簡潔でエレガントな言語であったのに対し、CPLはより大規模で複雑な言語を目指しました。
CPLの特徴
CPLは、科学技術計算だけでなく、事務処理のような商用プログラミングにも対応できることを目指していました。これは、当時の
プログラミング言語が科学計算向けのFORTRANや事務処理向けの
COBOLなど、特定の用途に特化していたことに対する挑戦でした。同様の試みは、後に
PL/I|PL_Iでも見られます。
しかし、当時のコンピュータの性能が低く、
コンパイラ技術も未熟であったため、実用的なCPL
コンパイラの開発は困難を極めました。1970年頃にようやく実用的な
コンパイラが開発されたものの、CPLは普及することなく、
1970年代には自然消滅しました。
BCPLへの影響
CPLは、その後の
プログラミング言語に大きな影響を与えました。特に、CPLをベースにしたBCPL(Basic CPL、元々はBootstrap CPL)は、
コンパイラ記述を主な目的とした、比較的シンプルなシステム記述用言語として開発されました。BCPLは、CPLの複雑さを解消し、より実用的な言語として発展しました。
さらに、BCPLは
B言語へと進化し、最終的に今日の
プログラミング言語において最も重要な位置を占める
C言語のルーツとなりました。
ブロック構造
CPLは、
C言語におけるブロック構造の表現にも影響を与えています。
C言語では、ブロックを`{}`で囲みますが、これはCPLが採用していたブロックの区切り記号の変遷の中で生まれたものです。具体的には、以下のような変遷を辿っています。
CPL (
1963年): `§`
BCPL 初版 (1967年): `$(...$)`
BCPL TX-2版 (1967年?): `{...}`
B言語 (1969年): `{...}`
C言語 (1972年): `{...}`
この変遷からもわかるように、CPLは後の
プログラミング言語に多大な影響を与えました。
コード例
以下は、ピーター・ノーヴィグが記述したCPLのMAX関数の例です。
cpl
Max(Items, ValueFunction) = value of
§ (Best, BestVal) = (NIL, -∞)
while Items do §
(Item, Val) = (Head(Items), ValueFunction(Head(Items)))
if Val > BestVal then (Best, BestVal) := (Item, Val)
Items := Rest(Items) §⃒
result is Best §⃒
このコード例では、開始シンボル`§`に対応した終了シンボル`§⃒`が使用されています。`§⃒`は、縦線を含んだ特殊な記号ですが、ブラウザ上では正しく表示されない場合があります。
まとめ
CPLは、現代の
プログラミング言語の基礎となる重要な言語です。実用化には至らなかったものの、その設計思想や構文は、後のBCPL、
B言語、そして
C言語へと受け継がれ、
プログラミング言語の歴史において重要な役割を果たしました。CPLの研究は、現代の
プログラミング言語を理解する上で、非常に重要な視点を与えてくれます。
関連項目
BCPL
B言語
C言語
参考文献
* "The main features of CPL" by D.W. Barron, J.N. Buxton, D.F. Hartley, E. Nixon, and C. Strachey. The Computer Journal, volume 6, issue 2, pp.134-143 (1963).