空白だけで書くプログラミング言語がある

|No.192

 コンピュータを動かす命令文を書くプログラミング言語。その中には、空白だけで書く、見た目の真っ白な言語もある。

 その言語の名は「Whitespace」。2003年4月1日、エイプリルフールの日に、イギリスにあるダラム大学の学生、エドウィン・ブレイディとクリス・モリスが発表した。空白文字であるスペース、タブ、改行の3種類しか受け付けず、他の文字は逆にコメントアウトされる。

 空白文字は、多くの言語で無視されがちな存在。開発した2人は公式サイトで、「空白文字を構文とみなさず、目に見えないからといってあたかも存在しないかのように無視するのは甚だ不公平だ」と語り、この不公平さを是正するために開発したとしている。

 Whitespaceで「Hello, world!」と出力するプログラムは以下だ。

 よく見えないので色を付けてみる。(スペースは赤にS、タブは青にT、改行は灰色にL)

SSSTSSTSSSL TL SSSSSTTSSTSTL TL SSSSSTTSTTSSL TL SSSSSTTSTTSSL TL SSSSSTTSTTTTL TL SSSSSTSTTSSL TL SSSSSTSSSSSL TL SSSSSTTTSTTTL TL SSSSSTTSTTTTL TL SSSSSTTTSSTSL TL SSSSSTTSTTSSL TL SSSSSTTSSTSSL TL SSSSSTSSSSTL TL SSL L L

 スペース3つで「スタック(データ格納庫)に次の正の数を入れる」ことを表し、続けてスペースを0、タブを1として2進数で数値を表現。改行で数値の末尾を示す。文字を表したい場合はASCIIコード(文字に識別番号を与えたコード)の数値に変換して入れる。例えば上記の1行目では、「H」を表すASCIIコード「1001000」がスタックに入れられる。

 また、タブ・改行・スペース・スペースで「スタックから値を取り出して対応する文字を出力する」ことを、改行3つで「プログラム終了」を表す。これにより「Hello, world!」と出力される。