プログラミング
コンピューターに指示を出して処理をさせることをプログラミングと言い、その指示をプログラムと呼びます。プログラミング言語というのは、プログラムを記述するための言語の総称です。
日本語、英語、スペイン語が自然発生的に生まれた言語に対して、プログラミング言語は人為的に創作された(人工)言語になるため、様々なものがあります。
"Hello, world!"と画面上に表示するプログラムを書いて各プログラミング言語の違いを確認するのが常となっています。
以下はその一覧ですが、最初のBASICとC++の二つ以外は見た目的に格好良いものを僕が恣意的に選んでいます。
ので、「UnlambdaとかLazyKとかが無いっすよ!関数型にもっと注目を!」等と言うクレームは受け付けないのであしからず。。
Hello, world!
BASIC
PRINT "Hello, world!"
C++
# include <iostream>
int main() {
std::cout << "Hello, world!" << std::endl;
return 0;
}
ACRONYM
{{>>{~~~~{-<}~~~~~~~~~{-<-<}}<<}
</(<<<){[<]}:>:{>>{~~~~~~~~{<}~{>}}<<}\
~>{{~{v}}>>>v{~}^<<<}/(<<<){[<<]}:>:{>>{~~~~~~~~{<<}~{>>}}<<}\
~{>>{vvvvvvvv~~~~~~~~~~~~~~~}<<}~{>>{vvvv~~~~~~~~~~~~~}<<}~
{>>{^^^^^^^^^^~}<<}~{>>{v~~~~~~~{{<<}~}v{~}vvvvvvv{~{>>}}^^^^^^~~~
{{<<}~}vvvv{~{>>}}v~~~}<<}~<{{^^^}}~
{>>{vvvvvv~{{<<}~{>>}}^^^^^^^~~~~~~~~~~~{{<<}~{v>}}^^^^^^}}
/{{()}}{[<<<<]}:>:{{~v}}\}
Befunge
"!dlrow olleH">v
:
,
^_@
Black
# #
#
#
#
# # #
#
7
2
N
1
0
1
N
1
0
8
N
1
0
8
N
1
1
1
N
4
4
N
3
2
N
1
1
9
N
1
1
1
N
1
1
4
N
1
0
8
N
1
0
0
N
3
3
N
1
0
N
##
Blub
blub. blub? blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub! blub?
blub? blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub? blub! blub!
blub? blub! blub? blub. blub! blub. blub. blub? blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub.
blub! blub? blub? blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub? blub! blub! blub? blub! blub? blub. blub. blub.
blub! blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub! blub. blub! blub. blub. blub.
blub. blub. blub. blub. blub! blub. blub. blub? blub. blub? blub. blub? blub. blub. blub. blub. blub. blub. blub. blub. blub. blub.
blub. blub. blub. blub. blub. blub. blub! blub? blub? blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub? blub! blub!
blub? blub! blub? blub. blub! blub. blub. blub? blub. blub? blub. blub? blub. blub. blub. blub. blub. blub. blub. blub. blub. blub.
blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub! blub? blub? blub. blub. blub. blub. blub. blub. blub. blub. blub.
blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub. blub? blub! blub! blub? blub! blub? blub. blub! blub! blub! blub!
blub! blub! blub! blub. blub? blub. blub? blub. blub? blub. blub? blub. blub! blub. blub. blub. blub. blub. blub. blub. blub! blub.
blub! blub! blub! blub! blub! blub! blub! blub! blub! blub! blub! blub! blub! blub. blub! blub! blub! blub! blub! blub! blub! blub!
blub! blub! blub! blub! blub! blub! blub! blub! blub! blub. blub. blub? blub. blub? blub. blub. blub! blub.
Brainloller (画像です)
http://www.esolangs.org/w/images/d/d0/Hello.png
Byter
>>>>>>>>>V00V00V
0#00A00V<V00V0VV
-+>>A00VV<<0$0V>
V0AA<00V>V<<<<V0
>>V0V<<<-<000V<0
0AV0VV<<<0000V<0
0A>V+}>>>>>>}<V-
0A{>>>>-000000>V
00A0000>>>>>>>>A
V0A<<<<<<<<<<<<>
V000000000000000
V000000000000000
V000000000000000
V000000000000000
V000000000000000
>>>>>>>>>>>>V000
Choon(サウンドファイルです)
AGb-A#A#+A+%A#DF-AC#
http://www.stephensykes.com/choon/hello.wav
HQ9+
H
Malbolge
(=<`#9]~6ZY32Vw/.R,+Op(L,+k#Gh&}Cdz@aw=;zyKw%ut4Uqp0/mlejihtfrHcbaC2^W\>Z,XW)UTSL53\HGFjW
C-Intercal
DO ,1 <- #13
PLEASE DO ,1 SUB #1 <- #234
DO ,1 SUB #2 <- #112
DO ,1 SUB #3 <- #112
DO ,1 SUB #4 <- #0
DO ,1 SUB #5 <- #64
DO ,1 SUB #6 <- #194
DO ,1 SUB #7 <- #48
PLEASE DO ,1 SUB #8 <- #22
DO ,1 SUB #9 <- #248
DO ,1 SUB #10 <- #168
DO ,1 SUB #11 <- #24
DO ,1 SUB #12 <- #16
DO ,1 SUB #13 <- #214
PLEASE READ OUT ,1
PLEASE GIVE UP
DNA#
AT
T--A
A----T
T-----A
T-----A
G----C
T--A
GC
CG
C--G
A----T
A-----T
T-----A
A----T
A--T
GC
AT
C--G
T----A
C-----G
T-----A
G----C
C--G
CG
AT
A--T
T----A
A-----T
A-----T
G----C
A--T
GC
TA
G--C
T----A
G-----C
C-----G
C----G
A--T
GC
TA
G--C
A----T
G-----C
A-----T
C----G
A--T
CG
GC
A--T
A----T
C-----G
A-----T
C----G
A--T
CG
GC
A--T
T----A
G-----C
A-----T
G----C
A--T
CG
GC
A--T
G----C
A-----T
A-----T
T----A
A--T
TA
AT
T--A
G----C
A-----T
A-----T
A----T
G--C
AT
AT
G--C
T----A
G-----C
A-----T
G----C
G--C
AT
TA
T--A
A----T
G-----C
G-----C
A----T
A--T
TA
AT
T--A
A----T
T-----A
G-----C
A----T
T--A
TA
AT
G--C
A----T
T-----A
A-----T
T----A
G--C
AT
TA
T--A
A----T
G-----C
G-----C
A----T
A--T
AT
AT
T--A
G----C
A-----T
dupdog(文字化けではありません)
H???????????????????????????????????????????????????????????????????????????????
??????????????????????????????????e?????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????
????????????????l???????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????w???
o???????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????l???d?????????????????????????
????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????CCCCCCCCCCCCCCCCCCCCCCCC
CCCCCCCCC???????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????
??????????????????r?????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????X?????
????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????
??o?????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????l?????????????
????????????????????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????
evil
zaeeeaeeew
zaeeaeeaeaw
zaeaeeaeeaew
zaeaeeaeeaew
zuueeueew
zaeeeeew
zuueueueeeew
zuueeueew
zaeeaeeaeaeew
zaeaeeaeeaew
zaeeaeeaew
zaeeeeeaw
zaeeeeeaeawuuuw
Omgrofl
lol iz 72
rofl lol
lol iz 101
rofl lol
lol iz 108
rofl lol
rofl lol
lool iz 111
rofl lool
loool iz 44
rofl loool
loool iz 32
rofl loool
loool iz 87
rofl loool
rofl lool
lool iz 114
rofl lool
rofl lol
lol iz 100
rofl lol
lol iz 33
rofl lol
PATH
\/\ /\ /\ /\
+++ ++ ++ ++
+++ ++ /++++\ ++ ++ /++++\
++\++\++ + + ++ ++ + +
++ +++ +/+++/ ++ ++ + +
++ +++ ++ ++ ++ + +
\/ \/\ /\+++ /\ /\ /++.+/
\ \
/++++.+++++++++++++++++++++++++++ / \
/\ - -#
++ . -.
+ / \++++\ /++++\ ++ /---\- -+
+ /\ + + + + + +. - .- -}
+ +. + + + + +- - +-
. +} + + + + +- - +- -.
\.+/\++/ \++++/ + +\ /-.+/- --
\ / \.{/ \ / \/
Pieces
# # # # + + # # + #
###+++# #+++# #+++# #+++# #+++####+++###+ +###+ +###+ +###+ +###+ +## #+ +## #++###+ +###+ +###+ +###++++###+++# #+++# #+++# #++ +# #+++## #+++###+ +###+ +###+ +## #++ +###+ +###++ +###++###+++# #+++# #+++# #+++# #++ +# #+++# #+++# #+ +## #+ +## #+++##+++###+ +###+ +###+ +###+ +###+++####+++###+ +###+ +###+ +###+ +## #++ +# #+ +## #++ +####+++# #+ +## #+ +## #++ +## #++ +## #++++## #++ +## #++ +## #++ +## #++ +## #+++##+++####
####+++###+++###+++###+++###+++####+++###+++###+++###+++###+++##++++###+++####+++###+++###+++###+++###++++###+++###+++###++####+++###++++###++++###+++###+++###+++####++++###+++###++++##+++###+++###+++###+++###+++###++++##++####++####++####++++#####++###+++###+++###+++###+++###+++###+++####+++###+++###+++###+++###+++####+++###++++####++++####++###+++####++++####++++####++++####++++####++++####++++####++++####++++####++###+++####
###++####++####++####++####++####++++##++++##++++##++++##++++##+++####+++####+++##++++##++++##++++##++++####++####++####++###++++###++++###++++##++++##++++##++++####++++##++++##+++++##+++###++####++####++####++####++++####+++###+++###+++###++++###++###+++##++++##++++##++++##++++##+++####++++##++++##++++##++++##++++###++++###+++####++++####+++###+++####+++####++++####++++####++++####++++####++++####++++####++++#####++###++####
###+++###+++###+++###+++###+++# ##+++###+++###+++###+++###+++###+++# ##+++# ##++###+++###+++###+++###+ ++###+++###+++###+++###+ ++###+ +# ##+ +###+++###+++###+++# ##+ ++###+++###+ ++###++###+++###+++###+++###+++###+ ++###+++###+++###+++# ##+++# ##+++##+++###+++###+++###+++###+++###+++# ##+++###+++###+++###+++###+++####+ ++###+++####++++## #+++###+++# ##+++####++++####++++####+ ++####++++####++++####++++####++++# ##+++##+++# ##
# # + + + # # +
Qdeql
---------- ---------- ---------- ---------- ----------
---------- ---------- ---------- ---------- ---------- h
---------- ---------- ---------- ---------- ----------
--*
---------- ---------- ---------- ---------- ----------
---------- ---------- ---------- ---------- ---------- e
---------- ---------- ---------- ---------- ----------
-----*
-\=/-
---------- ---------- ---------- ---------- ----------
---------- ---------- ---------- ---------- ---------- l
---------- ---------- ---------- ---------- ----------
---------- ---------- ---------- ---------- ----------
---------- ---------- ---------- ---------- ---------- l
---------- ---------- ---------- ---------- ----**
---------- ---------- ---------- ---------- ----------
---------- ---------- ---------- ---------- ---------- o
---------- ---------- ---------- ---------- -----*
---------- ---------- ---------- ---------- ----------
---------- ---------- ---------- ---------- ----------
---------- ---------- ---------- ---------- ---------- space
---------- ---------- ---------- ---------- ----------
---------- ---------- ----*
---------- ---------- ---------- ---------- ----------
---------- ---------- ---------- ---------- ---------- w
---------- ---------- ---------- -------*
---------- ---------- ---------- ---------- ----------
---------- ---------- ---------- ---------- ---------- o
---------- ---------- ---------- ---------- -----*
---------- ---------- ---------- ---------- ----------
---------- ---------- ---------- ---------- ---------- r
---------- ---------- ---------- ---------- --*
---------- ---------- ---------- ---------- ----------
---------- ---------- ---------- ---------- ---------- l
---------- ---------- ---------- ---------- --------*
---------- ---------- ---------- ---------- ----------
---------- ---------- ---------- ---------- ---------- d
---------- ---------- ---------- ---------- ----------
------*
---------- ---------- ---------- ---------- ----------
---------- ---------- ---------- ---------- ----------
---------- ---------- ---------- ---------- ---------- newline
---------- ---------- ---------- ---------- ----------
---------- ---------- ---------- ---------- ------*
SNUSP
/e+++++++++++++++++++++++++++++.\
./\/\/\ /+++\!>.+++o.l.+++++++l/ #/?\
$H!\++++++\ + \comma.------------ .<w++++++++.\ /?\<!\-/
/++++++/ +/\ /.--------o/ \-/!.++++++++++/?\n
/=\++++++\ +\\!=++++++\ \r+++.l------.d--------.>+.!\-/
\!\/\/\/\/ \++++++++++/
Spiral
e0v *** *eXlv** *lX *2X **oXi
v * * * * * * 2 * o ** v*
* * * * * ***** * v * v * *iX *
* * * * * * * ^ v * * * w *
* *** * * ***** * v * * * * v *
* * * ^ * ^ * * * * * *
* *** * * ****v * v * * v * * *
* * * * * * * * * * ^ * * *
* * * * * ***** * ***** * ***** * *** *
* * * * * * * * * * ** **
*** *** ******* *****v^ ******* *****
*wX *** **3Xp *rX4.. d5* qd**
* 3 * * ** v^ * .. * * * ***
* v * ^ * #pX v * .. . * * * **
* *** v * # r # * .. . * * * !q* *
* * * * * # v # * 54 .. * * * * * *
* * * * * # * # * @X * * * * * *
* * * * * # * # * v * * * * * *
* * * * * # * # * * ** * * * * * *
* * * * # * # * ** ** * * * *** *
* * * * #v* ^ * *** * * ***** * **
** * ** ** *v * * * * * * * ***
***** *v^** *** *** ******* ****
TheSquare
v#############@
+:DDDDDDDDDDD:[
+#;;;;;;;;;;;#
+
+ ;;
+ >v ;
+ JJ+ >v
+>^-+ J-
+/--+ --
v{>[<;; --
/- + >v; --
+\ +;JJ+>v --
++ +>^++J- --
++ +J++++-;--
++ >^>^++->^-
++ ++-Jv<
>^ >^-+ ;
# v-<+>[ ^
# - ;+
# >-[^
Tree
^
^^|^^
^^\|/^^
H^ |/^^^
\| e
|/
ol~|
\|
, 32| W
\/ | /
\ |/
l \|
\ d | o
\/ !|r /
\/ |\/
\ |/
\|
Wierd
H ************************ ****************** **********
e * * * * * * *
l * *** * ** * * * * *
! o * *** * * * * * * * * *
, * * * ** * * * * * * * *
W * * * * * * * * * * * ** *
r * * * * * * ************ * * * * * * *
d * * * * * * * * ****** * * * * *
* * * * * ** ** * * * * * * *
* ** * * * * * * * ** * *
* * * * * * ** ** * * * * *
* * * * * ** ** * ** * * * *
******************** * * * ** * ** **** *** *
* ** * * ** * ** *
* ** * * * ** * ** *
* ** * ** * ** ** * ** *
***** * ** * * ** ** ** *
** * * ** *
* * *
************************************************************* * *****************************
* * *
* *** * *
* * * * * *
* ** * * * *
* * * * ** ****** * *********************
* * * * * * * * *
* * * * * * * * *
* * * * ** * * * *
* * * * ** * * * *
* * * ***** ** * * * *
* * ** * ** ** * * * *
* * ** * ** ** ***** * * *
* * ** * * ** * * *
* * ** ** * * ** * ** *
* * * ** ***** ** ** * ** *
* * * ** ** * * *
* * ** ** * * *
** * ** * ** *
* * * * *
* * ************************************************************* * * *
** * * * * * *
** * * * * * * *
* * * ************************* ** * * * *
* * * * * * * * * * *
*** * * * * * * * * * * ************** *
* * * * ** * * * * * ** ** * *
* * * * * * *** * * * * ** ** ******* *
** * * * ** * * * * ** * *
* * * * * * * * ** * *
* * * * * * * ** * *
* * * * * * * ** * *
* * * * * * * * ** * *
* * * * * ** * * ** * *
* * * * * * * * * * * *
* * * * * * * * * * * *
* * * * ** * * * * * *
* * * * * * * * * * *
* * * * * * * ** *
* * * * * * * * *
* * * * * * * *
* * * ***** * * *
* * * * * *
* * * * * *
* ** * * *
* * * * *
* * * *
***************************** * *
* *
*********************************************************************************************** *
* *
* *
* ** *
* ** ** *
* ** * *
* ** * *
* ** * *
* ** * *
* ** * ****** *
* **** ** * * * ******************
* * * ** ** ** * *
* * * ** ** * ** *
* * * * * *
* * * * * *
* ***** * * * *
* * * * * *
* * ** * *
* * * * *
* * * *
******* * *
** ** *
** ** * *
** ** * **
************************ ** ** * * *
* ** * * *
* * * * *
* ** * * *
* * * * * *
* * * * * *
* * * ** *
* * ** * *
* * ** *
* * ** *
** ** *
* ** ******************************
** ** **
** ** **
** ** **
** * **
* **
* **
* **
* ** ** **
*************** ** **
2L
*+ 2L "Hello, World!" program by poiuy_qwert +
+ +
* +*
* + *+
+ ** + *
+* +
* + *+
+ + *
+******************************************* *************************
+ +
+
*+
+ *+*
+ *+ *
* + *+
+ + * +
+******** * +
+ +*
+ * *+
+ *+ *
* + *+
+ + * +
+****** **+
+*
+ *
*+ +
+ * + +
***+ * * +*
+ * *+
* + + *
+ + * *+ +
************************+ * + * +
+ * +
* + + *+
+ +*
+ *
+ * * +
*******************************************************+* + * +
+ * +
* + + +*
+ + * *+
+ *+ *
* + * +
+ + * *
+************ * +
+ * + +
* + * +
+ *+ +**
+******************************************************************* *
+ + * +
* + +
+ + +*
***+ * * *+
+ *
* + + * +
* + * + +
+ + + *+
*******+ * * +*
+ *
* + + *
* + * +
+ + +
*****************************+ * *
+ *
* +
* +
+
************************************************************************+ *
+ * *
+
+
等です。
多くのプログラミング言語は実用的なモノを目指していますが、連載で紹介しているものはそうでないものが多いです。
難解プログラミング系Hello World
http://www.esolangs.org/wiki/Hello_world_program_in_esoteric_languages
Brainfuck
Brainfuckは8つの命令、テープとポインタで構成されています。
テープは十分なサイズを持つ配列で各要素は1バイトの範囲の整数を持つ事が出来ます。
ポインタはテープのどこの位置か指すオブジェクトです。
初期状態では、テープの中身は全て0でポインタの位置は一番左の要素をさしています。
8つの命令は
- > ポインタをインクリメントする。(左に1個移動する)
- < ポインタをデクリメントする。(右に1個移動する)
- + ポインタが指す値をインクリメントする。
- - ポインタが指す値をデクリメントする。
- . ポインタが指す値を出力する。
- , 1バイトを入力してポインタが指す値に代入する。
- [ ポインタが指す値が0なら、対応する ] の直後までジャンプする。
- ] ポインタが指す値が0でないなら、対応する [ にジャンプする。
です。
例えば、一番簡単な方法でrzmと表示したい場合、ポインタの移動やジャンプを一切使用せず「+」「-」「.」のみを使って以下の様に書くことが出来ます。
++++++++++
++++++++++
++++++++++
++++++++++
++++++++++
++++++++++
++++++++++
++++++++++
++++++++++
++++++++++
++++++++++
++++
.
++++++++
.
----------
---
.
こちらの処理の流れとしては以下の様になります。
- 「+」を114個並べてポインタ位置の値をrのASCIIコード=114までインクリメント。
- 「.」でASCIIコード114に対応する文字rを出力。
- 「+」を8個並べてポインタ位置の値をzのASCIIコード=122までインクリメント。
- 「.」でASCIIコード122に対応する文字zを出力。
- 「-」を13個並べてポインタ位置の値をmのASCIIコード=109までデクリメント。
- 「.」でASCIIコード109に対応する文字mを出力。
ところが、ポインタの移動と「 [ 」と「 ] 」で組み合わせたループ処理を行う事で上記のプログラムを短くする事が出来ます。
+++++++++++
[ > ++++++++++ < -] >
++++
.
上記のプログラムが文字「r」を表示するためのプログラムです。まずはこちらを手順を追って書いて行きます。
テープの初期状態(下線はポインタの位置)
| 0 | 0 | 0 | 0 | ...
「+」を11個ならべて11回インクリメント
++++++++++
| 11 | 0 | 0 | 0 | ...
「[」は0で無い時は何もしないので次の命令へ
| 11 | 0 | 0 | 0 | ...
「>」でポインタを移動
| 11 | 0 | 0 | 0 | ...
「+」で10回インクリメント
| 11 | 10 | 0 | 0 | ...
「<」でポインタを移動
| 11 | 10 | 0 | 0 | ...
「-」
| 10 | 10 | 0 | 0 | ...
「]」は0で無いので、対応する]までジャンプ
| 10 | 10 | 0 | 0 | ...
また「[」命令があるところから初めて
「[」は0で無い時は何もしないので次の命令へ
| 10 | 10 | 0 | 0 | ...
「>」でポインタを移動
| 10 | 10 | 0 | 0 | ...
「+」を10個ならべて10回インクリメント
| 10 | 20 | 0 | 0 | ...
「<」でポインタを移動
| 10 | 20 | 0 | 0 | ...
「-」でデクリメント
| 9 | 20 | 0 | 0 | ...
「]」は0で無いので、対応する]までジャンプ
| 9 | 20 | 0 | 0 | ...
という形で「[」と「]」命令の間をループ処理していくと
| 0 | 110 | 0 | 0 | ...
となり、
「[]は0の時「」」の直後の命令までジャンプ
| 0 | 110 | 0 | 0 | ...
「>」でポインタを移動
| 0 | 110 | 0 | 0 | ...
「+」を4個並べてで4回インクリメント
| 0 | 114 | 0 | 0 | ...
「.」でASCIIコード114に対応する文字r を出力。
ループ処理を使うことで
++++++++++
++++++++++
++++++++++
++++++++++
++++++++++
++++++++++
++++++++++
++++++++++
++++++++++
++++++++++
++++++++++
++++
.
を
+++++++++++
[ > ++++++++++ < -] >
++++
.
の様に短くする事が出来た。
同じ要領でzとmを出力するためのプログラムを書くと、
「<」でポインタを移動して
| 0 | 114 | 0 | 0 | ...
同じ要領で、ループ処理で左から2番目の
テープの値を8回インクリメントして出力
+++
[>+++<-]
> -
.
| 0 | 122 | 0 | 0 | ...
.
「<」でポインタを移動して
| 0 | 122 | 0 | 0 | ...
ループ処理で左から2番目の
テープの値を13回インクリメントして出力
+++
[>---<-]
>----
.
以上をまとめると、rzmと出力するための
プログラムは
+++++++++++
[ > ++++++++++ < -] >
++++
.
<
+++
[>+++<-]
> -
.
<
+++
[>---<-]
>----
.
と書く事が出来ます。
スペースと改行は無視されるので、少し整理すると以下の様になります。
+++++++++++
[ > ++++++++++ < -] >
++++.<+++[>+++<-]
>-.<+++[>---<-]>----.
是非、実際に実行して結果を確認してみてください。
ちなみに、CやJava等、普通のプログラミング言語で解ける問題は
Brainfuckでも解く事が出来る事が証明されています。
こちらはチューリング完全、チューリング機械という
キーワードを調べてみると理解が深まると思います。
Whitespace
「無視されて来た空白との公平性のために、、、」
ということで、作られたプログラミング言語で半角スペース、タブ文字、改行で構成されます。
3種類の文字でどのようにプログラミングを行うかと言うと、
[Space][Space]:加算
[Space][Tab]:引き算
[Space][LF]:かけ算
[Tab][Space]:割り算
[Tab][Tab]:剰余
の様に組み合わせで命令を表現しています。
詳細は本家サイトとwikipediaに譲ります。
http://compsoc.dur.ac.uk/whitespace/
http://ja.wikipedia.org/wiki/Whitespace