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

「俺のソースだから」というプログラマは死んだらいいのに

最近こんなやりとりがあった。

「Cって標準のコンテナ(双方向リストや可変長配列など)がなくて不便。
 Cのプロジェクトってコンテナ自体ないこともあるし、コンテナがないとプログラムって書きにくいよね。
 その点C++STLが(ry」
...
「コンテナ? STL“も”いいけど、自分で書きたい」

正直、自分は「え? 何を言っているんだ?」と思った。
STL“も”いいけど、“自分で書きたい”だって?


その人はプログラマとしては十年選手だが、C++に関して、特にテンプレートに関しては稚児に等しいレベル。
で、どうして「自分で書きたい」ということになるんだろう?
それを使わされる人の苦労はどうなる?
それともプロジェクトに同一の事をするための複数のコンテナが存在するのか?
俺俺コンテナを書きたい理由はなんだ?


要するにここにおいて「自分で書きたい」はSTLがよく解らないので、
機能や動きを隅々まで把握するために自分で書きたい、ということのようだ。


???
STLのソース読めば良いんじゃない?
超例外的なケースに関しては自前で書くこともあるだろうけど、(そんなケースはほぼ無いんだけど)
なぜ「殆どのケースで使われることになるコンテナのようなもの」を自前で書かなければならないのか?
標準で定められた名前、挙動、インターフェイスに逆らわなければならないのか?


加えて、STLの動作が気に入らない時に直せないから、というのもあるようだ。
しかし、そういう人の言う「動作が気に入らない」という理由は殆ど些末なことで正直「どうでもいい」レベルが多い。
STLに関しても挙動が不可思議である、と感じる部分もあるだろうが、それは「Effective STL」でも読んでくれれば良いレベル。


「読むより書いた方が早い」
「自分が書いたソースでないといざというとき何が起きているのかわからないから」


というのもよく聞く話ではあるのだが、
なぜソースを読んだり使ってみたりして理解しないのか?
自分には正直理解ができない。


これが真の達人であるなら自分も達人の書くコンテナというものを見てみたいし、興味がある。
しかし、テンプレートをよく理解していない人間が書いたソースを読むのも、それを使うのもまっぴら御免だ。
もし「俺が標準を超えてやるぜ」という心意気を持っているのなら立派だ。
だが死ね。


言語を触って僅かな期間しか知らないような一介のプログラマ
何年にも渡って使われ練り上げられた標準に勝てるものを書けるだなんていうことは
壮大なる驕りでしかないのだが、なぜ書こうという意識になるのか。


そういう人に共通する方向性を最近見いだした。
こういう人は「自分の書いたソースしか読まないし書かない」事が多い。
加えて「C++ってこういうところが糞だよね」っていう事が多く、
それは理由があってそうなっているんだよね、ということを理解しない。
多くの場合、全ての言語機能には「理由」があるのだが、それに対して「なぜ」ではなく「糞」と片付けてしまう。


あくまで「自分が使って不都合だと感じたらその機能は糞」なのだ。
他の理由があってそうなっているとしても。


要するにその考えの根本は「俺のソースは俺のもの。お前のソースはお前のもの」ということだ。
「俺が書いたものは俺にはわかる。他人が書いたものなんて知らない」という思考に近い。
圧倒的にソースコードリーディングの経験がなく、
他人のコードを読んで挙動を理解し、手を入れるという機会に恵まれていない。
なぜその機能がそうやって実装されているのかを考える機会を与えられていない。


自分のソースだけを変更する機会だけが豊富なので、
「他の人の書いたソースはその人が直すべき。書いた人がいない“標準”なんてソースは不可解な挙動をしたら誰が直すの?」
という負の思考にとらわれているのだ。
「この機能は使いにくい。俺だったらこう書くのに(書けるようにするのに)」
という自分主体の考えに寄り添っているのだ。


これは一概には言えないかもしれないが、人のソースに手をいれる経験をちゃんと持つと、
・読みにくいソースに出会ったとき、読みやすい形に直そうと思う。また、そう書こうと心がけるようになる
・変更の影響度を気にするようになるので影響度を最小に抑えようとする
という傾向を示すと経験から自分は感じている。


勿論、人が書いたソースをいじって(影響度を読み誤って)大失敗、ということもあるのだが、
そんな失敗は(リカバリ体制がちゃんとしていれば)些末なことで、必要な失敗と言える。
そういった失敗はどんどんすべきで、それでソースに対する考え方を身につけるべきだ。


「俺が俺が」のやり方は本当にうまくない。


「俺のソースは俺のもの」は害悪でしかない。


「俺のソースだから」っていう人はみんな死んだらいいのに。