オブジェクト指向プログラミングをしないという選択

Facebooktwittergoogle_plustumblrmail
最近本屋で衝動買いした「組み込みエンジニアのためのロジカル・シンキング入門」 (→ Amazon) を斜め読みしました。僕は技術書の中に紛れ混んでいる作者の主観を見付ける事が楽しみなのですが、この本には結構沢山入っていて、且つそれが強硬 (失礼?) で、大変面白いと思います。

その中でも、 3 ページも使って「オブジェクト指向が嫌いな理由」というコラムを書いておられまして、まさに我が意を得たり、もうタイトル見つけた時にげらげら笑いましたね (実はこのコラムに 2310 円払った様なもんです) 。内容は是非、ご自身でお買い上げの上、ご覧になって下さいませ 😉

さて、僕が何故「オブジェクト指向が嫌い」なのか、ですが。

この本の作者さんの主張している事が全部僕の主張と同じという訳では、決してございませんで。実は「嫌い」というのは少々違いまして、正確に言えば「仕事ではオブジェクト指向言語を使いたく無い」とでも言いましょうかね。オブジェクト指向言語でオブジェクト指向プログラミングしたコード、きちんと保守できる人が大変少ないでしょ ? (え ? 他の会社は違うの ? まぶ ?)

折角綺麗な設計しても実装できなかったり、僕が実装したコードを後日のバージョンアップの時に壊されたり、それならまだしも、「誰もメンテできないからお前やれ」とか言われたり (僕のコードが汚ないって ? がーん !) 。色々と悔しいじゃない ? だからオブジェクト指向言語は使わない方が良いという結論に至りましてね。

普段僕が使うのは C++ なんですが、多くのプログラマの傾向を分析すると、ポインタと、private と public の区別、 public 派生、 virtual 関数、という程度までは無有問題。でも、 protected な派生、コンテナ (含む STL) 、 独自設計の template クラスないし函数、あたりで急に分からなくなっちゃうみたい。こういう傾向のプログラマは C++ だけではなくて、同時に C 言語の函数ポインタも理解できない場合が有る気がします (主観ですがね) 。だから函数ポインタテーブルを使って有限状態マシン作ると、これまたメンテできないコードの仲間入り、そして僕は悔しい目に遭う、という。

実は今迄のは単なる愚痴でして (まじめに読んでくれた方、済みませんね) 、オブジェクト指向プログラミングについて僕が最も問題視しているのは、 C++ が例外を標準で取り込んでしまった事です。これのお陰で異常発生時のフローの連続性が確保できなくなってしまい、また組み込みソフトウエアへの適用を難しくしてしまった様に思っています。
Facebooktwittergoogle_plustumblrmail
Yusuke Dada K.
Yusuke Dada K.
台湾の現地企業で主に組み込みソフトウエアの研究開発をしている日本人です。我人是個日本人,負責軟體的研究開發。在臺灣的科技公司工作。

2件のコメント

  1. 確かにテンプレートを駆使し過ぎるとたちの悪いマクロ・アセンブラの成れの果てになって、とても始末が悪いです。ベースクラスの設計は単なる知識だけではなく、設計センスの熟練が必要で、最初にコードを書く人間が相当まともじゃないとだめなんですね。そういう意味でも、下手にC++で書くと、あとでたくさんの人々が苦痛を味わうはめになるんですよね。要するにC++を使うには、オブジェクト指向が理解できるレベルのプログラマーの層が厚くないと、うまくいかないんです。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です