プランカルキュール(独: Plankalkül、英: Plan Calculus)はコンラート・ツーゼが研究目的で考案したプログラミング言語。世界初の非ノイマン型高級言語として1942年から1945年にかけて設計された。1941年に記述されたこの言語に関するメモが現在も残されている。

プランカルキュールは第二次世界大戦や戦後の混乱期が重なり、また彼自身も計算機Z3を商業化するのに忙しかったため公には発表されなかった。ツーゼは1946年にこの言語に関する書籍(1945年当時の原稿の全文)を執筆したが発行されなかった。ツーゼは1948年に"Archiv der Mathematik"というタイトルでプランカルキュールについての論文を発表したが反響はほとんどなく、長年にわたりマシン語でなければコンピュータのプログラムは作成できないと考えられていた。

1972年になってようやくプランカルキュールが発表され、1998年に最初のコンパイラが開発された。また後になってこれとは別に、ベルリン自由大学で2000年に全く新しい実装が開発された。

ドイツ語のKalkülという単語は形式的を意味する。例えばヒルベルト演繹系は元々は"Hilbert-Kalkül"である。従ってプランカルキュールは「設計のための形式的システム」という意味である。

解説 プランカルキュールはAPLと関係代数の類似性を示している。代入文、サブルーチン、条件文、ループ、浮動小数点演算、配列、階層構造を持つ構造体、アサート、例外処理、目的指向型実行(goal-directed execution)などのような先進的な機能がある。

max関数を用いて3つの値の最大値を求めるプログラムの例:

P1 max3 (V0[:8.0],V1[:8.0],V2[:8.0]) => R0[:8.0] max(V0[:8.0],V1[:8.0]) => Z1[:8.0] max(Z1[:8.0],V2[:8.0]) => R0[:8.0] END P2 max (V0[:8.0],V1[:8.0]) => R0[:8.0] V0[:8.0] => Z1[:8.0] (Z1[:8.0] < V1[:8.0]) -> V1[:8.0] => Z1[:8.0] Z1[:8.0] => R0[:8.0] END

プランカルキュールは複数の行を用いた特殊な表記法を持つ。これはゴットロープ・フレーゲが1879年に開発した数理論理学用のBegriffsschriftと同じものである。

外部リンク The "Plankalkül" of Konrad Zuse: A Forerunner of Today's Programming Languages by Friedrich L. Bauer Rojas, Raúl, et al. (2000). "Plankalkül: The First High-Level Programming Language and its Implementation". Institut für Informatik, Freie Universität Berlin, Technical Report B-3/2000. (全文) Mauerer, Wolfgang. "Der Plankalkül von Konrad Zuse", 1998.

参考文献 Zuse, Konrad (1943), "Ansätze einer Theorie des allgemeinen Rechnens unter besonderer Berücksichtigung des Aussagenkalküls und dessen Anwendung auf Relaisschaltungen", unpublished manuscript, Zuse Papers 045/018. Zuse, Konrad (1948/49). "Über den allgemeinen Plankalkül als Mittel zur Formulierung schematisch-kombinativer Aufgaben". Arch. Math. 1, pp. 441-449, 1948/49. Zuse, Konrad (1972). "Der Plankalkül". Gesellschaft für Mathematik und Datenverarbeitung. Nr. 63, BMBW - GMD - 63, 1972. Giloi, Wolfgang, K. (1997). "Konrad Zuse's Plankalkül: The First High-Level "non von Neumann" Programming Language". IEEE Annals of the History of Computing, vol. 19, no. 2, pp. 17-24, April-June, 1997. (概要)