コードの変態性とは何か

 Java変態文法最速マスター - プログラマーの脳みその反応で、そこで取り上げられた文法は別に変態でも何でもない、という意見があったんだけど、そもそも「文法そのものが変態的」か、という話と、「ある文法を利用して変態的なコードを書く」ということを区別しておきたい。

 「文法そのものが変態的」っていうのは世の中に存在するプログラム言語に類を見ない、特殊な文法である、とかそういうニュアンスだろう。

 僕がネタにしたのは、「ある文法を利用して変態的なコードを書く」ことだった。この主体はコードであって文法じゃない。普通はやらないようなナンセンスな、変態的なコードというのがまずありきで、その手法にはこのような文法が用いられる、という話なんだ。

 Java変態文法最速マスター - プログラマーの脳みそに書いたサンプルコードはおおよそナンセンスで真似すべきじゃないものが多数だが、その原理についてはJavaの言語仕様としてできれば知っておきたいものばかりだね。

 そういう意味ではhttp://www.amazon.co.jp/dp/4894717158であるとか、http://www.amazon.co.jp/dp/4894717166に載っていることしか利用していない。ごく普通の文法を用いたコードに過ぎない。しかし、だからといってhttp://www.amazon.co.jp/dp/4894716895で紹介されるようなコードが「ごく普通の文法を用いた特筆すべき点のない普通のコード」というわけではない。この本には変態的なコードばかりが書かれている。

 コードの変態性を求める、というのはプログラマにとってよい娯楽になる。単に楽しいだけでなく、プログラミングの訓練にもなる。与えられた文法を使って、どのようなことが出来るか創造的工夫を凝らすという遊びなんだ。

 文法を暗記することがプログラミングの技能なわけじゃない。手にした文法でどんなプログラムを組めるかが大事なんだ。そう思わないかい?