P′′
パラダイム 命令型プログラミング, 構造化定理
登場時期 1964
設計者 コラド・ベーム(Corrado Böhm)
型付け なし
方言 Brainfuck
影響を与えた言語 Brainfuck
テンプレートを表示

P′′ (P double prime:ピーダブルプライム[1])は1964年にコラド・ベーム[2][3]によって作成された、チューリングマシンの一種を記述するための言語である。

チューリングマシンを記述するがゆえにその仕様は原始的である。チューリングマシンにもかかわらず、状態遷移はテープの内容とテープヘッドの位置だけで表現されるので、有限オートマトンの概念が希薄である。

定義

(以下 P′′)は以下のように4つの命令アルファベット におけるワードの集合として形式的に定義される(formally defined)。

文法

  1. と は P′′ のワードである。
  2. もしも と が P′′ のワードならば、それらを繋げた も P′′ のワードである。
  3. もしも が P′′のワードならば、 も P′′ のワードである。
  4. 以上の3つの法則から得られるワードだけが P′′ のワードである。

意味論

他のプログラミング言語との関連

プログラムの例

ベーム[2]は、x > 0 を満たす整数xの前の数 (x-1) を計算する以下のプログラムを提供している。

これを等価のBrainfuckのプログラムに直接変換すると、

 >[>]<[−[<[<]]−<]>+

このプログラムは bijective base-k 記法で表現されているある一つの整数を想定している。 は にそれぞれエンコードされる。そして、数字列の前後に がある(例えば、bijective base-2 の場合、数字の8は とエンコードされる。なぜなら、bijective base-2 において8は112である)。計算の最初と最後に数字列の前にある の上にヘッドが位置することになる。

注釈

  1. ↑ 原文は "All instructions in P′′ are permutations of the set X of all possible tape configurations; that is, all possible configurations of both the contents of the tape and the position of the tape-head." となっている。テープの内容とテープヘッドの位置の両方を考慮した全てのあり得る構成が命令になるとは理解し難い。
  2. ↑ 英語版Wikipediaではこの部分に「a minor」という形容も付いているが、それは特に訳す意味は無いと思われる。

出典

  1. ↑ https://github.com/Pbtflakes/pdbl
  2. 1 2 Böhm, C.: "On a family of Turing machines and the related programming language", ICC Bull. 3, 185-194, July 1964.
  3. ↑ Böhm, C. and Jacopini, G.: "Flow diagrams, Turing machines and languages with only two formation rules", CACM 9(5), 1966. (Note: This is the most-cited paper on the structured program theorem.)
⌬ Phoenix Mesh CID: 未登録 IPFS未登録 📡 0ピア N=1 CRITICAL PQS C56