simotin13's message

simotin13といいます。記事の内容でご質問やご意見がありましたらお気軽にコメントしてください\^o^/

C++に関する思いで ~へぼいプログラマー様からコメント頂きました~

へぼいプログラマー様、コメントありがとうございました。
(※すいません、恐らくへぼいプログラマーの方ではないと思いますが)


コメント頂いた内容には私も共感致しました。
私もどちらかと言えばC言語が好きですね。

なによりC++は言語仕様が

(ガチャ)おや、誰か部屋に入ってき・


いや、C++を使いこなしている人は凄く良く勉強していて頭のよい人が多いイメージがあります。まさに天才にだけ使うことを許された神言語!

まぁC++をきちんと勉強せずに使っている人はもっと多いと思いますが・・・(私がその一人ですが)



さて、せっかくコメント頂いたので、共感する理由というわけではないですが、C++に関するほろ苦くて切ない私の思いで書いておきたいと思います。


私が随分前に参加させてもらった(C++を使う)プロジェクトでは、More Effective C++がメンバーの必読書に指定されていて

「読んでないやつにはコード書かせるな」

みたいなルールがありました。
マルチパラダイムな書き方した人や上記書籍にかかれているルールから逸脱した人はレビューでボコられた上、改善の見込みがないと判断された人はプロジェクトからいつの間にかいなくなっていました。

C++スキルの判定は、
中級者:「テンプレートが使いこなせる」
上級者:「boostのコードを追っかけてバグを指摘できる」
みたいなノリでした。

実際、私もテストコードを書くくらいのタスクしかアサインして貰えませんでした。

今振り返ってみてもそれらの判断基準はプロジェクトの品質を保つためには正しいものだったと思います。

テンプレート?何それおいしいの?

何年か経ってからあるプロジェクトで、「C言語で開発するかC++で開発するか」を選ぶ必要がありました。
私の推しメンはもちろんC言語で、持てる票の全てをC言語に投じました。

理由は、新人・C++未経験が2名いたのと、他のメンバーもC++でコードを書くということがどういうことか分かっていないようだったからです。

メンバーは皆それなりに経験がある方々でオブジェクト指向での開発経験はあったと思いますが、More Efective C++の内容が頭と体に叩き込まれているというメンバーはいなかったと思いますし、ましてやその時点でテンプレートを使いこなしてブイブイ言わせてるような人も1名もいなかったと思います。

Effective C++ 第3版 (ADDISON-WESLEY PROFESSIONAL COMPUTI)

Effective C++ 第3版 (ADDISON-WESLEY PROFESSIONAL COMPUTI)


(継承・オーバーライドといったオブジェクト指向言語の機能を使えばコード量が減らせるであろう仕様も当然ありましたので)経験のある人には、「C++で開発したい」という意見もありましたが、一番多かったのは、

「え~!?わたし~どっちがいいかわかんな~い!」

という意見なき意見が最も多くて、

そういう人達がC++でコーディングをしたら何が起こるかというのは容易に想像できました。
※「C++で開発したい」という人が(教育とか含めて)プロジェクトで書かれたコードに全責任を負ってくれるのであればいいですがそうもいきませんので。

結果としてC言語で開発することになりましたが、あれはあれでよかったんだろうと今でも思います。

C++はもしプログラマが間違っている可能性があったとしてもプログラマに選択の余地を与える。」

というのが哲学の一つにあるようですが、

マルチパラダイムな書き方を許容するC++言語を使って実際のプロジェクトの運営では、マルチパラダイムな書き方をするプログラマーを排除する必要があるというのは良いとか悪いとかの次元を超えて、いったいこれはどういうことなんだろうって考えてしまいます。

ちなみに私の経験ではマルチパラダイムな書き方や間違っている可能性のあるコードを排除しなかった場合には大抵、

家に帰れなくなる人突然会社に来なくなる人「こんなもんに金はらわへんぞゴラァ!」みたいな人が生まれる結果が待っていたりします。
まぁ生まれるならいいのですが、亡くなる人もリアルにでてきますからね。


C++の言語仕様の変遷の経緯についてはC++の設計と進化
で語られているようなのでこれを機に読んでみようと思います。