CPL (プログラミング言語)

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).

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。