P′′
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/10/25 15:00 UTC 版)
パラダイム | 命令型プログラミング, 構造化定理 |
---|---|
登場時期 | 1964 |
設計者 | コラド・ベーム(Corrado Böhm) |
型付け | なし |
方言 | Brainfuck |
影響を与えた言語 | Brainfuck |
P′′ (P double prime:ピーダブルプライム[1])は1964年にコラド・ベーム[2][3]によって作成された、チューリングマシンの一種を記述するための言語である。
チューリングマシンを記述するがゆえにその仕様は原始的である。チューリングマシンにもかかわらず、状態遷移はテープの内容とテープヘッドの位置だけで表現されるので、有限オートマトンの概念が希薄である。
定義
(以下 P′′)は以下のように4つの命令アルファベット におけるワードの集合として形式的に定義される(formally defined)。
文法
- と は P′′ のワードである。
- もしも と が P′′ のワードならば、それらを繋げた も P′′ のワードである。
- もしも が P′′のワードならば、 も P′′ のワードである。
- 以上の3つの法則から得られるワードだけが P′′ のワードである。
意味論
- は無限長のテープを搭載したチューリングマシンのテープ・アルファベット(テープに書かれるデータの種類)である。 は空白の記号であり、 と等価である。
- P′′ の全命令は、全てのあり得るテープの構成の集合 の順列である。つまり、テープの内容とテープヘッドの位置の両方を考慮した全てのあり得る構成である[注釈 1]。
- は述語(値を受け取ってから真偽が決定するもの)であり、現在位置のシンボルは ではないことを示している。これは命令ではなく、プログラム中で使用されない。しかし、その代わりとして言語の定義を補助するために使われる。
- は、(可能であれば)1セル分テープヘッドを右方向へ移動することを意味する。
- は、現在位置のシンボル を に置き換える(つまり、現在位置のシンボルが のときは に置き換えられる)。そして、テープヘッドを1セル分左方向へ移動することを意味する。
- は関数の合成 を意味する。言い換えると、命令 は の前に実行される。
- は、条件 が成立している間だけ while ループで を反復することを意味する。
他のプログラミング言語との関連
- Brainfuck 言語は、P′′ の[注釈 2]非形式的な変種(informal variation)である(Brainfuck はテープの代わりにメモリを使うので、I/Oを扱わないところは異なる)。ベームはあらゆる計算可能関数を計算するのに十分な基本関数の集合のそれぞれに対して明確な P′′ のプログラムを提供している。使用したものは , そして4つのワード 、 (ここで は の 回の反復である)、 、 だけである。これらは6つの Brainfuck の命令 [, ], +, -, <, > と等価である。注意するべきは、 なので、現在位置のシンボルをn回インクリメントするとラップアラウンド( をインクリメントすると になること)する。そのため、一つの によって、その結果は現在位置のシンボルをデクリメントすることになる(訳注:テープ・アルファベットは n+1 種類あるので、n回インクリメントするとラップアラウンドして1つ少ない数のテープ・アルファベットになる)。
プログラムの例
ベーム[2]は、x > 0 を満たす整数xの前の数 (x-1) を計算する以下のプログラムを提供している。
これを等価のBrainfuckのプログラムに直接変換すると、
>[>]<[−[<[<]]−<]>+
このプログラムは bijective base-k 記法で表現されているある一つの整数を想定している。 は にそれぞれエンコードされる。そして、数字列の前後に がある(例えば、bijective base-2 の場合、数字の8は とエンコードされる。なぜなら、bijective base-2 において8は112である)。計算の最初と最後に数字列の前にある の上にヘッドが位置することになる。
注釈
- ^ 原文は "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." となっている。テープの内容とテープヘッドの位置の両方を考慮した全てのあり得る構成が命令になるとは理解し難い。
- ^ 英語版Wikipediaではこの部分に「a minor」という形容も付いているが、それは特に訳す意味は無いと思われる。
出典
- ^ https://github.com/Pbtflakes/pdbl
- ^ a b Böhm, C.: "On a family of Turing machines and the related programming language", ICC Bull. 3, 185-194, July 1964.
- ^ 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.)
P′′
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/06/09 06:43 UTC 版)
(en:P′′)チューリングマシンと同様、無限長のテープに記号を記録するが、チューリングマシンにおける有限状態オートマトンに相当するものを、固定長でループの記述が可能な命令の列によって記述する。これを元に、命令セットを理論向けから実装向けに大幅にアレンジして設計されたプログラミング言語がBrainfuckである。
※この「P′′」の解説は、「計算理論」の解説の一部です。
「P′′」を含む「計算理論」の記事については、「計算理論」の概要を参照ください。
「P′′」に関係したコラム
-
FX(外国為替証拠金取引)のペイオフレシオ(payoff ratio)とは、FXでの取引における利益率のことです。ペイオフレシオは、リスクリワードレシオ(risk reward ratio)ともいいま...
-
FXやCFDのRMI(Relative Momentum Index)とは、テクニカル指標のモメンタムを用いて、値動き幅から相場の売られ過ぎ、あるいは、買われ過ぎを判断するためのテクニカル指標のことで...
FXのチャート分析ソフトMT4で表示できる通貨ペア以外のレートは
FX(外国為替証拠金取引)のチャート分析ソフトMT4(Meta Trader 4)では、外国為替市場で取引される通貨ペア以外のチャートも表示できます。以下はそのリストです。なお、MT4のダウンロード先...
-
CFDの取引をデモ口座で体験するには、デモ口座を提供しているCFD業者に登録する必要があります。ここでは、GCIフィナンシャルの提供するデモ口座を使ってCFDの取引を体験してみます。GCIフィナンシャ...
-
ETFの銘柄数は2012年9月の時点で約140あります。そして、いずれの銘柄にも価格の連動となる対象の商品があります。ここでは、ETFの銘柄をジャンルごとに紹介します。表の「コード」は株式コード、「市...
-
バイナリーオプションで取引される商品には、通貨ペア以外に日経225などの株価指数、東京証券取引所(東証)やニューヨーク証券取引所に上場している株式、そして、金、銀などの先物商品などがあります。以下は、...
- P′′のページへのリンク