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

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

  • オブジェクト指向でプログラミングしなければならないかどうかは言語に依存するものではないでしょう。実装対象/設計に依存するはずです。
    そもそも設計がオブジェクト指向でなければ実装だけオブジェクト指向になることもないですし、オブジェクト指向設計はプログラミング言語抜きに行うことも出来ますよね。
    (言語に対してある程度のオブジェクト指向的な機能は仮定するにしても)

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

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

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

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

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

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

      • > 「郷に入りては郷に従え」
        逆です。例えば「作成するべき対象ソフトウェアがオブジェクト指向であるべきではない」が、「言語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なのは言語じゃなくて人の問題。

ナニゲにアレゲなのは、ナニゲなアレゲ -- アレゲ研究家

処理中...