タグ

オブジェクト指向に関するpukumanのブックマーク (15)

  • 繰り返されるOOPの死 (2015)

    @Loup'sより。今は...? 60年代後半に登場してから、オブジェクト指向プログラミングは、私たちの業界に浸透してきました。現在主流のプログラミング言語はすべてOOPをサポートしています — C を除いて、もはや主流ではありませんが。私が直接会ったプログラマの多くは、世界を次のように分ける傾向があります。 手続き型プログラミング。悪い。 オブジェクト指向プログラミング。良い。 風変わりな研究もの。証明されていない、怖い、維持不可能。 一見すると、OOPは普及しています。 一方で、深刻な突然変異を経験しているにもかかわらず、OOPは知識のある人々(私自身を含む)から依然として強く批判されています。さらに悪いことに、ゲーム業界はOOPから離れつつあるようです。ビデオゲームはシミュレーションであり、OOPのコアなニッチです。Simulaの名前もそれに由来しています。もし、その仕事にさえ最適な

  • 2つのオブジェクト指向ーメッセージ・パッシングと抽象データ型 - Hot Heart, Cool Mind.

    オブジェクト指向には、もともとアラン・ケイが創案したメッセージ・パッシングのオブジェクト指向と、その後、抽象データ型から発展したオブジェクト指向の2つがあって、その2つは、プログラム言語の機構の面からは共通する要素も多いのだけどプログラミングに対するビジョンという点では相当に異なっている、という見方があります。 これに関しては、id:sumim さんが「二つのオブジェクト指向とそれぞれのメリット」という行き届いた論考を公開しておられて、僕などはそれを読んで頭を整理した口です。 その後、それを踏まえて自分なりに両者の違いを考えてツイートしましたが、言葉足らずな点もあったので、内容を整理するとともに加筆しました。 言語機構に惑わされるな この2つのオブジェクト指向は、実現する機構の面では似ています。オブジェクト指向の3要素として「カプセル化、継承、ポリモフィズム」があると言われますが、そうした

    2つのオブジェクト指向ーメッセージ・パッシングと抽象データ型 - Hot Heart, Cool Mind.
  • 20年代のオブジェクト指向言語

    アダム・ネルソンのブログより。 オブジェクト指向プログラミングは、今やすっかり廃れてしまいましたが、しばらく前からそうなっています。新しいプログラミング言語が意図的にオブジェクト指向(OO)を採用することはほとんどありません。そして、これには正当な理由があります。OOは多くの場合、多くの定型文を必要とし、コードを不自然なオブジェクト階層に押し込め、隠れたミュータブル状態を助長します。 しかし、もし2021年にJavaやC#のような静的型付けされた新しいOO言語をゼロから作ったとしたら、関数型プログラミングから学んだ全てのことと、10年以上にわたる厳しいOO批判を受けて、この問題を解決することができるでしょうか? 特に、レガシーコードとの互換性を期待していない場合はどうでしょうか? まず、新しいOO言語が持つべき、いくつかの明白な譲れないものがあります。 null安全 安全なキャスト オプシ

  • オブジェクト指向プログラミングは1兆ドル規模の大失敗なのか? - YAMDAS現更新履歴

    えーっと、長すぎて、ワタシも全部は読み通せていません。 文章の趣旨はインパクトが強いタイトルの通りで、オブジェクト指向プログラミングは1兆ドル規模の災厄であり、もうオブジェクト指向プログラミング(OOP)の先に進むべき時だよ、ということである。 著者は OOP 批判がセンシティブな話題であること、多くの読者を敵に回すであろうことを認めた上で、OOP はその発明者であるアラン・ケイが思い描いたように実装されればよかったと考えている。で、返す刀で現実の Java や C# の OOP へのアプローチを批判する。 OOP が素の手続き型プログラミングよりも優れているという客観的、公平なエビデンスは存在しないと著者は断言している。 ところどころで「Java は MS-DOS 以来コンピューティング分野に生まれたもっとも悲惨な存在だ」というアラン・ケイの言葉や、「C++ はおぞましい言語だ。だからプ

    オブジェクト指向プログラミングは1兆ドル規模の大失敗なのか? - YAMDAS現更新履歴
  • オブジェクト指向プログラミング -- 1兆ドル規模の大失敗

    CodeIQのブログより。🤔 なぜ、OOPから移行する時なのか Ilya Suzdalnitski OOPは、多くの人にコンピューターサイエンスの重要資産と考えられています。コード構成(code organization)に対する究極のソリューション。すべての問題の終焉。私たちのプログラムを書くための唯一の当の方法。自分自身をプログラムするという真なる唯一神から私たちに授けられました… それまでは、そうではなく、抽象化の負担、そして無差別に共有されるミュータブルなオブジェクトの複雑なグラフによって、人々は屈し始めています。現実世界の問題を解決するのではなく、「抽象化」と「デザインパターン」について考えるのに貴重な時間と頭脳が費やされています。 非常に著名なソフトウェアエンジニアを含め、多くの人々がオブジェクト指向プログラミングを批判してきました。驚くことに、OOP自身の発明者でさえ、今

    オブジェクト指向プログラミング -- 1兆ドル規模の大失敗
  • OOPに対する問題は誇張されている

    Young Coderより(M)。 50年経った今でも、私たちはプログラミングの支配的なパラダイムについて混乱しています。 マシュー・マクドナルド 何人かの敵を引き付けなければ、開発世界を何十年も支配することはできません。そして、オブジェクト指向プログラミングは、新旧数十種類の言語の概念的基盤を提供していますが、確かに敵もいます。 そのためか、私たちはOOPについての終わりのない一連のホットテイクに苦しんでいる理由です。彼らはOOPを、生産性を破壊する災厄であるとか、一連のごまかしのプログラミング・パターンであるとか、貧しいプログラマが無能さを隠すために設計された平凡なツールであるとか説明してきました。OOPは死んだとさえ宣言されたことがありました(14年前ですので、割り引いて下さい)。 OOPの4つの柱 これらすべての暴言に共通しているのは、現代のソフトウェア設計の落とし穴のいくつかを(

    OOPに対する問題は誇張されている
  • オブジェクト指向のハードコア

    オブジェクト指向のハードコアは2019年5月25日にゼロベースサロンで行われたイベントです。「オブジェクト指向」というキーワードについて、プログラミング、デザイン、哲学などの分野を横断しつつ知的な議論ができました。記録映像は必見。 企画意図/招待状 この研究会の企画意図については、私が送った招待状を見ていただくのが早いでしょう: いくつか異なる分野で「オブジェクト指向」がキーワードとして注目されています。昨年からGUIデザインの分野では「オブジェクト指向ユーザーインターフェイス」(OOUI)の議論がホットです。ソフトウェア開発の分野では、数年前からオブジェクト指向の見直しとしての「ドメイン駆動設計」(DDD)が広まっています(※原著である英語版から日語への翻訳は数年遅れています)。さらには「オブジェクト指向存在論」(OOO)も思想業界でブームになっています。 これはもうオブジェクト指向の

    オブジェクト指向のハードコア
  • デザインパターンを読み解く

    ポリモーフィズム(サブクラスによる切り替え、抽象化) ここに分類されるのは、オブジェクト指向の第3原則、ポリモーフィズムを使用したパターンです。ポリモーフィズムを使用すると、動的に使用するクラスを切り替えることができます。<参照> 他に分類されているものでも、ポリモーフィズムが重要な位置を占めているものもありますが、ここではそれしか使われていないものを扱います。 ただデザインパターン全体を通して強調されているのは、インターフェースでプログラミングするということです。実装への依存をなくし、そうすることによって設計の骨組みを明らかにするのです。 Template 次のようなメソッドがあった場合に、処理Bのところを条件によって変えたい場合があるとします。 class Hogehoge { void doit() { ... 処理A ... ... 処理B ... ... 処理C ... } }

  • オブジェクト指向プログラミングデザインルール : 一生涯プログラマ

    2014年04月01日00:00 カテゴリProgramming オブジェクト指向プログラミングデザインルール プロのプログラマとはただ仕様通りに動くプログラムを作ればいいという物ではない。 保守性や拡張性を考慮し、変更に強くバグの混在しにくいプログラムを効率よく作る必要がある。 その為に、プログラミングする上で心に留めておかなくてはならない事がある。 今回はその中でも、オブジェクト指向言語においてプログラミングする際に私が意識している事を書き留めたい。 デメテルの法則 オブジェクト間の依存度を最小限にする為に任意のオブジェクトが参照出来る範囲を下記の4つに制限する。(メソッドチェーンを許容しない) 但し、メソッドの戻り値が呼び出し元インスタンスと同じクラスの場合はメソッドチェーンを許容する。任意のオブジェクト自身メソッドの引数に渡されたオブジェクトメソッドの内部で新たにインスタンス化され

    オブジェクト指向プログラミングデザインルール : 一生涯プログラマ
  • 猫型プログラミング言語史観(1) 〜あるいはオブジェクト指向における設計指針のひとつ〜 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    TL;DR 手続き型プログラミングでは手続きを抽象化することで保守性を挙げることに成功したが、データを守ることには失敗してしまった。そこでオブジェクト指向はデータと手続きをひとかたまりにすることでデータを外から守るというコンセプトを打ち出した。 ここから、「手続き型プログラミングで書いてるのに手続きが十分に抽象化されていないのはヤバいね」とか「オブジェクト指向で書いてるのにひとかたまりじゃない雑多なデータに関心をもっちゃってるのはヤバいね」などの設計指針を導くことができるのである。そして純粋関数型言語の場合は……という話です。 はじめに プログラミング言語にはいろいろなパラダイムがあるが、その中で手続き型プログラミング、オブジェクト指向、純粋関数型言語について、わたしなりのひとつの史観を示すのがこの稿の目的である。となんかかっこつけて言ってみたんだけど、要するに、それぞれのパラダイムがどん

    猫型プログラミング言語史観(1) 〜あるいはオブジェクト指向における設計指針のひとつ〜 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
  • Press Enter■

    Copyright(c) 2000-2009 ITmedia Inc. 著作権はアイティメディア株式会社またはその記事の筆者に属します。(著作権について) 当サイトに掲載されている記事や画像などの無断転載を禁止します。 「@IT」「@IT自分戦略研究所」「@IT情報マネジメント」「JOB@IT」「@ITハイブックス」「ITmedia」は、アイティメディア株式会社の登録商標です。 当サイトに関するお問い合わせは「@ITへのお問い合わせ」をご覧ください。

  • Webプログラミングは何故オブジェクト指向でない?~WicketはWebプログラミングにオブジェクト指向を取り戻す - プログラマの思索

    Webプログラミングは何故オブジェクト指向でない?~WicketはWebプログラミングにオブジェクト指向を取り戻す JavaでWebアプリを10年書いて思ったこと。 Webプログラミングは全然オブジェクト指向でない。 Sevlet+JSP主体のプログラミングスタイルは、リクエストとレスポンスへPrimitiveな値をどうやって渡すか、という手続き型の発想でしか書いていない。 従来のWebプログラミングスタイルの問題点について書いてみる。 以下ラフなメモ書き。 【参考リンク】 Wicketって? ウェブ開発をもう一歩前に Wicketで始めるオブジェクト指向ウェブ開発:第1回 Hello, Wicket|gihyo.jp … 技術評論社 【コラム】イマドキのIDE事情 (39) Wicket、Grails、Click - IDEでみる軽量Javaフレームワーク | エンタープライズ | マイ

    Webプログラミングは何故オブジェクト指向でない?~WicketはWebプログラミングにオブジェクト指向を取り戻す - プログラマの思索
  • 関数型言語でのデザイン手法

    Takashi Miyamoto @tmiya_ オブジェクト指向はOOPの他にOOA,OODなど上流工程向けの方法論があるのだが、関数型言語についてもFPの他にFA,FDがあるのだろうか?誰か適切な論文/教科書とか知りませんか? 2010-05-30 09:26:38 Ikegami Daisuke @ikegami__ 探してみます。でも強い型付けか、弱い型付けかで、まるっきり異なるでしょう RT @tmiya_: オブジェクト指向はOOPの他にOOA,OODなど上流工程向けの方法論があるのだが、関数型言語についてもFPの他にFA,FDがあるのだろうか?誰か適切な論文/教科書とか知りませんか? 2010-05-30 09:30:40 Ikegami Daisuke @ikegami__ @tmiya_ 個人的な感想ですが、強い型付けのプログラミング言語で開発を行う場合、実装の前に、全体

    関数型言語でのデザイン手法
  • Perl5 のオブジェクト指向を理解する - モダンなPerl入門

    Inside Perl5 OO 対象読者: 他の言語で OO したことあるっぽいひと/Perl4 でとまってるひと Class をつくる まずは点クラスをつくってみましょう package Point; sub new { my ($class, %args) = @_; # 第1引数はクラス名 bless({%args}, $class); # データを bless すると、オブジェクトになる } sub x { my $self = shift; # 第1引数は、インスタンス $self->{x} = shift if @_; # 引数があればセッター扱いになる $self->{x}; } sub y { my $self = shift; $self->{y} = shift if @_; $self->{y}; } このようにして作ったクラスは、下記のようにして呼び出すことができま

  • Amazon.co.jp: インターフェイス指向設計 ―アジャイル手法によるオブジェクト指向設計の実践: Ken Pugh (著), 角谷信太郎(監訳) (翻訳), 児島修 (翻訳): 本

    Amazon.co.jp: インターフェイス指向設計 ―アジャイル手法によるオブジェクト指向設計の実践: Ken Pugh (著), 角谷信太郎(監訳) (翻訳), 児島修 (翻訳): 本
  • 1