工夫する余地

C#2.0時代のゲームプログラミング(38) - やねうらお−よっちゃんイカ(ry

.NET関係ではコーディング指針を示した書籍が少ない。(というか私は日本語で書かれているものは寡聞にして知らない) C#C++よりはどちらかと言えばJavaに近いので定評のあるJava本にはC#プログラマが読むに値すべき内容が書かれているのだなと思った。

"Effective Java"が出た当時、Javaが面白いなと思ったのはコーディングやイディオムに少し気をつけることによって、プログラムの性能や効率が改善されたり、スマートで美しくなったりすることだった。GCを標準で装備する現代の高級言語においても、CやC++同様にまだ「工夫する余地」があるってのが新鮮だったのである。
私は、C#のコーディング本が少ないのは、純粋に.NET本の絶対量が少ないという理由の他に、C#(+.NET CLR)はJava(+JVM)に比べても「工夫する余地」がさほど無い言語処理系だからではないかと思っている。
もちろんやねうらおさんが書いているように"Effective Java"のかなりの部分はC#にも適用できるのだが、改善の幅(Effectiveness)はJavaのほうが圧倒的に大きい(当時大きかった)のだと思うのだ。

言語の完成度とも関連するのだろうが、今後プログラマが「工夫する余地」ってのはどんどん少なくなっていくだろう、という説があり、最もだとは思うのだが、一方では、言語は動的な方向に進んでいるので別な部分での「工夫する余地」ってのが生まれていくという説もある。どっちも本当のような気がする。

追記:発展途上の言語(+処理系)にときめく人達は、この「工夫する余地」が多く残っているからではないだろうか。