近年、パソコンが安価になったり、プログラミング環境などがインターネットで無料で入手できるようになったりして、プログラミングがだれにでもできるようになり、学生向けのプログラミングコンテストやアプリコンテストなどが催されたりするようになりました。いったコンテストでは洗練されたプログラムやアプリのアイディア・使い勝手などが審査の基準になるのでしょうが、世界は広いもので、IOCCC,という、C言語を使った、実に奇妙なプログラミングコンテストがあるので、ここで紹介したいと思います。国際難読化Cコードコンテスト)の略であり、その正式名称からわかる通り、「故意に難解なC言語のプログラムを書き、その読みにくさと複雑さを競う」という、実に不思議なコンテストです。科学の世界にも、非常に変てこな研究を行っている研究者に与えられる「イグ・ノーベル賞」という賞がありますが、このコンテストは、さしずめプログラミング会のイグノーベル賞といったところでしょうか。Liner」受賞を受賞した、デビッド・コーン氏の作品を見てみましょう。printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}これを実行すると、正常にコンパイルされ、実行すると「unix」と表示されます。次のソースコードは円周率を計算するプログラムです。_-_-_-_}円のような形のソースコードが、円周率を計算するなんて、本当に面白いですね。変ったものとしては、以下のような、もうほどとど「ASCIIアート」のようなものまでもちゃんとしたCプログラムで、きちんとコンパイル・実行できるというのだから驚きです。図1.ASCIIアートのようなIOCCCのソースコードの例こういうアイディアを考え付くのもすごいですが、それが実際に動くプログラムなのだから、本当に驚きですよね。IOCCCの規約そんなIOCCCですが、公式サイトで大会の理念を次のように説明しています。大会ルールの元で最高に意味不明/難解なCプログラムを書くこと皮肉なやり方でプログラミング作法の重要性を訴えること普通書かないコードを用いてCコンパイラに負荷をかけることC言語の持つ、ある種の神秘性を解き明かすこと粗雑なCコードに関して邪魔の入らない公開討論の場を提供すること第一回大会は1984年に行われ、以降2006年まで年1回のペースで入賞者が発表されています。Shellのソースコード、および初期のBSDのfingerのソースコードを見たことを見たことに由来しているのだとか。いえ、一時期中断されていた時期があっても現在まで続いているというのは、プログラミングの世界にいかに「物好き」は「変った人」が多いか...という一つの証拠になりそうですね。