犬と猫の話(または、オブジェクト指向とか型とか型クラスとかの話)
- Tanaka9230
- 7182
- 7
- 0
- 0
ソフトウェアのパラダイムとしてある抽象構造が、自明のものとして先験的に存在し、それを分析しながら、それらをツリーによって分類可能であろうとして、再利用可能なコンポーネントに設計するというOOP初期に描かれた継承による抽象の考え方を僕は、「オントロジー的抽象」と表現していて、
2019-06-19 18:55:48対して、抽象構造は事後的に発見され機能やビジネスの目的によって蒸留されることによって姿が見えてくる、それらはツリーではなくセミラティス構造になって発見されStructual SubtypingやDelegation/Composition、Mixinなどにより表現されることの多い抽象を「テレオロジー的抽象」と表現している。
2019-06-19 18:55:49オブジェクト指向を難しくしている戦犯は 猫クラスや犬クラスが哺乳類クラスを継承して〜というクソみたいな例え 実務で一切応用が効かない例えのせいでどれだけ困らされたか・・・オブジェクト指向の機能/特徴の説明はできても、「なぜオブジェクト指向が必要か?」の具体的な理由が一切見えない
2020-01-27 00:28:16@XHACK20 必要な理由もそうですけど、 オブジェクト指向なしでやると、 どういう問題にぶち当たるか? 「問題にぶち当たって課題を発見して やってたら、オブジェクト指向にたどり着く」 そんな風に教えてられてましたねぇ
2020-01-27 00:38:20@kotarobayashi その教え方は超・秀逸です! というかそれ以外に教える方法を知らないです。
2020-01-27 00:39:33@XHACK20 こんばんわ。ボトムアップとトップダウンの両面からの理解が一番効率がよいですが後者で言えば、C言語で書かれたApacheのソースなどをチラ見するのがよいかと。第一引数に構造体を必ず取る関数群がありその手法を言語レベルで組み込んだのがオブジェクト指向の1つの側面というかんじでしょうか。
2020-01-27 01:00:14@XHACK20 すみません。前者の間違いですね。C言語である程度の難易度、規模、複数リソースアプリを書くときに「定番的」なやり方が洗練されてきて、これを形式的に言語に取り組んだのがボトムアップからみたオブジェクト指向というように理解しています。言わば「アプリをデータ構造として作る」という側面です
2020-01-27 01:02:01というか今どき「何故OOPが必要か?」って要るのかしら。OOP以降期であった10年以上前でもあるまいし。
2020-01-27 08:56:29今どきもはや「プログラミングっちゅーのはモノを模したクラスっちゅー箱を作ってその動作を表すメソッドっちゅーのを作って組み合わせて作るというお作法なんじゃ」でよかろうと思うけどなぁ。
2020-01-27 08:59:12現代でOOPを難しくしている戦犯がいるとすればそれは令和にもなって初学者にOOPとはsmalltalkのメッセージパッシングが〜とかとにかく原理と起源から説明しないと気がすまない人達なんじゃないかと個人的には思っているよ
2020-01-27 09:02:38今どきの若者jsですらtsからしか触ったことない人普通にいそうだし、メジャー言語でクラスベースOOP採用してない言語のほうが珍しいし、そういう時代になって今更「世の中にはOOPと呼ばれるものがあってな…。」みたいな説明いらんでしょって感想です。
2020-01-27 09:11:36現代で「構造化プログラミングとはgotoを避け順次分岐反復を―」から説明することないだろうし普通にifとかforを「そういうものだ」として教えると思うんだけど、現代におけるOOPももはやそういう種のものになっていると思うんだよなぁ。
2020-01-27 09:16:45犬猫とかいう現実で使わないメタファーをやめろとは言うが皆さんの好きなDDDで犬や猫がドメインとして現れるなら現実としても使うでしょとは常々思っている。ゲームとか。
2020-01-27 09:21:49犬猫動物の例を用いても継承による差分プログラミングの危うさみたいなものは例えば泳ぐ鳥であるペンギンの例を用いる等で伝えることはできるし、それに対してinterfaceや、あるいは型クラス等の別アングルの解決方法を示すこともできる
2020-01-27 09:28:01オブジェクト指向でいう「クラス」は会社で言う「~~~部」である。 新しい業務が発生したら、どの部署に仕事を頼もうか?どの部署が担当したら最も効率的だろうか?部署を跨いで仕事を依頼する場合、所定のフォーマットに依頼内容を書いてもらおうか? というのがオブジェクト指向の設計です。 twitter.com/xhack20/status…
2020-01-27 09:41:02じゃあどんな例えが適切か?オブジェクト指向を「会社」に例えてみました。 twitter.com/xhack20/status… twitter.com/xhack20/status…
2020-01-27 10:08:21猫型クラス speakerdeck.com/inamiy/categor… pic.twitter.com/XnYR4ktdw2
2020-01-27 10:09:40アニマルクラスを継承した猫クラスで鳴くメソッドをオーバーライドすればにゃあと鳴く、みたいなのは機能の説明でしかなくて「何がうれしいの?」という疑問の答えになっていないので、初心者向けでこそ避けるべきみたいなスタンスです
2020-01-27 12:07:17