2008年5月10日土曜日

Brainfuck

約1か月の沈黙からの更新。
iAppli等の開発に忙殺されておりました。その開発中アプリも近々紹介します。

今回はプログラミング言語Brainfuckです。名称が良いものではないです。難読プログラミング言語の一つとか言われています。
命令は><+-.,[]の8つだけ。10分で覚えられちゃいます。 で、これでどの程度プログラムが組めるかというと、普通のプログラミング言語(CとかLispとか)と同じようなことができます(理論上は)。 ただ、ソースを組むのが難しいんです。というか長いんです。 定番のHello, world! +++++++++[>++++++++>+++++++++++>+++++<<<-]>.>++.+++++++..+++.>-.------------.<++++++++.--------.+++.------.--------.>+.

一目見ただけでは、全く何やってるか分かりません。ソースの内容は"Hello, world!"の一文字一文字に当たる文字コードまで、値を移動させて表示させてるだけなんですけどね。

ということで、試しに考えて組んでみました。

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

2つの数字をもらって足した結果を表示します。ただし、合計が10以上になると文字化けします。

こういうパズルな感じを漂わせるものは好きです。
難読な言語は他にもMalbolgeというものがありますが、ソースの見た目に規則性が無いというか、プログラムソースにすら見えないです。
さらには、スペース、タブ、改行のみで構成するWhitespaceなんて言語もあります。
こういうジョーク物はいいですね。ちょっとした頭の体操というか、気休めというか。

ちなみに、普通のプログラミング言語としては、ちょこちょこLispをやっています。今まで、使ったことのある言語(C,Java,C#,Perlとか)と根本的に違うので、中々やりがいがあります。あともう一つPythonもかじってます。

では、こんな所で。

おまけ:
プログラミング初心者に優しいHQ9+という言語を見つけました。
命令はH,Q,9,+の4つ。この言語では、初心者によく出される例題である「"Hello, world!"を出力する」プログラムをいとも簡単に書くことができます。

H

この一文字で"Hello, world!"が出力されます。他にも3つ命令が使えます(詳細略)。
ぜひ試してみてください。