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

CPL（Combined Programming Language、「統合プログラミング言語」の意）は、C言語の遠い祖先となった古いプログラミング言語である。

たとえば、C言語でブロックを表す{・・・}の表記は、ブロックの区切りを単語ではなく記号で表すという点でCPLの影響を受けており、ブロックの区切り記号は以下のような変遷を経ている。

CPL(1963年): § → BCPL初版(1967年): $(・・・$) → BCPL TX-2版(1967年?): {・・・} → B言語(1969年): {・・・} → C言語(1972年): {・・・}

概要 
CPLはケンブリッジ大学の数学研究所とロンドン大学コンピュータ部の共同プロジェクトとして1960年代に開発された。言語の名前にある「統合」は共同開発であることを表している（当初はケンブリッジプログラミング言語(Cambridge Programming Language)という名前であった）。クリストファー・ストレイチーが関与していた（その他の人は論文を参照のこと）。論文が出版された1963年の時点でケンブリッジのタイタンコンピュータとロンドンのアトラスコンピュータに実装されていた。

ALGOL 60の影響を強く受けていたが、ALGOLがコンパクトでエレガントでシンプルであったのに対し、CPLは巨大で、それなりにエレガントで、複雑だった。CPLは（FORTRANやALGOL方式の）科学的プログラミングと、(COBOL方式の）商用プログラミングの両方で優れていることを目指していた。同様の努力はPL/Iでも見られた。

CPLは当時のコンピュータが非力でコンパイラ技術も未熟であったことを明白にした。実用的なCPLコンパイラは恐らく1970年頃に作られたが、全く普及することなく、1970年代に自然消滅した。

CPLをベースにしたBCPL（Basic CPL、元々はBootstrap CPL）という後発の言語は特にコンパイラを記述することを目的とした比較的シンプルなシステム記述用言語であった。後にBCPLはB言語となり、今日最も重要なプログラミング言語の1つであるC言語の元になった。

コードの例 
ピーター・ノーヴィグが記述したMAX関数:
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 §⃒

(開始シンボル"§"に対応した終了シンボル"§⃒"は縦線が含まれたものである。このシンボルはUnicodeでは"§⃒"となるが、これは§(U+00A7, SECTION SIGN) と ⃒ (U+20D2, 縦棒の重ね合わせ)であり、ブラウザ上では正しく表示されないものと思われる。)

脚注

関連項目 
 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).

プログラミング言語