プログラミング言語のPi

3月14日はWorld Pi Dayです。 1989年に発明され、2009年に正式に認められたこの日は、さまざまな形で祝われています。 Pi番号に基づいた3つ以上のプログラミング言語がなかったり、少なくとも彼の名誉にちなんで命名されていなかったら、奇妙なことでしょう。 それらについてお話します-伝統をサポートする必要があります:-)



1. Pi-ブレインファック方言




Brainfuckには、ほとんどすべての場面で多くの方言があり、Pi方言もその中にあります。 言語コマンドは、次のようにランダムな数字で誤った数字の形式で数字Piに書き込まれます。



コマンドごとに、書き込まれるビットが選択されます(ビットはソースコードのコマンドと同じ順序で並べられます)。 チームと番号の対応表が取得されます。



< > + — . , [ ]

0 1 2 3 4 5 6 7 8








そして、コマンドラインは、正しい数字Piで選択された位置にある数字の上のコマンドから始めて、1つ右にシフトされます。 たとえば、小数点の後の2番目の数字が選択された場合、その中の正しい数字は4で、対応表は次の形式を取ります。



< > + — . , [ ]

0 1 2 3 4 5 6 7 8








次に、目的のコマンドで、対応する番号を選択し、選択したカテゴリの正しい番号に置き換えます。 プログラム記録の結果は、Piに似た数字ですが、それとは異なる場所もあります。 だから、プログラム「Hello、World!」は、Brainfuckで次のように書かれています。



++++++[>++++++++++++<-]>.>++++++++++[>++++++++++<-]>+.+++++++..+++.>++++[>++++++

+++++<-]>.<+++[>----<-]>.<<<<<+++[>+++++<-]>.>>.+++.------.--------.>>+.








次のようにPiに書き込まれます。



3.141592653589793238462623382272502824197169299275107820904924592337816406386238

99262833482534311206728234808621328230264709314460935058223872535941812844111745

00841022019385311055296426229289549302819244388109726652334471204756422337867231

65221231909345628566933460342610454226248213391607264249148273720587036656315582

17288153092396282225439171532436789559536003133023024882044652108412695192151163

94330573703656595909530921261173839326137921051125420742623799227495273538857227

24892227938133011749109833675362442656243086321294946795024737130702479860343702

77453921711629317375838467480846766440513202056822724526351082178577132275778260

91736271767204684409312229532301462492853110307922896892089235450199501120290219

65862034218129813624774731309964518707241349993993372978039951049734732816036348

59504445345544690330263252250825304468003522193158817101








2. 別のPi言語




難解な言語であっても、この言語は理論的な記述という形でしか存在しません。 言語の考え方は、Piの中で正しいエンコードを選択すると情報を見つけることができるというよく知られた理論に基づいています。 この場合、piはバイナリ表現で記述されます



11.

00100100 00111111 01101010 10001000 10000101 10100011 00001000 11010011

00010011 00011001 10001010 00101110 00000011 01110000 01110011 01000100

10100100 00001001 00111000 00100010 00101001 10011111 00110001 11010000

00001000 00101110 11111010 10011000 11101100 01001110 01101100 10001001








別のPi言語のプログラムのソースコードは、数値のペアです。読み取りを開始するビットのインデックスと、読み取るバイト数です。 読み取りバイトは、対応するASCIIコードを使用して文字に変換され、結果のテキストは他の言語のソースコードとして解釈されます(言語は数字のペアと共に指定する必要があります)。



理論的には、Piの中には、任意の長さのビットのシーケンス、つまり任意の複雑なプログラムのコードを見つけることができます。 この言語はチューリング完全になります(他の言語で実行できるタスクはすべてこの言語で完了できるため)。 別のことは、そのプログラミングの複雑さにより、彼はMalbolgeと議論できることです。 ただし、Malbolgeとは異なり、「Hello、World!」という別のPi言語の記述は簡単でエレガントです。



3 1 HQ9+







このコードを「解釈」するには:



長さの異なるいくつかの例:



(最後の2つの例は、 Search Piサービスを使用して検出されました)



3. Piパターン言語




開発ツールと新しいプログラミング言語を作成するという哲学の間の何か。 これは、言語自体によるプログラミング言語のセマンティクスと構文の拡張性のアイデアに基づいています。



4.ボーナス:-)




Pi Dayへのささやかな贈り物: Pi Day Challenge 2011は、Piの数に関連する毎年更新される一連のパズルです。



All Articles