IOCCC(国際邪悪なCコードコンテスト)
プログラミングの世界にいる人なら知っている方も多いと思います。IOCCC(International Obfuscated C Code Contest)。日本語に訳すなら「国際邪悪なCコードコンテスト」。毎年1回開催され、2005年で18回目となる歴史あるコンテストです。公式サイトはこちらです。→ http://www.ioccc.org/このコンテストの目的を公式サイトから引用します(日本語訳は私の手による超意訳です)。To write the most Obscure/Obfuscated C program under the rules below.以下のルールに従って最大限に"邪悪な"Cプログラムを書くこと。To show the importance of programming style, in an ironic way.プログラミングスタイルの重要性について示すこと。皮肉的な方法で。To stress C compilers with unusual code.普通でないコードによってCコンパイラの限界を試すこと。To illustrate some of the subtleties of the C language.C言語がもつプログラミングの機微を表現すること。To provide a safe forum for poor C code. :-)お粗末なCコードに対して(プロの厳しい批判の無い)"安全な"フォーラムを提供すること:-)毎年3月~5月の間にその年の作品を募集し、秋に受賞作品が決まります。2006年度(第19回)の募集開始がそろそろのはずなので、C言語を知り尽くしているという自信のある方はチャレンジしてみてはいかがでしょうか。なお栄えある第1回(1984年)の最優秀作品はこんなプログラムです。short main[] = { 277, 04735, -4129, 25, 0, 477, 1019, 0xbef, 0, 12800, -113, 21119, 0x52d7, -1006, -7151, 0, 0x4bc, 020004, 14880, 10541, 2056, 04010, 4548, 3044, -6716, 0x9, 4407, 6, 5568, 1, -30460, 0, 0x9, 5570, 512, -30419, 0x7e82, 0760, 6, 0, 4, 02400, 15, 0, 4, 1280, 4, 0, 4, 0, 0, 0, 0x8, 0, 4, 0, ',', 0, 12, 0, 4, 0, '#', 0, 020, 0, 4, 0, 30, 0, 026, 0, 0x6176, 120, 25712, 'p', 072163, 'r', 29303, 29801, 'e'};配列の初期値を設定してるだけです。"たまたま"mainという名前の配列を。邪悪すぎて、次の年からのコンテストルールを変えさせたほどの影響力あるプログラムです(特定の実行環境に依存するようなプログラムはNGになった)。なおこのプログラムはVAX-11またはPDP-11でしか動きませんが、同様のアイデアで他の機種やOS版も作れるはずです。C言語のオブジェクトのスタートアップルーチン(crt0.o)の挙動を理解していれば、これが立派なプログラムであることは理解できると思いますが、それにしてもよくこんなの思いついたなぁというのが初めて見たときの率直な感想でした。こんなのに勝てるプログラムを私も書いてみたい。