パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

「オブジェクト指向言語でオブジェクト指向っぽいプログラミングをしない」のはNG?」記事へのコメント

  • 質問が間違いですね (スコア:5, すばらしい洞察)

    by Deasuke (34806) on 2010年05月06日 20時53分 (#1759374) 日記
    オブジェクト指向でプログラミングしなければならないかどうかは言語に依存するものではないでしょう。実装対象/設計に依存するはずです。
    そもそも設計がオブジェクト指向でなければ実装だけオブジェクト指向になることもないですし、オブジェクト指向設計はプログラミング言語抜きに行うことも出来ますよね。
    (言語に対してある程度のオブジェクト指向的な機能は仮定するにしても)

    あと、もとの記事を見るとC++が挙がっていますが、C++は「オブジェクト指向にも書ける」言語であって「オブジェクト指向のための」言語ではありません。
    なので「C++を利用するならオブジェクト指向でプログラミングしなければならないか」というように質問を解釈したとすれば、「否」が答ですね。

    STLの実装を見てもらえば分かりますが、C++の機能をふんだんに利用して「オブジェクト指向でなく」書いていますね。
    各々のコンテナやアルゴリズムはできるだけ独立で直交するように設計されています。
    # STLをUMLで再設計してみようとすれば如何にSTLがオブジェクト指向でないかが分かります
    --
    Best regards, でぃーすけ
    • by Anonymous Coward

      >オブジェクト指向でプログラミングしなければならないかどうかは言語に依存するものではないでしょう。

      「郷に入りては郷に従え」って言葉がありまして。IOCCC が開催されることとなったきっかけ [kaimei.org]は御存知?
      その言語にあわない流儀を用いてコーディングするなら最初からその言語を使うな、というお話。仲間内だけでやるならともかく外に出したら困ることになりますよ、と。
      # そのきっかけを忘れてアホ実装したのが Boost の lambda だったりするわけだが、何故か一部でもてはやされていて困る。

      オブジェクト指向がしっくりこないなら、オブジェクト指向ではない言語を使って作れば良いだけです。
      ですから私の意見としては NG 。

      だいたい、履歴書にコーディング経験C++10年、C#5年なんて書いていてあんなコードしか書けないのがいたら詐欺レベルですよね。

      • 一個のシステムが異なる性質を持つ場合もあり、複数の言語を混合するのはそれはそれで異言語インターフェースが大変(必要があればできるし、不可能ではないが)なので、広くつかわれる言語に他言語の特徴を模倣するライブラリが追加されるのは仕方ないとは思います。

        C++templateに関してはtemplate自身、
        元来は「クラス付きのC」でC++に対して後付けですし、
        メタプログラミングに至っては意図的に設計されたものではなく
        利用サイドからの創発なので。

        実用を指向する場合、
        既成言語の改修・拡張とその利用経験から新しい言語が生まれるのだと思います。

        親コメント
      • > 「郷に入りては郷に従え」
        逆です。例えば「作成するべき対象ソフトウェアがオブジェクト指向であるべきではない」が、「言語Xがオブジェクト指向で書くべき言語」であるとすれば、「言語X」の方が外されるべきな訳です。すなわち「何を作りたいか」の方が「言語」よりも「偉い」のです。

        > IOCCC が開催されることとなったきっかけは御存知?
        知りませんが、私はIOCCCのワンライナーなら普通に読めますよ。IOCCが何かを皮肉っているのかも知りませんが私には通用しません。

        > その言語にあわない流儀を用いてコーディングするなら最初からその言語を使うな、というお話。
        上記の意味を踏まえているのであればこれには同意します。

        > Boost の lambda
        あれこそC++らしいと思うのですが。C++と言うのは様々な異種の要望を、それらが互いに相反する性質のものであっても構わず、できるだけ沢山取り入れて「何でも出来る」ようにした言語である、と考えています。その「何でもできる」の「何でも」の一つの究極の形がlambdaである、と。

        > オブジェクト指向がしっくりこないなら、オブジェクト指向ではない言語を使って作れば良いだけです。
        違いますね。開発者がオブジェクト指向がしっくりくるかどうかは問題ではなく、作るべきものがオブジェクト指向にマッチしているかどうかが問題。
        そこで作るソフトウェアがオブジェクト指向で作るべきであれば、「オブジェクト指向がしっくりこないと言う、件の開発者」は用無しです。
        「オブジェクト指向ではない言語」で開発したところで問題は解決しません。

        > だいたい、履歴書にコーディング経験C++10年、C#5年なんて書いていてあんなコードしか書けないのがいたら詐欺レベルですよね。
        良く分かりませんが、オブジェクト指向で設計した経験がないと、C++のコーディングを何年やっても「あんなコード」なんじゃないですか?
        私なら自分のresumeには必ず「クラスの設計」の経験を挙げますが。プログラミングパラダイムなんて年数の問題じゃないですよ。
        --
        Best regards, でぃーすけ
        親コメント
        • by Anonymous Coward
          あなたと設計と実装を同レベルで考えているようなので、元コメと話がかみ合っているようですね。
          あなたの頭の中ではオブジェクト指向とクラスが不可分なようですし。

          オブジェクト指向分析設計したものはオブジェクト指向(言語)で実装するのが最適か?というと必ずしもそうではなく、現実には、オブジェクト指向で設計しAdaなどで手続的に実装といった話はごろごろしていましたよ。
          • by Anonymous Coward
            おっと、元AC氏は設計の話はしていませんね。ごめんなさい。
            私も元AC氏とだいたい同意見で、なんであれ共有されている流儀に反するような書き方はするな、です。NGなのは言語じゃなくて人の問題。
    • by Anonymous Coward

      > オブジェクト指向でプログラミングしなければならないかどうかは
      > 言語に依存するものではないでしょう。実装対象/設計に依存するはずです。

      いやだから、オブジェクト指向で設計するのに向いてるお仕事より、
      向いてないお仕事のほうが多いんじゃないの? っていう話でしょ。
      GUIのお絵描きソフトなら是非ともOOPで設計すべきだけど。

    • by Anonymous Coward
      .Net FrameWorkっていうライブラリ関数群に押されてるだけです。

      昔はC使いで今はMFC使いですが、APIを駆使して実現するより
      .Net FrameWork使った方が簡単に実現できる事の方が多いのかも。

      多分時代の流れです。

      でも、VBのデバッガーはとても使いにくい。
    • by Anonymous Coward
      数値計算、組込制御関係の開発をやってるがオブジェクト指向のプログラム開発なんかしたことが無いし、する必要も無い
      きちんと継承関係をまとめた綺麗なクラス・ライブラリを作って何かをするメリットが希薄なんだから仕方がない
      (それだけがオブジェクト指向の新しいプログラミング言語を使うメリットではないが)
      まあ、グラフィックスなんかをすることになったらオブジェクト指向バリバリのプログラムを書く気はあるけど........

      そんなわけで当然、通常の開発にはC++ではなくCを使っている
      希に演算子のオーバーロードの機能が必要な時にC++を使う程度だ
      他の分野でも本当にオブジェクト指向が必要とされる機会はそれほど無いのではないか?
      オブジェクト指向言語が当たり前になって、入門書にもオブジェクト指向プログラミングの説明が載ってるからという理由だけでオブジェクト指向してるんじゃないか?

犯人はmoriwaka -- Anonymous Coward

処理中...