著作一覧 |
言語仕様をまた読み返しているが、こないだkoichikさんからも聞いたけど、確かになんでこういう仕様にしたんだろうか。 言語利用者側の負担が妙に高い気がする(Cはいいの。あれはああいう言語だから)。
/* DOSの頃だな */ int sig; void poll() { sig = 0; while (!sig) { ; } do_something(); }
と書いても全然OKだったのが段々コンパイラが賢くなって
volatile int sig;
と書かないといきなりpoll関数が
void poll() { sig = 0; while (1) { ; } }
とコンパイルされてしまうとか。賢くなったんだか、馬鹿になったんだか。多分、賢くなったつもりで大馬鹿になったんだろう。しかし最適化ってのはコンパイラ開発者が言語利用者を馬鹿だという前提で作るわけだが、むしろマイクロコードの開発者がコンパイラ開発者を馬鹿だという前提で作って、コンパイラは素直に言われたとおりのコードを吐いたほうが良い気がしないでもない。どちらにしても、馬鹿の連鎖だな。
Javaにもそのての香りが漂わないでもない。
ジェズイットを見習え |