2005年05月17日
川俣晶の縁側ソフトウェア技術雑記 total 14023 count

これはジョークではない! 空白文字 [Space][Tab][LF] だけで記述するプログラム言語 "Whitespace"

Written By: 川俣 晶連絡先

 檜山さんが、[日常]プログラミング言語Whitespaceにて、面白いプログラム言語を紹介しています。

 しかも、「新しいプログラミング言語! 好き者必読」などと、ほとんど名指しで私を挑発していますよ (笑。

公式サイト §

 公式サイトと思われるものはこれです。

空白文字 [Space][Tab][LF] だけで記述するプログラム言語 §

 空白文字だけで記述するプログラム言語というものが、なぜ生まれうるのか。

 その理由は、このサイトを見ると分かります。

 サイトの最初の段落のみを、非常にいい加減でデタラメな日本語訳にしてみます。

 日本語訳を信じてはいかんよ (笑。

What is Whitespace?

Whitespaceって何?

Most modern programming languages do not consider white space characters (spaces, tabs and newlines) syntax, ignoring them, as if they weren't there.

多くの現代のプログラム言語は、空白文字(空白、タブ、改行)構文を考慮せず、あたかもそこに無いかのように無視します。

We consider this to be a gross injustice to these perfectly friendly members of the character set.

我々は、完全にフレンドリーな文字セットのメンバーであるこれら(空白文字)に対して、ひどい不公平であると見なします。

Should they be ignored, just because they are invisible?

(空白文字が)無視されねばならないのは、これらが見えないからなのでしょうか?

Whitespace is a language that seeks to redress the balance.

Whitespaceはこの不均衡を是正する言語です。

Any non whitespace characters are ignored; only spaces, tabs and newlines are considered syntax.

全ての非空白文字は無視され、空白、タブ、改行だけが認識される構文となります。

 つまり、空白文字を無視するプログラム言語ばかりなのは不公平だという主張ですね。空白文字を無視する、というのは、たとえばC言語などのソースを書いていて、インデントに何文字空白を入れようと、TABを使おうと、改行を入れてみようと、意味的に変化がないということを意味します。

 この不公平を是正するために、立場を逆転した言語、つまり空白文字だけで記述するプログラム言語を作ろうと。その言語で、空白文字ではない文字は全て無視されます。つまり何を書いても認識されません。

ジョークではない §

 Is this an April Fool's Joke?という問いに、明確にノーと答えています。

 時間がないので試していませんが、チュートリアルやツールなどがあり、動作するとしています。

 処理系のオリジナルはHaskellによって実装されているようですが、他にRubyやPerlによる実装もあるようです。

 実際に、意味のある処理を記述できることは、Exampleを見ると分かります。

 たとえば、Hello Worldのサンプルソースを見ると、確かにそれが記述できていることが分かると思います。

 といっても、サンプルソースを表示させてもコメントしか見えません。全て空白文字で記述されているので、真っ白の背景が広がるだけです。

 読むためには、あるがままにダウンロードし、空白文字を可視化する機能を持ったツールか、あるいは16進ダンプなどを見ながら読むしかないでしょう。

応用範囲 §

 プログラム言語ミーハーが喜ぶ、という他に有益な用途があることが、このサイトでは示されています。つまり、スパイ用です。機密性の高いプログラムは、このプログラム言語で記述し、あとからタイプするためにソースコードをプリントアウトしてファイルを削除してしまえば良いとしています。プリントアウトは真っ白なので、誰もそれが機密プログラムのソースコードなどと思いません。

 誰であろうと、そのプリントアウトがソースコードであることが分からないのです!

 こんなにも完璧な隠蔽手段があるでしょうか!

 「誰であろうと!」です。

懸念事項 §

 とはいえ、問題点もあります。

 たとえば、シンプルすぎる構文は、生産性の低下を招くという危惧があります。この言語のソースは、見えないという点を別にしても、他のプログラム言語よりも多くの文字数を必要とするために、書きにくく理解しにくいという問題があります。

 生産性という観点からは、改善の余地があるでしょう。

 考えられる1つの選択は、非空白文字を使ったシンタックスシュガーの提供です。既存プログラム言語のサブセットから、Whitespaceに変換するコンバータは容易に作成できるでしょう。しかし、その場合は、Whitespaceの見えないという特徴が帳消しにされてしまい、今ひとつメリットが活きません。

 そのような観点から見ると、このサイトが主張する有用性には眉に唾を付けたくなります。

 とはいえ、この言語に存在価値がないとは全く思いません。

 少なくとも、このような言語を面白いと感じて受け入れる感性を推し量る試金石にはなります。つまり、プログラム言語ミーハーとしての資質を問う1つの尺度として使用しうるでしょう。

 また、「オレは何でも知っている」と天狗になっている若者の鼻っ柱を折るために使う、という手もあるでしょう。

余談: イギリス人のセンス §

 このサイトは.ukドメインなので、おそらく書いたのはユナイテッド・キングダムの人なのでしょう。

 これを見ていると、明らかにアメリカ人とは違うイギリス人のひねくれた(褒め言葉)センスが見えて気持ちが良いですね。

 ちなみに、ホラムズさんもイギリスびいきです。