タイトルはLife with UNIXからのパクり。
ついでなのでLife with UNIXから引用すると
Cは、優れたオペレーティングシステムの七光で栄誉ある地位を築いただけの貧相な言語だなどといわれてきた。だが、それは正しくない。Cは偉大な言語なのだ。Cは実用性とやりすぎ(Adaを見よ)の間でちょうどよいバランスを保っている。処理系は簡単に実現できるし、なおかつ構造化プログラミングや変数の有効範囲、データ構造やモジュール化など、現代の高級言語のエッセンスをすべて組み込んでいるのだ。
Cはなにしろ処理系を作るのが簡単ですし、これで十分それなりの仕事はこなせるので、悪い方がよい原則に従い普及したわけですよね。これは不幸なことだったのかもしれないけど、じゃあどんな言語ならよかったのかというと、たとえば構文がbegin endになったからって嬉しいことは別になく、実用上の効果が出るには、配列の範囲チェックやガベージコレクションのような、実行時のメモリ保護が入らないとあまり意味がないでしょう。でも当時、実行時にそこまでのオーバヘッドが許容できたのかというと…
ところで初心者向けの学習用言語としてCが向いているかどうか、という議論があるようですが、会社の新人の教育担当を何度かしたことがある私の経験からすると、たいていの人は、「低レベルな概念の方が理解が早い」ようです(これもあちこちで書いてるな)。うちの会社に関して言えば、基本情報レベルの勉強を事前に済ませているというのもあるのでしょうが、メモリはわかっている。アドレスも(一応)わかっている。ポインタでつまづくのは、アドレスがわからないためではなく、「intへのポインタに1足すと4進んだりする」といった、アドレスとは異なる挙動を示すところからだと思います(私もそうだった)。
今時間がないのでひとまずここまで。
[追記]いくつかトラックバックを打ったはずですが反映されてない…ってよく考えたらはてなは言及なしトラックバック禁止だったっけ。
Cの老害 - odz buffer
Cの老害? - 神様なんて信じない僕らのために
C言語はプログラマの教養 - カレーなる辛口Javaな転職日記