Cとかアルゴリズムなんて超うんこ
と定時後の雑談中に言われたので、うへぇ、と思って書いてみる。
論旨は、Java(使い)はアルゴリズムを隠蔽しているので、
メモリの使い方とか、各種アルゴリズムがある操作をした場合に定数、対数、線形だとか、
知らなくても良いということなんだけど、
まずLinkedListとArrayListの違いがわからないのはあかんのでは?
と僕は思う。
HashSetやHashMapの中身がどうなっているか解らずにSetやMapを使いこなすこともできないだろう、
と僕は思う。
いかにJavaがそういったものを隠蔽するために産まれてきたとしても、
「何から何まで忘れるために」産まれてきたのではない。
なんとなく「Cなんてうんこ」と言われると癪に障るのは悪いクセなのだろうけれど、
Cのポインタが悪しきバグを生み出してきた事は確かで、
不定な場所を指していても、
不定な場所を操作しても文句一つ言わず、
ある日突然反乱を起こす、
人はそうした暴れん坊なCを嫌ってきた、ということもわかる。*1
でも、Cの時代を忘れ去る際に、
アルゴリズムとか基礎知識とか、そういうものを忘れ去ってはいけないよ。
Cで、mallocしてfreeするのは不毛とか、
文字列型もなくてchar*とかうんことか言われてしまったりすると、
大変へこんでしまう。
ひょっとしたらもう「ヌル文字」なんて忘れ去られても良い概念なのかもしれないけど、
自分でfreeしなけりゃならないなんて泥臭いかもしれないけど、
僕の場合、
大事なことはみんなCが教えてくれた。
みんなこうしてCを忘れていっても良いのかなぁ、
というような事を思う。
Javaだけ、Rubyだけ、Pythonだけ、なんてのもそれはそれで淋しいことなのではないかなぁ。