Can you summarize the following document?
        
  Müller的目標是建立一種簡單的、可以用最小的編譯器來實現的、符合圖靈完全思想的程式語言。這種語言由八種運算子構成,為Amiga機器編寫的編譯器(第二版)只有240個位元組大小。  就像它的名字所暗示的,Brainfuck程式很難讀懂。儘管如此,Brainfuck圖靈機一樣可以完成任何計算任務。雖然Brainfuck的計算方式如此與眾不同,但它確實能夠正確執行。  這種語言基於一個簡單的機器模型,除了指令,這個機器還包括:一個以位元組為單位、被初始化為零的陣列、一個指向該陣列的指標(初始時指向陣列的第一個位元組)、以及用於輸入輸出的兩個位元組流。  下面是這八種狀態的描述,其中每個狀態由一個字元標識:  按照更節省時間的簡單說法,codice_1也可以說成“向前跳轉到對應的codice_2狀態”。這兩解釋是一樣的。  第三種同價的說法,codice_2意思是“向後跳轉到對應的codice_1”,codice_1意思是“向前跳轉到對應的codice_2指令的次一指令處,如果指標指向的位元組非零。”  Brainfuck程式可以用下面的替換方法翻譯成C語言(假設codice_7是codice_8型別):

  

  一個在螢幕上列印Hello World!的程式:

  從鍵盤讀取一個字元並輸出到螢幕上。

  這是一個連續從鍵盤讀取字元並回顯到螢幕上的迴圈。注意,這裡假定0表示輸入結束,事實上有些系統並非如此。以-1和“未改變”作為判斷依據的程式程式碼分別是和。

  通過移動指標儲存所有的輸入,供後面的程式使用。

  把當前位置的值加到後面的單元中(破壞性的加,它導致左邊的單元被歸零)。

  這個程式會把從鍵盤讀來的小寫字元轉換成大寫。按回車鍵退出程式。  首先,我們通過codice_9讀入第一個字元並把它減10(10 在大多數情況下為換行符 LF 的值)。如果使用者按的是回車鍵,迴圈命令(codice_2)就會直接跳轉到程式的結尾:因為這時第一個位元組已經被減到了零。如果輸入的字元不是換行符(假設它是一個小寫字元),程式進入迴圈。在這裡我們再減去剩下的22,這樣總共減掉32:這是ASCII碼中小寫字元和大寫字元的差值。  下面我們把它輸出到螢幕。然後接收下一個輸入字元,並減去10。如果它是換行符,退出迴圈;否則,再回到迴圈的開始,減去22並輸出......當迴圈退出時,因為後面已經沒有其他的指令,程式也隨之終止。

  »[-]>[-]«< // clear cell #2 and #3 [-»+>+«<] // transfer cell #0 to #2 and #3 該程式碼以 cell #3 作為臨時變數,將儲存在 cell #0 和 cell #1 中的兩個整數相加, 結果儲存在 cell #2;同時維持原來的兩個儲存單元數值不變,方便以後使用。  程式碼執行前,設定指標指向 cell #0,  第一步,先將 cell #2 和 cell #3 清空,確保不會有髒資料影響運算結果;  第二步,將 cell #0 的數值轉移到 cell #2 和 cell #3,隨後利用 cell #3 這個來恢復 cell #0 的值;  第三步,將 cell #1 的數值轉移到 cell #2 和 cell #3,隨後利用 cell #3 這個來恢復 cell #1 的值;  最後,指標歸位(回到初始位置,即指向 cell #0),方便後續運算。

  »[-]>[-]>[-]«« // clear cell #2 and #3 and #4 <] »»[-««+»»]«« // move cell #4 back to #0 跟上面的“加法器”類似,這個“乘法器”將儲存在 cell #0 和 cell #1 的兩個整數相乘,結果儲存在 cell #2;同時維持原來的兩個儲存單元數值不變,方便以後使用。  更多程式碼解析請參見 https://github.com/moky/BrainFuck

  [[Category:深奧的程式語言]]
Brainfuck,是一種極小化的程式語言,它是由Urban Müller在1993年創造的。由於fuck在英語中是髒話,這種語言有時被稱為Brainf*ck或Brainf***,或被簡稱為BF。