タグ

OOPに関するjsstudyのブックマーク (32)

  • 「関数型プログラミング」と「オブジェクト指向」ってなんやねんPython編 - Qiita

    こ の 記 事 は 土 木 専 攻 の エ ン ジ ニ ア が 鼻 水 た ら し な が ら 書 き 上 げ た 努 力 の 結 晶 で す 。 ご 指 摘 は マ サ カ リ で な く 真 っ 白 な タ オ ル で も 優 し く 投 げ て く だ さ い 。 ことの発端 ぼく「いやーしかしぼくもそこそこ長いことPyhton書いとるしもうPython完全に理解したんちゃうんかなー!」 ぼく「久々にdocs.python.orgでもみるかー。今見たら全部わかるんちゃうかwww」 ぼく「関数型プログラミング HOWTO…?何やねんそれ…」 ぼく「えーと…?ほとんどのプログラミング言語は手続き型?で、入力に対して行うべきことをコンピューターに教える指示リスト?オブジェクト指向?はオブジェクトの集まりを操作する。オブジェクトには内部状態があり、その状態を調べたり変更したりするためのメソッ

    「関数型プログラミング」と「オブジェクト指向」ってなんやねんPython編 - Qiita
  • オブジェクト指向にとって継承とは何か?〜ストラウストラップ「「オブジェクト指向プログラミング」とは何か」〜 - Qiita

    オブジェクト指向にとって継承とは何か?〜ストラウストラップ「「オブジェクト指向プログラミング」とは何か」〜C++Haskellオブジェクト指向 オブジェクト指向とは何か?ということを真面目に調べていくと、オブジェクト指向には二種類ある、という話に突き当たる。sumim氏のQuora回答などを参照。 Smalltalkの設計者アラン・ケイによる、メッセージング重視のオブジェクト指向 C++の設計者ストラウストラップによる、クラス重視のオブジェクト指向 今回はこの後者のオブジェクト指向について、ストラウストラップの論文「「オブジェクト指向プログラミング」とは何か?」What is "Object-Oriented Programming"?(1991)の内容を(適宜行間を補いつつ)まとめてみる。 当然サンプルコードはC++(ほぼ原論文のコードのコピペです)。 ストラウストラップのオブジェクト指

    オブジェクト指向にとって継承とは何か?〜ストラウストラップ「「オブジェクト指向プログラミング」とは何か」〜 - Qiita
    jsstudy
    jsstudy 2020/05/14
    型レベルプログラミングでは型が集合
  • オブジェクト指向のいろは - Qiita

    ※追記しました 2018/11/10 サンプルコードの言語について、この記事で触れなかったものとその理由について 2018/11/11 諸注意補足 2018/11/12 コードフォーマット、タイポ修正 2018/11/13 ポリモーフィズムのサンプルが弱いとの指摘を頂き追記 はじめに この記事はオブジェクト指向プログラミング初学者向けの記事です。 記事の内容はオブジェクト指向プログラミングの入り口までを解説しているつもりです。 またオブジェクト指向分析やオブジェクト指向設計については取り扱いません。 オブジェクト指向についてを完全に理解するにはこの記事だけでは足りないと思いますのでその点ご留意願います。 サンプルコードは C# です。 スライドが元ネタになっていて、以下の url がそのスライドです。 もし興味が湧いたらどうぞ。 https://nrslib.com/oop-slide-1

    オブジェクト指向のいろは - Qiita
  • 【これで無理なら諦めろ】オブジェクト指向を世界一分かりやすく説明する - Qiita

    はじめに 個人的にオブジェクト指向を理解するのに苦戦しまくったので、その真髄を世界一分かりやすく説明していきます。 何か間違いなどあればどんどんご教示お願いします。言語はRubyです。 対象読者 RubyRailsを勉強中の方 業務でRubyを使っている方 チェリーRailsチュートリアルで挫折しちゃった人 オブジェクト指向とは オブジェクト指向とは、プログラムを「手順」ではなく、「モノの作成と反応」として見る考え方です。これだけではイマイチ分からないと思うので、具体的なコードを使って説明していきます。 オブジェクト指向を理解するには、手続き型のコードを知るのが早いです。 例えば、ある数字を加工して、その数字を使って文章を作って、結果を出力するとき、手続き型では以下のように書きます。 def calculate(number_1, number_2) number_1 * numbe

    【これで無理なら諦めろ】オブジェクト指向を世界一分かりやすく説明する - Qiita
    jsstudy
    jsstudy 2020/02/25
    説明は相性があるのでこれで分からなくても諦めなくてOK。Railsを使える人なら「Clean Architecture 達人に学ぶソフトウェアの構造と設計」 https://www.amazon.co.jp/dp/4048930656 もお勧め。→p.59 オブジェクト指向プログラミングを参照
  • アントニー・ホーア - Wikipedia

    チャールズ・アントニー・リチャード・ホーア(Charles Antony Richard Hoare、1934年1月11日 - )[1]は、イギリスの計算機科学者。通称はトニー・ホーア(Tony Hoare)またはC・A・R・ホーア。 クイックソート(一般的な場合には最も性能の良い実装ができるとされるソートアルゴリズム)の考案でも知られるが、専門的な業績としては、ホーア論理や、並行プロセスを形式記述するCommunicating Sequential Processes(CSP)などがある。CSP[※ 1]はプログラミング言語Occamに示唆を与えた。 経歴[編集] イギリス領セイロンのコロンボにてイギリス人の両親の元に生まれた。1956年にオックスフォード大学にて西洋古典学の学士号を取得。 その後オックスフォード大に1年残って大学院相当の統計学を学ぶ。1956年から1958年までイギリス

    アントニー・ホーア - Wikipedia
    jsstudy
    jsstudy 2019/10/21
    2009年のカンファレンスでNull参照を発明したことについて謝罪している。
  • さいきんここやWebでオブジェクト指向批判を目にするようになりましたが、オブジェクト指向はgoto文のように廃れていく、学ぶことがかえって有害な知識とされていくのでしょうか?に対する岡部 健 (Ken Okabe)さんの回答 - Quora

    jsstudy
    jsstudy 2019/10/05
    「継承」禁止して、どうするのか?というと、値と演算の組み合わせ、あるいは関数と関数の組み合わせ、つまり関数合成であらゆる「オブジェクトの継承」なんて表現可能になる、ということです。
  • 江添亮のC++入門

    書はプログラミングの経験はあるがC++は知らない読者を対象にしたC++を学ぶためのである。書はすでに学んだことのみを使って次の知識を説明する手法で書かれた。C++コンパイラーをC++で書く場合、C++コンパイラーのソースコードをコンパイルする最初のC++コンパイラーをどうするかというブートストラップ問題がある。書はいわばC++における知識のブートストラップを目指しただ。これにより読者はを先頭から読んでいけば、まだ学んでいない概念が突如として無説明のまま使われて混乱することなく読み進むことができるだろう。 C++知識のブートストラップを意識した入門書の執筆はなかなかに難しかった。ある機能Xを教えたいが、そのためには機能Yを知っていなければならず、機能Yを理解するためには機能Zの理解が必要といった具合に、C++の機能の依存関係の解決をしなければならなかったからだ。著者自身も苦し

    jsstudy
    jsstudy 2019/09/20
    江添氏は「正しい教え方」を理解している。入門書を書く人は見習うべき。→本書はすでに学んだことのみを使って次の知識を説明する手法で書かれた。これにより読者は混乱することなく読み進むことができるだろう。
  • オブジェクト指向プログラミングを学ぶための推薦図書 - ソフトウェア設計を考える

    オブジェクト指向プログラミングを学ぶ オブジェクト指向プログラミングという言葉は、広い意味で使われている。 オブジェクト指向プログラミングをキーワードにすべての情報をかき集めて理解するというアプローチは現実には無理。 目に付いた重要そうなところを見繕って集めてみても、たぶん混乱するだけ。 この記事では、オブジェクト指向プログラミングのいろいろなアプローチの中で、 クラスを使って独自の「型」を定義するプログラミングスタイル 関連するデータとロジックをまとめて、小さな入れ物に格納する「カプセル化」を重視するプログラミングスタイル を学ぶための参考図書を紹介したい。 型とカプセル化に重点を置く設計スタイルがわかってくると、それとは異なるスタイル、異なる力点を置くアプローチとの違いが具体的にわかるようになってくる。*1 *2 まずは、オブジェクト指向プログラミングの中で、型・クラス・カプセル化に力

    オブジェクト指向プログラミングを学ぶための推薦図書 - ソフトウェア設計を考える
    jsstudy
    jsstudy 2019/09/07
  • オブジェクト指向プログラミングは1兆ドル規模の大失敗なのか? - YAMDAS現更新履歴

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

    オブジェクト指向プログラミングは1兆ドル規模の大失敗なのか? - YAMDAS現更新履歴
    jsstudy
    jsstudy 2019/07/28
    プログラミングパラダイムは便宜上4つに分類できる。(1)手続型(OOP含む)、(2)関数型、(3)問合型、(4)論理型。(1)が命令型、(2)(3)(4)が宣言型。全部習得すればTPOで使い分けるだけの話。プログラマーなら全部知っておくべき
  • オブジェクト指向プログラミング -- 1兆ドル規模の大失敗

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

    オブジェクト指向プログラミング -- 1兆ドル規模の大失敗
    jsstudy
    jsstudy 2019/07/28
    副作用の扱い方はバグ防止の肝。OOPのカプセル化による副作用の隠蔽よりも、FPの参照透過性による副作用の分離の方が簡単で確実。各種GUIはMVVMでFRP、双方向データバインディングで作ればOK?OOPで出来ることはFPでも可能
  • Why OO Sucks by Joe Armstrong

    何故オブジェクト指向はクソなのか by Joe Armstrong(Erlangの作者) このドキュメントは http://www.bluetail.com/~joe/vol1/v1_oo.html で行われたオリジナルの講演のコピーである 私が初めてオブジェクティブ志向プログラミングのアイデアを紹介された時、なぜか疑い深い気分になった。-ただ「間違っている」と感じたのだ。OOPが紹介されると、それらはとても広まり(なぜかは後に述べる)、OOPは「教会での宣誓」かのように評されるようになった。オブジェクト指向的であることは何やらすべての優れたプログラミング言語が持っていなければならないものとなったのだ。 Erlangが有名になると我々はよくこう質問を受けた。「Erlangはオブジェクト指向ですか?」。-そう、勿論当の答えは「全く違います」だ。-が、それを大声で言いたくはなかった-。そこで

    Why OO Sucks by Joe Armstrong
    jsstudy
    jsstudy 2019/04/24
    顧客がオブジェクト指向Prologを望んだ。だから我々はオブジェクト指向Prologを作ったのだ。私はその時、「なんという単純さだ。良心の呵責も内省も、「コレを行うのが本当正しいことなのか」という問すらもない。。。」
  • なぜオブジェクト指向はクソなのか by Joe Armstrong - 勝手に翻訳

    私が最初にオブジェクト指向プログラミングの考え方に導入されたとき、何故だか分からないが、私は懐疑的だった。 - それは "間違っている" と感じた。その後、オブジェクト指向プログラミングは非常に人気となり(理由は後で述べる)、オブジェクト指向プログラミングの批判はむしろ "教会の宣誓"(swearing in church) のようなことだった。オブジェクト指向は、すべての立派な言語が持つようになった。 Erlangは普及するようになったとき、我々は、よく「Erlangはオブジェクト指向ですか?」と聞かれた。 -まあ、正解は「もちろん違います」だったのだが、我々はこれを大声で言うことはなかった。それが(あなたがたくさん手を振ったとき)Erlangはオブジェクト指向(の一種)であるように印象づけ、(あなたが私たちの実際に行ったことに耳を傾け小さな活字を読んだとき)当はそうではないというよう

  • オブジェクト指向はクソか? - tokoma1's blog

    はじめに これは以前私がqiitaに投稿した記事です。 オブジェクト指向はクソか? 私は長らくJavaを用いて開発を行なってきましたが、最近、関数型言語であるClojureにより魅力を感じています。 そして関数型言語であるClojureについてなぜ惹かれるのかをいろいろと考えを巡らせているときにこの記事を偶然に見つけました。 記事は「Why OO Sucks」という刺激的なタイトルですが、自ら理解したいという目的もあり、翻訳しました。 http://www.sics.se/~joe/bluetail/vol1/v1_oo.html 実は、この記事は関数型言語のひとつであるErlangの作者であるJoe Armstrongが書いたのです。そして翻訳したあとから知ったのですが、書かれてから少し時間が経っているため、何人かがすでに訳されているようです。そして数多いディスカッションがなされているよ

    オブジェクト指向はクソか? - tokoma1's blog
  • 【訃報】プログラミング言語「Erlang」を生んだジョー・アームストロング氏死去 - GIGAZINE

    by Måns Sandström 関数型プログラミング言語「Erlang」の生みの親として知られるコンピューター科学者・プログラマーのジョー・アームストロング(ジョセフ・レスリー・アームストロング)氏が2019年4月20日(土)に亡くなったことがわかりました。68歳でした。 It is with great sadness that I share news of Joe Armstrong's passing away earlier today. Whilst he may no longer be with us, his work has laid the foundation which will be used by generations to come. RIP @joeerl, thank you for inspiring us all.— Francesco Ces

    【訃報】プログラミング言語「Erlang」を生んだジョー・アームストロング氏死去 - GIGAZINE
    jsstudy
    jsstudy 2019/04/24
    プログラミングとの出会いは17歳のころ、学校に導入されていたメインフレームでFORTRANを学んだこと。ユニバーシティ・カレッジ・ロンドン時代にはビールと引き換えに同級生のプログラムのデバッグを行っていたそうです
  • 岡部 健 (Ken Okabe)

    情報技術者・開発者・Geek.

    岡部 健 (Ken Okabe)
  • 一時期プログラミングのデザインパターンというものが大流行しましたが、現在ではどのように評価されているのでしょうか?

    回答 (5件中の1件目) この質問にかなり先行して2015年、Quora(家)で投げかけられた質問として、 Why do some functional programmers criticize design patterns in OOP languages as a sign of language deficiency, while Monad is also a design pattern? なぜ、関数型プログラマらは、オブジェクト指向(OOP)言語のデザインパターンを、言語の欠陥の象徴だと批判するのでしょうか?モナドもデザインパターンじゃないんですか? があります。...

    一時期プログラミングのデザインパターンというものが大流行しましたが、現在ではどのように評価されているのでしょうか?
    jsstudy
    jsstudy 2019/03/26
    "Ken Okabe, 情報技術者・開発者 (1981〜現在) 2019/03/10に回答されました · この方の回答数は227件、見られた回答の回数は12.5万回です"
  • プロトコル指向言語としてのSwift - OOPからPOPへのパラダイムシフトと注意点 - Qiita

    Swift Advent Calendar その2の23日目の記事です。 Swiftはマルチパラダイム 私がiOS開発に手を出し始めたのはおよそ4,5年ほど前、当時はまだSwiftは存在せず Objective-Cによる開発で、ちょうどMRCからARCに切り替わる手前ぐらいに初めて出会いました。 当時は元々アプリエンジニアがほとんど社内にいない中、Android開発をもくもくと開発しており オブジェクト指向はなんぞや?という所からJava先生にいろいろ教えて貰っていた所だったので、 その名の通りオブジェクト指向ベースであるObjective-Cにはretainカウントに発狂する以外はある程度キャッチアップできていました。 Swiftはマルチパラダイム言語と呼ばれています。 Objective-Cゆずりのオブジェクト指向、そして関数型を取り入れ、 また各言語に散らばっていた素晴らしい機能(N

    プロトコル指向言語としてのSwift - OOPからPOPへのパラダイムシフトと注意点 - Qiita
    jsstudy
    jsstudy 2019/01/27
    クラスの利点 (カプセル化) (可視性制御) (抽象化) (名前空間) (表現力のある構文) (拡張性) これらは型(Type)の特徴 オブジェクト指向特有のclassはそれらを実装する一つの手段、Swiftでは構造体や列挙型でも同じことが可能
  • プロトコル指向プログラミングについて調べてみた - Qiita

    プロトコル指向プログラミングという概念について、調べたことをまとめてみました。 プロトコル指向プログラミングとは ものすごくざっくりいうと、プロトコル(Javaでいうインターフェース)を使ってプログラミングしようという概念です。 なんでプロトコル? オブジェクト指向の問題を解決するためです。 どんな問題かというと、以下の点が問題でした。 オブジェクト同士が他のインスタンスを共有していることを知らずに参照してしまう(暗黙の共有) 親クラスのメソッド、プロパティをそのまま引き継ぐため、初期化や上書きなどの調整が必要になる 複数のサブクラスを作ってもそれらを関連付けする方法がないため、 型が統一できない このような問題点がオブジェクト指向にはあるため、プロトコルを使ってクラス関係の壁をなくそうということで、プロトコルを使うのです 実際にやってみた 概念だけだとわかりづらいので、実際のコードで説明

    プロトコル指向プログラミングについて調べてみた - Qiita
    jsstudy
    jsstudy 2019/01/27
    プロトコル指向プログラミングとは、オブジェクト指向でやってきたクラス継承をプロトコルで行ってしまおうという考え方。
  • Swift プログラマが Go言語を学び始めた話(中編) - ペンギン村 Tech Blog

    以下の記事の続きです。 blog.penginmura.tech 制御構文 Go言語の制御構文としては次のものがある。 if switch for ゴルーチン・チャネルにおいて利用できる select という制御構文もあるが、それは後ほど触れることにする。 if 文 基的な書き方は Swift とほとんど変わらない。次のコードは Go言語 / Swift ともにコンパイルできる。 if 0 <= x && x < 100 { } else { } Go言語では if 文において事前にローカル変数を宣言することができ、これは Go言語におけるエラー処理のパターンで多用される。前編において 0除算された場合にエラーを返すDiv関数を呼び出した例として、次のようなエラー処理を記述した。 n, err := Div(6, 2) if err != nil { panic("error!") }

    Swift プログラマが Go言語を学び始めた話(中編) - ペンギン村 Tech Blog
    jsstudy
    jsstudy 2019/01/27
    インターフェースは Swift の Protocol にあたる。Go言語には構造体しかないため、継承を利用できない、インターフェースが多態性を実現する唯一の方法 → 継承によるエンバグ防止/POP https://qiita.com/kotaro_p/items/4a4ebd34b15ccbcd1895
  • クラスの「継承」より「合成」がよい理由とは?ゲーム開発におけるコードのフレキシビリティと可読性の向上 | POSTD

    コード構造における重要な問題として、複数のクラスを共有する場合に合成と継承のどちらを用いるかという点があります。“has a”の関係と、“is a”の関係と言われる2つの対比です。例えば、“ソファには綿が入っている”と、“ソファは家具である”という違いのようなものです。この例では2つの違いは非常に明白ですが、実際には、“has a”の関係でも“is a”の関係でも意味を成すケースがたくさんあります。ゲームのキャラクターについて、これはコリジョンボックスを持っているかと聞くのと、これは衝突可能なオブジェクトかと聞くような場合です。この2つは全く同じことではありませんが、それぞれが(または両方一緒に)衝突を処理する主構造として用いられ、どちらの方がよいかは必ずしも明白ではありません。私の経験では、直感的には継承の方がよいと思うことも多いのですが、それだと問題がたくさんあって結局は合成の方がよか

    クラスの「継承」より「合成」がよい理由とは?ゲーム開発におけるコードのフレキシビリティと可読性の向上 | POSTD
    jsstudy
    jsstudy 2018/09/02
    継承よりコンポジション(合成)