プログラマとは

数年前、Javaの勉強をし始めたばかりの頃に、パフォーマンスについての記事を見かけた。Javaで文字列の連結を行うときは+=演算子を使うのではなく、StringBufferを使うべきだとその記事では書いてあった。
読みながら「なるほど」と思いながらも「なんかおかしくないか?」という疑問を拭えずにいた。文字列の連結に関する記事を読んでから、ぼくは何度も頭の中で考えてみた。
「文字列を連結するという特殊なケースのみにStringBuilderを使わせるのは面倒ではないか?」「こういった類のパフォーマンスに関することはコンパイラが解釈するべきでプログラマが意識するべきことではないのではないか?」
ずっと疑問が拭えずにいた。

そして、J2SE5.0によって+=演算子がStringBuilderに最適化されるようになった。ぼくの中でうずくまっていた疑心が徐々に確信へと色を変え始めた。
ぼくの今の意見は以下の通りである。

プログラミング言語プログラマに対してパフォーマンス等のVM(実行環境)の都合で特殊なケースに対応させるような記述をさせるべきでない。
そういうのはすべてコンパイラの仕事だ。


というのがこのエントリーの主張なんですけど、要はツールの低レベルな問題を(素人から玄人まで影響を受けるような)広範囲に及ぶところまで広げるな、ということです。
StringBufferだって使わなくて良いのなら使わない方が良いのです。