読者です 読者をやめる 読者になる 読者になる

Cとかアルゴリズムなんて超うんこ

と定時後の雑談中に言われたので、うへぇ、と思って書いてみる。


論旨は、Java(使い)はアルゴリズムを隠蔽しているので、
メモリの使い方とか、各種アルゴリズムがある操作をした場合に定数、対数、線形だとか、
知らなくても良いということなんだけど、
まずLinkedListとArrayListの違いがわからないのはあかんのでは?


と僕は思う。


HashSetやHashMapの中身がどうなっているか解らずにSetやMapを使いこなすこともできないだろう、


と僕は思う。


いかにJavaがそういったものを隠蔽するために産まれてきたとしても、
「何から何まで忘れるために」産まれてきたのではない。


なんとなく「Cなんてうんこ」と言われると癪に障るのは悪いクセなのだろうけれど、
Cのポインタが悪しきバグを生み出してきた事は確かで、
不定な場所を指していても、
不定な場所を操作しても文句一つ言わず、
ある日突然反乱を起こす、
人はそうした暴れん坊なCを嫌ってきた、ということもわかる。*1


でも、Cの時代を忘れ去る際に、
アルゴリズムとか基礎知識とか、そういうものを忘れ去ってはいけないよ。


Cで、mallocしてfreeするのは不毛とか、
文字列型もなくてchar*とかうんことか言われてしまったりすると、
大変へこんでしまう。
ひょっとしたらもう「ヌル文字」なんて忘れ去られても良い概念なのかもしれないけど、
自分でfreeしなけりゃならないなんて泥臭いかもしれないけど、
僕の場合、


大事なことはみんなCが教えてくれた。


みんなこうしてCを忘れていっても良いのかなぁ、
というような事を思う。
Javaだけ、Rubyだけ、Pythonだけ、なんてのもそれはそれで淋しいことなのではないかなぁ。

*1:でも、僕は自分でmalloc,freeするほうが好きだ。バグるけど