21/03/16 17:06:02.41 VhqTt897.net
オブジェクト指向について、調べれば調べるほど疑問が募ります。低レベルで粗末な疑問かも知れませんが、ご教授願いたいです。
・データと振る舞いをまとめる?
まとめると何か良いことあるの?
ファイルあるいはモジュールにはまとまってるよね?
丁度いい単位があるのに、何故わざわざオブジェクトという概念を導入するの?
(Javaには1ファイル1クラスという文化あるらしいけど)
・カプセル化?
モジュールのimport, exportでも実現出来るよね?
(構造体などへのアクセスを制限できれば)
・ポリモーフィズム?
別にデータと振る舞いをまとめなくても実現出来るよね?
・モノのように扱いたい?
モノとして扱いたいときに扱えば良くない? なんでわざわざ全てをオブジェクトにするの?
2:デフォルトの名無しさん
21/03/16 17:14:31.50 mcRR7cz/.net
オブジェクトはクラスのことだとわかるけど
モジュールはなんだろ、パッケージのこと?
3:デフォルトの名無しさん
21/03/16 17:17:49.88 mbk3cz74.net
> ・データと振る舞いをまとめる?
> まとめると何か良いことあるの?
データが複数ある場合に、データごと振る舞いが
決まっているということが明確になります。
> ファイルあるいはモジュールにはまとまってるよね?
データと振る舞いがまとまっていません
> (構造体などへのアクセスを制限できれば)
それができないから、オブジェクト指向があります
> 別にデータと振る舞いをまとめなくても実現出来るよね?
データごとに振る舞いが変わるということが明確に表現できます。
> モノとして扱いたいときに扱えば良くない? なんでわざわざ全てをオブジェクトにするの?
関数もモノとして扱えば、モノに対して関数を割り当てることが出来ます。
4:デフォルトの名無しさん
21/03/16 17:20:32.30 vDQQ/7BC.net
用語に振り回されてプログラムできなくなるアホの典型例
5:デフォルトの名無しさん
21/03/16 17:22:59.10 mbk3cz74.net
たとえば 4980012345678901 という値は VISAのクレジットカード番号ですが、
これがただの文字列であれば、クレジットカード番号とした正しいかをチェックする
validate() メソッドがあるわけがないことがわかります。
4980012345678901 という値に対してクレジットカード番号というクラスを割り当てると
この値に対する validate() メソッド が存在することが容易に推測できます。
6:デフォルトの名無しさん
21/03/16 17:24:31.39 VhqTt897.net
>>2
オブジェクトとクラスごっちゃにして説明してすみません。
モジュールは大雑把にいうとファイルのことを指して言いました。Pythonでいうとfile, Rustでいうとmod module_name { }のことです。node.jsではfileです
7:デフォルトの名無しさん
21/03/16 17:47:22.67 kqeQk11d.net
>> 3
回答ありがとうございます。
> データと振る舞いがまとまっていません
では、何をまとめたものなのでしょうか?
> それができないから、オブジェクト指向があります
構造体へのアクセスを制限する機能があれば、メソッドをまとめなくとも十分なのでは?という意味です
> 関数もモノとして扱えば、モノに対して関数を割り当てることが出来ます。
曖昧な表現で申し訳ないです。モノというのは値のことではなく、メソッドを生やしたオブジェクトである必要があるのか?という意味です。
この疑問の答えは「データが複数ある場合に、データごと振る舞いが決まっているということが明確になります。」という回答に含まれると思いますが。
8:デフォルトの名無しさん
21/03/16 17:50:10.18 mbk3cz74.net
> では、何をまとめたものなのでしょうか?
データと振る舞い
> 構造体へのアクセスを制限する機能があれば、メソッドをまとめなくとも十分なのでは?という意味です
構造体へのアクセスを制限するには、データと振る舞いをまとめないと無理
> 曖昧な表現で申し訳ないです。モノというのは値のことではなく、メソッドを生やしたオブジェクトである必要があるのか?という意味です。
関数には名前という属性があります。どのような引数を渡せるかという情報を持っています。
明らかに関数以外の情報を持ったモノです
9:デフォルトの名無しさん
21/03/16 17:57:50.12 kqeQk11d.net
>>5
回答ありがとうございます。
データに対して、「クレジットカード番号」という型を割り当て、
クレジットカード番号に対して処理できる関数を用意すれば解決なように思えるですが、
わざわざオブジェクトに付属するメソッドという概念を用いるメリットがわかりません。
10:デフォルトの名無しさん
21/03/16 18:05:30.02 Oe0YkKcP.net
>>9
文字列はクレジット番号として使えるから~みたいに
文字列に対する操作を追加していったら
文字列に対してできることが膨大になりすぎて
管理できなくなるだろ
11:デフォルトの名無しさん
21/03/16 18:06:43.78 Oe0YkKcP.net
オブジェクト指向はグループ分け
グループに分けないと管理が大変になる
オブジェクト指向はクラスを多数定義できるとも言いかえられるな
12:デフォルトの名無しさん
21/03/16 18:12:46.48 kqeQk11d.net
>>8
> 構造体へのアクセスを制限するには、データと振る舞いをまとめないと無理
たしかRustではプロパティにpubを修飾で制御できたような気がするんですが。
> 関数には名前という属性があります。どのような引数を渡せるかという情報を持っています。
明らかに関数以外の情報を持ったモノです
なるほど。確かにそのような情報をもってますね。失念してました。
しかし例に挙げられた名前や引数などはプロパティであってメソッドが必要ということにはならないような気がします。
>> では、何をまとめたものなのでしょうか?
>データと振る舞い
クラスにデータと振る舞いがまとまっているということでしょうか?私が聞きたいのは、ファイルやモジュールには何がまとまっているのかです。
13:デフォルトの名無しさん
21/03/16 18:15:22.40 kqeQk11d.net
>>10
だから「クレジット番号という型を割り当てる」って言ってるんやで
文字列型のまま扱うとは言ってない。
14:デフォルトの名無しさん
21/03/16 18:20:05.64 kqeQk11d.net
>>11
確かに、それはメリットfile単位に対するメリットになりそうですね。
ただ思ったのは、モジュールとか名前空間を定義した方がシンプルな仕様な気がします
15:デフォルトの名無しさん
21/03/16 18:46:21.54 qZ3Xge1G.net
>>1
>・カプセル化?
クラスや構造体の内部要素へのアクセス制御のことを指してカプセル化と言ってるなら
そういう機能があればいいだけなのでオブジェクト指向じゃなくてもできる
>・ポリモーフィズム?
これもオブジェクト指向である必然性はないよ
他のやり方でも実現できる
>・モノのように扱いたい?
オブジェクト指向を使うのにモノのように扱いたいという動機はない
16:
17:デフォルトの名無しさん
21/03/16 18:59:52.68 kqeQk11d.net
>>15
> クラスや構造体の内部要素へのアクセス制御のことを指してカプセル化と言ってるなら
そういう機能があればいいだけなのでオブジェクト指向じゃなくてもできる
なるほど。カプセル化は「クラスや構造体の内部要素へのアクセス制御」を行い、
それらにはメソッドを介して制限するのがカプセル化と思っていたんですが、そうではないのでしょうか?
(この文脈ではメソッドではなくモジュールから提供される関数を指していますが)
> これもオブジェクト指向である必然性はないよ
他のやり方でも実現できる
オブジェクト指向では、ついでにやってるという感じで良いでしょうか?
> オブジェクト指向を使うのにモノのように扱いたいという動機はない
良くネットにある解説記事ではそのように説明していたので、
何かそういう動機もあるのかと思ってました。少なくともそう考えてない方もいるのですね。
18:デフォルトの名無しさん
21/03/16 19:00:47.10 Oe0YkKcP.net
オブジェクト指向じゃなくても他のやり方で出来る
→他のやり方でやってる言語は?
→ない、なぜなら他のやり方でできるが、それは冗長で使いにくいから
→つまりやりたいことをやる場合に、オブジェクト指向言語が一番スマートな構文を持っている
19:デフォルトの名無しさん
21/03/16 19:01:37.10 Oe0YkKcP.net
C言語を使う理由は?アセンブラでも出来るのでは?
みたいな話
頑張るぐらいなら、オブジェクト指向を使う
20:デフォルトの名無しさん
21/03/16 20:21:18.73 ZppluVpF.net
全部スタティックなメソッドで作ることを考えてみると少しは分かるかな?
21:デフォルトの名無しさん
21/03/16 20:25:15.38 sABqeeBA.net
>>17
Lisp系の言語やML系の関数型言語は、オブジェクト指向ではない言語の一例かと。(lispはカッコに問題あると言われてもしょうがないかも知れませんが)
なるほど、オブジェクト指向をすることで、>>1で質問したようなことが実現できるのがメリットなのではなく、それらを最もスマートに実装できることがメリットという主張なのですね。
オブジェクト指向が最もスマートであるという理由, 根拠が気になりますね。よろしければ教えて下さい。
22:デフォルトの名無しさん
21/03/16 20:26:53.20 sABqeeBA.net
>>19
メソッドにすることで名前空間を汚染しないよね?ということですか?
23:デフォルトの名無しさん
21/03/16 20:27:46.73 sABqeeBA.net
>>21
い
24:デフォルトの名無しさん
21/03/16 20:30:01.10 sABqeeBA.net
>>21
あ、staticメソッドなら全然違うか。
25:デフォルトの名無しさん
21/03/16 20:36:56.64 VN15UowM.net
"It is better to have 100 functions operate on one data structure than to have 10 functions operate on 10 data structures." - Alan J. Perlis
26:デフォルトの名無しさん
21/03/16 20:54:13.16 sABqeeBA.net
>>24
どういう意図でこの投稿したんですか?
27:デフォルトの名無しさん
21/03/16 20:57:53.35 qZ3Xge1G.net
>>16
内部要素へのアクセス制御を指してカプセル化という人もいれば
データと振る舞いをオブジェクト等の1つの言語要素にまとめることをカプセル化という人もいる
URLリンク(en.wikipedia.org)(computer_programming)
ポリモーフィズム自体はオブジェクト指向で書く場合でもそうでない場合でもほぼ必須の機能
オブジェクト指向の場合はいろいろあるポリモーフィズムのやり方のうちSubtypingを多く使うというだけ
28:デフォルトの名無しさん
21/03/16 21:08:00.17 A0PxCKQ0.net
データとそのデータの処理をひとまとめにしたのがオブジェクト指向
この方法論を使うと大規模プログラミングがよりよくなるという強い信仰がある
宗教に近いかもな
他に変わる方法もないし
なんとなく大規模プログラミングを書くと破綻することはよく知られている
万能ではないけど
いくらでもうまくいかない例は挙げられている
29:デフォルトの名無しさん
21/03/16 21:09:27.27 qZ3Xge1G.net
データを振る舞いをまとめたオブジェクトを中心的な単位要素としてソフトウェアを作る/捉えるのがオブジェクト指向
ソフトウェアの要素をまとめる方法の一つなので他の方法に比べたアドバンテージもあればディスアドバンテージもある
例えば画面上のボタンもテキストもリンクもタイトルバーもみんなクリック可能で
クリック時にはそれぞれ別の動きをするとした場合に下記のようなAPIに整理するのがオブジェクト指向的
button.click()
text.click()
link.click()
titilebar.click()
clickableならそれぞれの型がclickメソッドを持ってる(clickメッセージに応答できる)
新しくタブをクリックできるようにする場合に他の要素に影響を与えずtab.click()を実装できる
逆にtouch()にも反応するようにするためにはそれぞれの型にtouchメソッドの実装が必要
30:デフォルトの名無しさん
21/03/16 21:24:56.48 qZ3Xge1G.net
click(button)
click(text)
click(link)
click(titlebar)
オブジェクト指向的じゃなく上記のように実装した場合は
受け取る型によってclick関数を多重定義したりclick関数内部で分岐が必要
それにclick関数がどの名前空間・どのモジュールに属するかを別途検討してそれを覚えておかないといけない
31:デフォルトの名無しさん
21/03/16 21:28:31.02 qZ3Xge1G.net
クラスやオブジェクトの1箇所(1つの型)にデータと振る舞いをまとめるんじゃなく
Traitとか型クラスと呼ばれるもの(HaskellのType Class, RustやGoのTrait, ClojureやElixirのProtocol等)を使う方法もある
Traitは振る舞いの型をデータの型とは分けて定義して、特定のデータ型に対する振る舞いの実装を書いて紐付けることで
関数の多重定義や関数内部で分岐を不要にできる(Subtypingとは別の形のポリモーフィズム)
32:デフォルトの名無しさん
21/03/16 21:38:25.74 6cgwc1EV.net
>>26
初耳でした。カプセル化と言っても意味に2つの流儀があるのですね。
> オブジェクト指向の場合はいろいろあるポリモーフィズムのやり方のうちSubtypingを多く使うというだけ
本筋からそれるかもしれませんが、なぜオブジェクト指向ではSubtypingを多く使うのでしょうか?
33:デフォルトの名無しさん
21/03/16 21:48:05.15 6cgwc1EV.net
>>27
オブジェクト指向は信仰的な要素も強いのですね
34:デフォルトの名無しさん
21/03/16 21:54:18.97 V+qRx+gd.net
Cの時代
mallocしたメモリのサイズにユーザーが直接アクセスすることはできなかった
それはンパイラによって実装が秘匿されつねに整合性が保たれた
名前すらなかった昔からオブジェクトはモノリスのごとく存在したのだ
35:デフォルトの名無しさん
21/03/16 22:00:31.83 6cgwc1EV.net
>>28
GUIやゲームを作る場合、オブジェクト指向が感覚的にですがしっくりくる感じがしますね。(ゲームは作ったことないですが)
なるほど、オブジェクト指向的アプローチと関数型アプローチには1例には過ぎませんが、そのような違いがあるのですね。
36:デフォルトの名無しさん
21/03/16 22:06:51.87 6cgwc1EV.net
>>30
パラメータ多相性ですよね。
個人的にはトレイトと型クラスのような多相性の方が自然に思えたので、
なあなあにしていたオブジェクト指向にはどんなメリットがあるのだろう、
オブジェクト指向の方が綺麗なプログラムが書ける場合があるのか?と思い調べ始めました。
37:デフォルトの名無しさん
21/03/16 23:02:34.82 ZppluVpF.net
難しく考えすぎじゃね?
例えばC言語時代ならファイル操作はFILE構造体がファイル操作の中身だった訳だが
C++でクラスに設計しなおすとFileクラスでファイル操作の実装等はブラックボックスで良くなる
これだけだと簡単でそんなに恩恵無いとなるが
次にCSVファイルをもっと簡単に扱いたいなとなるとすると、Fileクラスにgetcsvやputcsvみたいな
csvの1行の操作メソッドを追加してもいいけどあくまでFileクラスなので
CsvFileクラスを新設し、Fileクラスから継承または内包しgetcsvやputcsvを実装した方が
スマートだと思うが、この辺の話が理解出来ないと中々難しいような気がする
38:デフォルトの名無しさん
21/03/16 23:12:11.25 Oe0YkKcP.net
オブジェクト指向だと
「ファイル」を「開く」
手続き型だと
「ファイルオープン」で「ファイル」を開く
頭痛が痛いみたいに冗長な表現になる
39:デフォルトの名無しさん
21/03/17 00:37:30.95 RHLlHQqy.net
>>36
たしかに継承はオブジェクト指向独自の機能な気がしますね。オブジェクト指向でないとFileに対する関数を同じ実装でもCsvFileに再度実装する必要があるので。
内包(合成, コンポジション)の場合は、ほぼ同等ですが。
ただ最近は継承の機能が無い言語も出てくるくらいには, なかなか扱いづらい機能なので、そこら辺はどうなんでしょうか?
40:デフォルトの名無しさん
21/03/17 00:57:26.31 RHLlHQqy.net
>>37
なるほど確かに名前が衝突しやすいので冗長になりがちな所はありますね。
データと振る舞いをまとめるメリットの1つに思えます。
(ただこの場合はopen(file)でもそこまで問題ない気がします。getとかは冗長になりやすそうです)
41:デフォルトの名無しさん
21/03/17 15:06:30.73 3LIDSRD/.net
むかしは組み込み関数や簡単なライブラリレベルみたいなものまで
いちいちプログラマが毎回書いてて
「めんどくせえから再利用したい…っつかできないと大規模プログラムできねぇ」と
「中の変数類をどっかわけのわからないとこからアクセスして弄るのは
プログラムの修正方法として手軽だけど、これやってるとわけがわからなくなるわ!」
がどんどん出てきたので
・入口出口を決めてブロック化しようぜ
・ブロック単位で再利用する言語的なしくみを取り入れようぜ
から、さらに
・「ブロックにAを入れてBが出る」じゃやっぱりなんだかわかんなくなるじゃねーか
ここにも人間が読んでわかるクッション入れて
「ファイルを読み込むクラス.読み込む(ファイル名)」とか出入り口書こうぜ
ってなった…あたりがまだ現行かなぁ…
とにかく「俺がわかればいいんだよめんどくせえ!」ってプログラマの思惑と
「それじゃわかんなくなんだよ!」がずっとせめぎあって常に中途半端なとこに仕様がある感じ。
30年以上前のObjctive-Cの「で、おまえはなにができるオブジェクトなんだっけ?」って
動的問い合わせとか「そんなの“実用”じゃ要らん!」ってモダン言語()じゃ削られるしw
42:デフォルトの名無しさん
21/03/17 15:16:49.85 VBEJtWnA.net
20年ぐらい前に学生の頃に聞いたエージェント指向
初めて聞いた時に、オブジェクト指向にメタ情報つけただけじゃん
メタ情報つけた所で、問題解決できるオブジェクトが存在してなきゃ意味ないじゃん
とか思っていたが、やっぱり流行らなかったな
43:デフォルトの名無しさん
21/03/17 15:29:29.24 kGlpGNRi.net
open(file) と file.open() は書き順が違うだけで意味は同じ。
文法的にはopenは動詞、fileは対象語。
対象語は英語でいうとオブジェクト。
file.open() は対象語が先に来るからオブジェクト指向で良いかと
44:デフォルトの名無しさん
21/03/17 15:41:05.53 VBEJtWnA.net
だがopenという名前をグローバルに定義しないといけなくなる
open(database)という使い方ができない
45:デフォルトの名無しさん
21/03/17 16:16:04.31 AhGhhMoL.net
>>40
クッションというのは
・ファイルを読み込むクラス
・読み込む
のどちらですか? ファイルを読み込むクラスに関して、モジュールと解決する問題の領域が被っている感じしますね。(当時は無かったということでしょうか?)
Objective-Cは詳しくないのでよく分かりませんが、今は静的解析によってエディタが補完してくれるので関数(データ)よりもデータ.関数の方が便利には感じます。
46:デフォルトの名無しさん
21/03/17 16:17:58.81 AhGhhMoL.net
>>41
私が言っているものがそのエージェント指向というものに近いということですか?
47:デフォルトの名無しさん
21/03/17 16:22:35.13 AhGhhMoL.net
>>42
open(file), file.open()の意味が同じなのは理解しています。(機能としてメソッドにはオブジェクトへのアクセスができるという点は異なりますが)
つまり、オブジェクト指向かどうかは記法で決まると言うことでしょうか?
48:デフォルトの名無しさん
21/03/17 16:34:45.58 AhGhhMoL.net
>>43
名前空間を汚染しないというのは、オブジェクト指向のメリットだと思います。
たしかに、異なるデータに対して使いたいときはオーバーロードするか、fs.open(file)とか書く必要あるので、やはり名前空間の解決のメリットは大きいですね。
49:デフォルトの名無しさん
21/03/17 16:49:12.98 AhGhhMoL.net
現在、オブジェクト指向を使う主な利点は、
・データが名前空間になる
・継承で記述量が減る
の2点で、他の機能については様々な実現方法はあるものの、言語の一貫性、統一性のために、独自の機能が備わっている。
といった認識で良いでしょうか?
50:デフォルトの名無しさん
21/03/17 16:51:27.50 AhGhhMoL.net
>>48
もちろん歴史的経緯は違いますが
51:デフォルトの名無しさん
21/03/17 16:58:25.89 AhGhhMoL.net
>>48
「いや、他にもあるわ」
って方いたら教えて下さい
52:デフォルトの名無しさん
21/03/17 19:00:06.81 qYxHg6u4.net
カプセル化の意義が理解出来ないアホに何言っても無駄だし
それだけでも分かればスレタイのようなことをいちいち聞かない
ポリモーフィズムの意義について理解したければ
ローカルファイルシステムも
ネットワークファイルシステムも
似たように操作できる利点と
その実現方法に想いを馳せれば充分
下らないスレを建てたことを自覚しろ
目の前の言語の機能をまともに使え
ライブラリのインターフェースから常識を学べ
机上の空論をダラダラ並べるな
53:デフォルトの名無しさん
21/03/17 19:21:27.08 AhGhhMoL.net
>>51
カプセル化, ポリモーフィズムの意義がわからないとか一言も言ってないんだがw
54:デフォルトの名無しさん
21/03/17 19:38:17.66 qYxHg6u4.net
>>52
おう、>>1 を読んでなかったわ
適当にスレタイと直近のレスの雰囲気だけ見て
タイトルの疑問に答えてやった
obj.method()ではなくmethod(obj)みたいな記法なら
オブジェクト指向ではないみたいな
しょうもない戯言はとっくの昔に頭から追い出してるから
あんな下らないことが >>1 にダラダラ書いてるとは思わなかったわ
そういう扱いが妥当な疑問だってことだよ
それぞれの記法のメリット、デメリットぐらい
見れば分かるだろうが
いい加減にレスして悪かったな
55:デフォルトの名無しさん
21/03/17 19:45:08.36 qYxHg6u4.net
>>52
スレタイが悪い
名前の重要性が分かったろう
こんなガバガバなセンスでネーミングされた
モジュールやメソッドが山ほどあるシステムを想像してみろボケナス
56:デフォルトの名無しさん
21/03/17 19:52:05.44 AhGhhMoL.net
>>54
確かに、スレタイと>>1の質問の仕方は悪かったなとは反省してる。聞きたいことそんまま書いたら誰も反応しなくて埋もれると思ったんや。
メソッドが山ほどあるのはきついが、モジュールは構造化されてれば問題ないし
、そういう言語が大半だろ
57:デフォルトの名無しさん
21/03/17 20:15:10.51 qYxHg6u4.net
クラス指向の言語はなんだかんだでヘルプが見やすい
Microsoftが膨大なライブラリを公開する上で
他の選択肢なんかあり得るのか具体的に細かいところまで想像してみろ
58:デフォルトの名無しさん
21/03/17 20:22:00.46 AhGhhMoL.net
>>53
記法に関して言うと、>>42の回答の意味, 主張を確認しただけであって、別にそうだと思ってない。そして記法にメリットとデメリットが存在するのは自明だし、どっちもどっちだと思ってる。
あくまで疑問としては、オブジェクト指向のメリットとして挙げられるものに、他にシンプルな実現方法があるのに、それでもなおオブジェクト指向であるメリットは何なのか、だった。
59:デフォルトの名無しさん
21/03/17 20:32:53.65 +1/uJ3cd.net
>>57
ローカルで無駄なくシンプルにするならすればいい
プログラムで世界の発展を目指していったらオブジェクト指向が
効果的ってこと
60:デフォルトの名無しさん
21/03/17 20:34:26.35 qYxHg6u4.net
>>57
お前の言うのオブジェクト指向では無いものって何のことだよ
せいぜいクラス指向じゃ無いもの程度の意味じゃないのか
カプセル化とポリモーフィズムがあれば
記法や語順がどうであろうとオブジェクト指向と呼んで良い
何が知りたいのかハッキリしろ
61:デフォルトの名無しさん
21/03/17 20:48:14.98 +1/uJ3cd.net
優劣で考えるからわからなくなるので
プログラム界の政治的な方針と考えればいいんじゃ
作る側としては0と1をコントロールできたほうが
無駄のないものができる
62:デフォルトの名無しさん
21/03/17 21:05:28.52 AhGhhMoL.net
>>59
クラス指向あるいはプロトタイプ指向を指して、オブジェクト指向と呼んでる。
ちなみに俺の言うカプセル化は「直接アクセスを制限するための言語機能」という意味。
63:デフォルトの名無しさん
21/03/17 21:09:42.08 AhGhhMoL.net
>>61
要はデータと振る舞いをバンドルすることをオブジェクト指向と呼んでる。
64:デフォルトの名無しさん
21/03/17 21:11:18.49 +1/uJ3cd.net
ポリモーフィングとか知らんけど
オブジェクトを継承しすぎてわけがわからなくなる
から上の方でまとめるってことだろ
65:デフォルトの名無しさん
21/03/17 21:13:44.06 AhGhhMoL.net
>>58
>>60
歴史的な経緯でオブジェクト指向良いよねという政治的方針が固まった。
そのときのプログラム界の方針に合わせて、一貫性や統一性を重視したほうが良いプログラムになるってことでしょうか?
66:デフォルトの名無しさん
21/03/17 21:16:11.94 AhGhhMoL.net
>>64
「歴史的な経緯」だけでなく、歴史的経緯及び世界的情勢
67:デフォルトの名無しさん
21/03/17 21:27:15.70 +1/uJ3cd.net
>>64
歴史とか政治とか比喩だし
上流から見たらオブジェクトを作れば下々も扱える
ようになるという
一種のプログラミングだね
68:デフォルトの名無しさん
21/03/17 21:30:01.79 W80ESG/m.net
別に手続き型でも変わらないという意見は分かるけど
細かい事だがVSCodeなどでインテリセンスで表示されるパブリックなメソッドやプロパティの候補が
全てが分かるのは効率良いかと思う
これが手続き型では、どういう関数があるかを覚えてないといけない点は何気に違うかなと
クラスにまとまっている方が何かと美しいし、メソッド名も冗長にしなくて良いという点も価値があると思う
fopen()とFileクラスのopen()ではオブジェクト指向の方が個人的にはすっきりすると思う
DIでモックとか作ったりする場合もinterfaceでメソッドだけ宣言して実際のクラスの実装が切り替えられるような
使い方が出来るのも何気に便利だと思うし、一度使いだしたら今更手続き型の方法で機能を提供する意味が無いかなと
69:デフォルトの名無しさん
21/03/17 21:45:10.18 AhGhhMoL.net
>>66
それはメソッドというインターフェイスがあることによって、オブジェクトの使用者も余計なことを考えずに使えるという意味でしょうか?
70:デフォルトの名無しさん
21/03/17 21:48:00.61 qYxHg6u4.net
メジャーな多くの言語に生き残っている記法のメリットが本気で分からないなんてのは頭おかしいレベルだからな
大抵のケースで最適解なんだよ
単なるメンバアクセスと計算を伴うプロパティ取得を
同じインターフェースに統一可能で
それが最小限の記述で出来る文法が前提で…
というだけでも、もう色んな選択肢が限られてくる
71:デフォルトの名無しさん
21/03/17 21:54:23.00 AhGhhMoL.net
>>67
補完機能に関しては、単純に文法の問題であって、型推論に完全性があれば機能すると思うのですが。もしかして私が何か勘違いしているでしょうか?
メソッド名に関するメリットには>>48等に書いたとおり同意できます。
interface等については、データと振る舞いのバンドルという概念を用いずとも、ポリモーフィズムを実現する方法があるので、そちらのほうが良いのでは?というのが私の疑問です。
ちなみに、私は手続き型派というよりどちらかというと関数型派です。
72:デフォルトの名無しさん
21/03/17 22:01:39.82 kWcDxPo7.net
オブジェクト指向言語というのは「オブジェクト指向ができる言語」ではなく
オブジェクト指向をするための構文が備わってて「オブジェクト指向がしやすい言語」という意味
73:デフォルトの名無しさん
21/03/17 22:05:11.08 AhGhhMoL.net
>>71
それは理解していますが、そのオブジェクト指向をする目的はなんですか?
オブジェクト指向のメリットに挙げられるものが、よりシンプルに実装可能なのになぜオブジェクト指向する必要があるの?という質問, 疑問です
74:デフォルトの名無しさん
21/03/17 22:10:51.20 +1/uJ3cd.net
>>72
LINEとかいろいろなもの
ホームページすらできないよ
個人的なクレーム言ってるだけなんじゃ
75:デフォルトの名無しさん
21/03/17 22:14:50.88 AhGhhMoL.net
>>73
できますよ。LINEを作ったことはないですが。
クレームですか。それでもなおオブジェクト指向である理由があるなら、納得しますよ?というかそれが知りたくて聞いてるんです。
76:デフォルトの名無しさん
21/03/17 22:19:27.77 AhGhhMoL.net
>>69
記法のメリットには同意してます。一つのオブジェクト指向のメリットであると思います。
「単なるメンバアクセスと計算を伴うプロパティ取得を
同じインターフェースに統一可能」このようにする利点を教えてくれないですか?
モジュールによるカプセル化ではなにかデメリットがあるんでしょうか?
77:デフォルトの名無しさん
21/03/17 22:33:58.22 +1/uJ3cd.net
モジュールとカプセル化は知らんけど
好きにすればいいんじゃ
知らんけど
78:デフォルトの名無しさん
21/03/17 22:50:44.23 12LzxBGv.net
>>72
>よりシンプルに実装可能
その例をコードで示してくれれば議論が進むんでないの?
79:デフォルトの名無しさん
21/03/17 23:00:22.40 AhGhhMoL.net
>>77
まぁそうですね。でも面倒くさい気持ちあるんで(不毛な議論続けるよりマシか?)、ポリモーフィズムは継承やinterface以外の方法もあるんやぞで納得できないかな?いやどっちも見せた方早いでしょうか?
80:デフォルトの名無しさん
21/03/17 23:09:24.27 kWcDxPo7.net
>>72
オブジェクト指向は人間のメンタルモデルに一致してるからわかりやすい
俺の机の横には卓上時計というモノがある。
卓上時計には、いろんな機能がある。
それらの機能は、そのモノ特有の機能である。
という文章をモノを排除して説明してみ
81:デフォルトの名無しさん
21/03/17 23:25:10.41 AhGhhMoL.net
>>79
>>1の最後の「モノとして扱いたい」という考え方したいということで間違ってないですか?
82:デフォルトの名無しさん
21/03/17 23:29:53.38 AhGhhMoL.net
カプセル化についてはこんな感じです。
mod hello {
type NameString = String;
pub struct User {
pub name: NameString,
age: usize,
}
pub fn the_user() -> User {
User { name: String::from("Alex"), age: 10 }
}
pub fn get_age(user: &User) -> usize {
user.age
}
}
fn main() {
use hello;
let user = hello::the_user();
let age = hello::get_age(&user);
println!("name: {}", &user.name);
println!("age: {:?}", age);
println!("age: {:?}", &user.age); // private field!
}
83:デフォルトの名無しさん
21/03/17 23:32:19.12 qYxHg6u4.net
>>78
>不毛な議論続けるよりマシか?)
当たり前だ
話に具体性がないせいで全ての議論が空転して
結論も出ようが無いのに
その程度のこともなかなか察しない奴だから
ハッキリ言って馬鹿だと思われてると思うよ
大体、モダンな言語は関数型言語の機能も大体持ってて
あからさまに関数型インターフェースの方が良い類のライブラリは普通にそのように書かれるようになっている
一体、既存のどんな例を、お前のどんな案で置き換えて
どのように良くなると言いたいのか
具体的な例を出せや
どうせデメリットの指摘が普通に来るから
具体的にやってみろ
クソみたいに単純な処理が山ほどあって
一部だけ異様に複雑でコロコロ仕様が変わったりする業務プログラムを
HaskellでC#より簡潔に書けるもんなら書いてみろと言いたい
84:デフォルトの名無しさん
21/03/17 23:33:56.42 RafGGBEE.net
よりシンプルに実装可能…?
85:デフォルトの名無しさん
21/03/18 00:01:53.12 3Mu6ecqi.net
>>81
UserだけじゃなくPCやスマホ、DogやCatも含まれてるコレクションからそれぞれの名前のリストを出力出来るようにしてよ
86:デフォルトの名無しさん
21/03/18 00:22:09.40 HNsscfeE.net
>>84
この言語だと継承できないんですけど、ポリモーフィズムだけ実現できればいい?
87:デフォルトの名無しさん
21/03/18 00:34:00.80 va0p8VYb.net
>>81
これこそ関数型で書くメリットが何一つアピール出来ない例じゃないか
少しは多数派より優れた点を示せ
既存の慣習に挑戦しようとしてんじゃねーのかよ
例えばC#でどれだけ簡潔にプロパティ書けるか知ってたらこんな例は出さないだろ
プロパティだってポリモーフィックに出来るんだぞ
これが30個の項目のアクセサを持つ報告書だったらどうなるか想像しろ
しかも一部のプロパティはネストしたプロパティを持つ別のオブジェクトのリストだったりとかザラだぞ
get_ageがそんなアクセサの一つだったら
使う側が探すだけでもダルいだろう
88:デフォルトの名無しさん
21/03/18 00:49:00.76 8EvgcXN4.net
簡単に言うと片付けの方法だよオーディオ関係のクラスには音を司る物をビデオ関係のクラスには絵を司る物を入れとけ混ぜるなよってこと
それらの自前ライブラリを設計できる上級者に向けた指針なわけよ読んで理解できない初心者には完全理解なんて不要
まずは全部入れたカタマリで好きなもの作れるようになれリサイクルしたくなって分別始めたらそれがオブジェクト指向の始まり
89:デフォルトの名無しさん
21/03/18 01:03:22.71 HNsscfeE.net
>>86
コードが上手くかけてないのはすまん。オブジェクト指向のメリットを知らないくらいには経験がないんだ。あとカプセル化が可能であることを示すのが目的だったんだよ。関数型言語の優位性を示したかった訳ではない。
なんで、オブジェクト指向に挑戦してると思い込んでるのか?
別に挑戦してるわけではなくメリットを知らないから、このスレ立てて聞いてるんよ。
C#だとプロパティもポリモーフィズムができるのか知らなかった。現状それもオブジェクト指向するメリットですね。
90:デフォルトの名無しさん
21/03/18 01:12:42.28 HNsscfeE.net
>>87
質問なんですが、
○○するためのモジュールはこれ。
○○を操作するためのモジュールはこれ。
これだとダメなんでしょうか?
「まずは全部入れたカタマリで好きなもの作れるようになれリサイクルしたくなって分別始めたらそれがオブジェクト指向の始まり」分かりました。これ試しながらプログラム書いてみます。
91:デフォルトの名無しさん
21/03/18 01:22:59.14 Ao1KNBsY.net
>>80
>>1の最後の「モノとして扱いたい」という考え方したいということで間違ってないですか?
プログラマーが「モノとして扱いたい」 ではなくて
人間が「モノとして扱いたい」ということ
URLリンク(www2.nhk.or.jp)
> 科学者たちは「あらゆる自然現象は、最終的には一つの数式で説明できるはずだ」と信じてきたのだ。
↑このように「専門家」は、どうにか頑張って数式で表したいと考えるが
専門家じゃない人にとってはそうじゃないんだよ
プログラミングは最初から専門家が使う道具として登場したから
非オブジェクト指向の方が先に作られたが、
本来オブジェクト指向 と 非オブジェクト指向であれば
人としてわかりやすいのはオブジェクト指向の方で
専門家が頑張
92:って表現しようとしてるのは逆に手続き型や関数型の方なんだよ
93:デフォルトの名無しさん
21/03/18 01:34:17.74 HNsscfeE.net
>>90
「プログラマーがモノとして扱いたい」なら扱いたいときだけ扱えばいいが、「人間としてデータをモノとして扱いたい」のだから、常にモノとして扱いたいのだ。ということでしょうか?
94:デフォルトの名無しさん
21/03/18 01:43:22.24 Ao1KNBsY.net
>>91
「あらゆる自然現象は、最終的には一つの数式で説明できるはずだ」と考えてる科学者でも
話をする時は自然言語を使うのと同じこと
95:デフォルトの名無しさん
21/03/18 02:41:52.32 No83I3zq.net
>>87
playメソッドなどコマンドいっしょなのでオーディオファイル再生クラスから
ビデオ再生クラス作る例がオブジェクト指向として挙げられてたの見た記憶あるが…
96:デフォルトの名無しさん
21/03/18 04:15:54.44 Ao1KNBsY.net
オーディオファイル再生クラスからビデオ再生クラス作るだと
継承して作るみたいに思えてしまうな
実際はオーディオファイル再生クラスから共通のメディア再生のインターフェースや共通機能を
独立させて、オーディオとビデオの共通クラスからの継承として作るのが正しいだろう
そして直接オーディオやビデオを再生するのではなく
コンテナクラスを作って、そこに複数のメディアを入れられるようにするだろうな
97:デフォルトの名無しさん
21/03/18 11:08:27.95 1EJu4W7O.net
一番大きい恩恵は、モデル化によるメモリ空間を管理を丸投げできる
98:デフォルトの名無しさん
21/03/18 12:49:39.45 va0p8VYb.net
1が何をしたいのかさっぱり不明
どうにかしろ
大方、具体的な言語から離れてオブジェクト指向について
抽象的な戯言ばかり書いてる本や記事ばかり読んでるから
いくら調べても分からないんだろ
それぞれの言語の設計思想に則った
まともな書き方があるだけだ
なんでオブジェクト指向でないといけないのか?
なんて戯言はC#の入門書(オライリーの分厚いやつ)でも
ガッツリ読んでから言え
スタティックメソッドとして実装するのが適切な処理なら普通にそうしろ
普通にまともにやれ
99:デフォルトの名無しさん
21/03/18 12:55:29.12 XuMuuNkH.net
>>96
なんか君だけ空回ってるよ、肩の力抜きなよ
100:デフォルトの名無しさん
21/03/18 13:03:12.04 XuMuuNkH.net
オブジェクト指向で作りやすいと思うのはデータ構造かな
リストとかスタックとか、手続き型でもオブジェクト指向のように
記述することはできるので、手続き型でも良いといえば良いけど
データと処理をセットにしてオブジェクトとして抽象化するとデータ構造を
うまく表現できて、そのデータ構造を使ってプログラム書くのが僕は好き
101:デフォルトの名無しさん
21/03/18 13:04:48.98 No83I3zq.net
>>94
たしかObjective-Cのドキュメントで「継承じゃなくてコンポジット大事。」な例で扱われてたかな。
基礎クラスNSObjectベースにオーディオ再生クラス乗せて、外に再生関係のインターフェイス出して
中で動画ファイル来た場合の処理書いて…はい!マルチメディアクラスができました!これがオブジェクト指向です。
って感じの。
102:デフォルトの名無しさん
21/03/18 14:42:05.24 va0p8VYb.net
>>97
お前も不毛なこと書いてる癖に
手続き型言語…というより単なる旧式言語で
結局オブジェクト指向と同じことする方法を今更話して何になるんだよ
せめて関数型言語でのやり方と比較しろよ
1が目的不明だからみんな思い思いに目的不明な議論してるだけだろ
不毛だな
103:デフォルトの名無しさん
21/03/18 15:00:48.46 HfXxQmPX.net
Cで充分です
・データと振る舞いをまとめる?
まとめると何か良いことあるの?
構造体にまとまってるよね?
丁度いい単位があるのに、何故わざわざオブジェクトという概念を導入するの?
・カプセル化?
ファイルとstatic, externで実現出来るよね?
・ポリモーフィズム?
別にデータと振る舞いをまとめなくても実現出来るよね?
・モノのように扱いたい?
FILE * で出来てるやん?
104:デフォルトの名無しさん
21/03/18 15:06:07.96 27UgiFQp.net
Object Oriented Programming is an expensive disaster which must end
URLリンク(medium.com)
105:expensive-disaster-which-must-end-2cbf3ea4f89d#:~:text=Object%20Oriented%20Programming%20is%20an%20expensive%20disaster%20which%20must%20end,-Jacob%20Bernard%20Friedman&text=And%20this%20is%20my%20experience,it%20is%20dismissed%20as%20irrelevant. 「オブジェクト指向プログラミングは費用のかかる災害であり、終わらせなければなりません」 長いけどよみごたえあるOOP批判
106:デフォルトの名無しさん
21/03/18 15:07:22.97 27UgiFQp.net
リンクがおかしかった
URLリンク(medium.com)
107:デフォルトの名無しさん
21/03/18 15:08:30.36 No83I3zq.net
そら「別に電気製品をプラグアンドプレイにしなくても
毎回電源落として各自が自分で電線を半田付けすればできるよね!」って言われりゃそうだが
まあ、あたまおかしいだろおまえ。としか
108:デフォルトの名無しさん
21/03/18 15:40:42.68 XuMuuNkH.net
>>100
不毛だと思って書き込んでるあなたの心はハゲてるよ
109:デフォルトの名無しさん
21/03/18 15:51:54.17 XuMuuNkH.net
>>101
オブジェクトという概念によってデータと処理をひとまとめにして整理できますよ
構造体にまとまってるのはデータだけですよね、構造体のデータを操作する
関数があるでしょうけどデータと関数をセットにするととても便利ですね、つまりオブジェクト指向爆誕なわけです
110:デフォルトの名無しさん
21/03/18 15:55:23.46 XuMuuNkH.net
djbのqmailのソースコードとか
linusのgitのソースコードとか
C言語だけれどもオブジェクト指向だよね
111:デフォルトの名無しさん
21/03/18 15:58:21.42 XuMuuNkH.net
データと関数を整理してオブジェクトにまとめる、オブジェクト指向とはソースコードの整理術
112:デフォルトの名無しさん
21/03/18 15:59:58.30 XuMuuNkH.net
モジュールもモジュールオブジェクトという一つのオブジェクトなんですよ
113:デフォルトの名無しさん
21/03/18 18:19:00.98 sGOAhrfQ.net
モノとして扱いたいって言ってる人は
何をモノとして扱いたいの?
主語も目的語もなくちょっと意味が分かんない
114:デフォルトの名無しさん
21/03/18 19:19:21.01 MDhAFIuw.net
関数ポインタよりも関数を無理なく渡せるってだけだぞ。
まあ最近はクロージャーのが使われる傾向にあるけど。
115:デフォルトの名無しさん
21/03/18 19:50:17.88 Q7UDeOqS.net
そーいや、c++は昔。
classはstructで定義した時代があったね。
116:デフォルトの名無しさん
21/03/18 20:08:35.80 koa9BEGM.net
ところで「チンポがシコシコする」という日本語表現は、学術的に正しいと言えるのか?
チンポ「を」シコシコするのではなくて、チンポ「が」シコシコする。この場合、「チンポ」は主語となる。
オブジェクト指向で言う「集約」は2種類あって、全体(俺)と部分(チンポ)が繋がっている場合と、
全体(俺)と部分(チンポ)が別々になっている場合とが考えられる。けれども「チンポ」はそれ自体
が独立した生き物であり、所有者の意思とは無関係に、自ら勃起して「シコシコする」。
例えば寝てる時にエロい夢みて朝起きてみたらチンコが勃起して射精してたとか。
違うか?
「胸がドキドキする」は良いが、「チンポがシコシコする」はダメな理由を、50字以内で述べろ!
117:デフォルトの名無しさん
21/03/18 20:10:54.72 koa9BEGM.net
オブジェクト同士は常に二人称で、「俺」←対話(メッセージング)→「チンポ」。
つまりチンポは独立し自ら考えて行動する別の生き物なのである。
この考え方に至ってからは、オブジェクト指向の理解もすんなり進みました。
上手くオブジェクトを定義して、上手く会話させてやるのがオブジェクト指向
での設計なんだなーと今でも思っています。
URLリンク(blog.mah-lab.com)
チンコの随意筋と不随意筋
URLリンク(d.hatena.ne.jp)
<俺>
「 部屋の英子がこちらを向いた気配に、彼は勃○した陰○を外から障子に突きたてた。障子は乾いた音をたてて破れ、
それを見た英子は読んでいた本を力一杯障子にぶつけたのだ。本は見事、的に当って畳に落ちた。 」
<チンポ>
「 その瞬間、竜哉は体中が引き締まるような快感を感じた。彼は今、リングで感じるあのギラギラした、
抵抗される人間の喜びを味わったのだ。 」
まさに独立した人格を有したチンポという、もう一人の俺がそこに現れるのである!
【藤子・F・不二雄】「みきおとミキオ」現在と未来、憧れの入れ替わり生活!
URLリンク(www.google.com)
118:デフォルトの名無しさん
21/03/18 20:18:40.59 SuebiFEo.net
『シコシコ』という擬音はどうでもよい。問題は、
自我 チンポ
↑ ↑ チンポ=自我
チンポ 自我
オブジェクト指向では、この三種類が考えられるということだ。
>チンポ=自我
散歩している時、自分もチンポも所在地は同一である。
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
夏目くんの場合は、チンポが自我を圧倒し、体が自然に滝川さんの股間に近づいていったのだ。
『笑ってごまかすな!!』
と言われても、夏目くんは何と言えば良かったのだろう?
チンポ≫自我
『チンポが自我を超えてしまった』を簡略化して、チンポがシコシコする!
チンポがシコシコしていると(チンポが自我を超越していると)、息もハァハァになる。
チンポがシコシコしている(チンポが自我を超越している)と、顔もアヘ顔になる。
つまりその顔は『チンポの一部』つまりチンポの皮と同じということ。
博士号の肩書きがあっても、STAP細胞のそれは間違いであり科学者として失格。
チンポと自我の関係について、それが間違いということなら、俺も科学者を自称するのを止めよう。
しかしながらあの夏目くんは、笑ってごまかす以外に何と申し上げたら良かったのか。
119:デフォルトの名無しさん
21/03/18 20:25:47.37 OSHLbicz.net
>>110
> 主語も目的語もなくちょっと意味が分かんない
「私は」オブジェクトを「モノ」として扱いたい
でいい?
主語とか目的語とか何を聞きたいのかわからん
120:デフォルトの名無しさん
21/03/18 20:28:13.34 koa9BEGM.net
928 デフォルトの名無しさん 2018/11/21(水) 18:59:11.61 ID:8Yc2p7H1
>>922
>ナンチャッテメッセージングスタイルになったのは
チンポ.オシッコを出す
チンポ.オシッコを止める
さっきトイレでやってきた。
929 デフォルトの名無しさん 2018/11/21(水) 19:07:17.83 ID:8Yc2p7H1
>>915
>単なる動的なメソッド呼び出しをメッセージと称し、ただしコールするメソッドが見つからない場合だけメッセージを
>ハンドリングできる省コストなナンチャッテメッセージングスタイルに落ち着いた。
×
俺.オシッコを止める 俺.オシッコを出す
○
俺.チンポに力を入れる 俺.チンポから力を抜く
121:デフォルトの名無しさん
21/03/18 20:34:29.65 koa9BEGM.net
>>115
おしっこの時のチンポは随意筋、勃起の時のチンポは不随意筋、これが「オブジェクトの独立性」。
122:デフォルトの名無しさん
21/03/18 20:41:26.79 koa9BEGM.net
チンポが勃起したり射精したりする自然現象は、「数式」ではどうにもならんぞ?
92 デフォルトの名無しさん [sage] 2021/03/18(木) 01:43:22.24 ID:Ao1KNBsY
>>91
「あらゆる自然現象は、最終的には一つの数式で説明できるはずだ」と考えてる科学者でも
話をする時は自然言語を使うのと同じこと
123:デフォルトの名無しさん
21/03/18 20:43:44.01 koa9BEGM.net
クリントン大統領の「不適切」というのは、チンポが独立して主体意思でシコシコしてしまったから。
チンポは独立した生き物であり、アメリカ大統領の権限をもってしても、制御することは不可能だ。
クリントンの「不適切な関係」
URLリンク(eigo-kobako.blog.so-net.ne.jp)
不適切な関係、そんな言語表現あるのか?
ちんぽがしこしこしてしまったのが、不適切な関係なのか?
124:デフォルトの名無しさん
21/03/18 21:29:21.65 wqSEV4VX.net
>>116
え、そうなの?
なぜオブジェクト指向を使うのか?の理由の一つとしてあげた
「モノとして扱いたい」というのはオブジェクトをモノとして扱いたいからなの?
トートロジーに感じるんだけど
125:デフォルトの名無しさん
21/03/18 23:19:54.35 1sWV2MVC.net
>>120
あわしろ氏は、オブジェクトとチンポは無関係と言ってるぞ。
126:デフォルトの名無しさん
21/03/18 23:23:31.36 TebuVfaR.net
部品に例えられた
127:デフォルトの名無しさん
21/03/19 06:58:20.75 UjV/RtqC.net
いろんな起源があるけどsmalltalk系のベースの考え方は
プログラムモジュールを「独立したロボットのようなもの」として考える考え方で
これは大型コンピュータがネットワークで繋がって動いてる背景想定で
この場合、どの順番で結果が出るかは非同期的だし予想はできないから
モジュールに「これ頼むよ、はい」って命令と素材渡してあとは勝手にできてくるのを待つ
モジュールそのものに自分をコピーする命令があって
例えば「画面上にウィンドウを開く」モジュールがあったら
それを雛形に「おいおまえのこういう亜種を作れ」と命令すると
命令に従って新ウィンドウが開く。
いいじゃんそれ!とコンピュータサイエンス側では大絶賛だったけど
そこまでは要らないかな…ってエンジニアリング側の思想や技術的制約で
思想仕様をつまみ食いしていろんな言語コネ上げて現在に至る。
128:デフォルトの名無しさん
21/03/19 08:55:07.75 MkYE3X1+.net
データ構造とデータフローがしっかり設計されていると
プロセスフローが適切に動き出す
129:デフォルトの名無しさん
21/03/19 11:25:59.11 CuRSo4nW.net
>>122
チンポが勃起したり射精したりするメカニズムは、いかなるオブジェクト指向言語をもってしても不可能。
130:デフォルトの名無しさん
21/03/19 12:13:53.83 GmtzzOvY.net
いや?
チンコに別スレッドでイベントループ回して性的刺激イベントが来たら勃てば良いだけだが
131:デフォルトの名無しさん
21/03/19 12:38:16.79 7QYaWD+G.net
>>89
自分で作ったものがモジュール化してリサイクルする価値のあるものになってきたら
カタマリから切り出す事が出来る好きにやればいいさ
何本か作ればここをモジュール化したら便利だなとか見えてくる
オブジェクト指向が思考の中心に有っちゃだめなんだよ頭の片隅にある程度でいい
132:デフォルトの名無しさん
21/03/19 12:53:19.14 8Q0/9bhg.net
>>85
目的と手段を履き違えてる
別にポリモーフィズムで実現しなくてもいい
その場合は変更に対して弱くなるというだけ
ポリモーフィズムでやりたいならジェネリクスでもTraitオブジェクトでもimpl Traitでも構わないがそれぞれメリットとデメリットがある
継承もそれらと同じでメリット・デメリットがある
まずはそれを理解すること
次に状況に応じて適切な選択ができる力を身につけること
133:デフォルトの名無しさん
21/03/19 12:57:03.86 7QYaWD+G.net
>>93
AVクラスにまとめて便利ならいいんじゃない
134:デフォルトの名無しさん
21/03/19 13:33:14.14 kf2p0gMa.net
あらゆるメソッドを詰め込んだ神クラスを作ります
135:デフォルトの名無しさん
21/03/19 14:54:37.42 ZwQV5hpU.net
結局のところ、目的は関数の呼び出し側と呼ばれる側の依存関係を逆にしたいってところなんだよ。
それをバカがどこまでも無駄に適用範囲を広げてわかりにくくしたっていうところ。
136:デフォルトの名無しさん
21/03/19 17:13:06.19 prgkhYTe.net
>>132
それは関数の受�
137:ッ渡しができればいいだけなのでオブジェクト指向とは関係ないやろ
138:デフォルトの名無しさん
21/03/19 18:13:21.05 mnFdHosS.net
staticおじさんという用語あるやん
あれってさ
議論に負けそうになった側の人間がよくやるやつに見えてきたな
論点じゃなくて相手の人格ごとケチつけようとレッテル張り始めるやつ
つまりstaticおじさんと言う用語に頼った時点でもう負けてんだね
139:デフォルトの名無しさん
21/03/19 18:27:45.62 AFuTfpel.net
staticおじさんが急に予防線張り出したwww
140:デフォルトの名無しさん
21/03/19 18:35:09.75 zfX0YSnj.net
staticを理由も無く多用する奴って実際理解していないという意味だしねw
141:デフォルトの名無しさん
21/03/19 18:41:18.39 AYbRm47O.net
議論を勝ち負けで判断してる時点でstaticおじさんの素質あり
142:デフォルトの名無しさん
21/03/19 18:51:56.07 FeUkda/f.net
勝ち負けに拘らないなんて奴は
こんなクソスレに何しにしてるんだ?
バトルをしに来てんじゃねーのかよ
143:デフォルトの名無しさん
21/03/19 19:36:48.79 ZpeY8wVS.net
>>134
それには僕も同意します
144:デフォルトの名無しさん
21/03/20 02:17:44.90 +o6sxQZ6.net
オブジェクト指向が本当に「自然な」モデリング手法であったならこんな疑問は出てこず誰でも「自然に」理解して使えているはず。
結局オブジェクト指向が解決する問題とやらはオブジェクト指向を使うことによって産み出される問題なのだ。
とんだマッチポンプである。
145:デフォルトの名無しさん
21/03/20 02:37:42.57 aAnJLG0Q.net
人間は自然に言葉を話し、自然に考えるが
言語学や哲学があるのと一緒
人間は自然に物事を考えてるがそれを曖昧さが許されない
コンピュータ上で表現しようとすると体系化が必要になる
146:デフォルトの名無しさん
21/03/20 06:52:48.05 1uyV6M03.net
>>1
オブジェクト指向とは元々アラン・ケイが提案したようにオブジェクトが他のオブジェクトにメッセージングをすることに本質があるわけよ
その実装のために各オブジェクトがどういうメッセージングを受け取るか発するかを定義する方法としてクラスベースやプロトタイプベースがあるわけ
そこを間違えて最初にクラスを出発点にしちゃったりクラスを唯一の必須事項だと勘違いしてしまうと本質を見失う
つまりオブジェクト間はメッセージングによってのみ相互作用が可能であり
オブジェクト内部がどうなっているかは見えないし知る必要もないのがオブジェクト指向
それを実現するために各プログラミング言語によって表現方法や実装方法が様々に異なるだけ
この最初に提案されたオブジェクト指向の考えをきちんと理解できれば
あなたが疑問は解けるはず
実装方法の一つに過ぎないクラスとかに囚われるダメな人にはならないように
147:デフォルトの名無しさん
21/03/20 08:00:59.81 aAnJLG0Q.net
アラン・ケイはコロンブスと同じで、誰もやったことがない頃に
やったからすごいと言われてる。0から1を生み出すのは誰にでも出来ることではない
それに比べれば1から2、2から3にするのは簡単
だがゆっくりと技術は進化する。技術だけを見ればアラン・ケイの
オブジェクト指向よりも今のオブジェクト指向の方が実用的
一人の天才よりも多数の人の手によって改善された今のほうが優れてるんだ
いつまでも原始的な初期のオブジェクト指向にとらわれていては駄目だぞ
148:デフォルトの名無しさん
21/03/20 08:19:08.05 CVxVjVQF.net
それぞれのプログラムでデータを纏めたりしてそれが結果的にオブジェクトになったりするわけで
オブジェクト指向って聞いてこういうものだってって事ではないような
古いとか新しいとかオブジェクト指向が目的となってるのかな
149:デフォルトの名無しさん
21/03/20 10:06:45.20 swqMBZjM.net
カプセル化(英語:encapsulation)とは、オブジェクト指向を構成する概念の一つで、
オブジェクト内部のデータを隠蔽したり(データ隠蔽)、オブジェクトの振る舞いを隠蔽したり、
オブジェクトの実際の型を隠蔽したりすることをいう。
偏差値の低い学校向けの情報処理系教科書において「大変すばらしいものであり絶対に使うように」と大体的に宣伝された。
一方、カリフォルニア大学バークレー校の有識者を中心としたインターネットを作った人たちは「階層化の有害性」として
「絶対に使うな」としている。大雑把にいうと、その時は良くても、将来的な改修の際に隠蔽されたデータに
アクセスできないと解決できない問題が出てきて、結果的にデスマーチに陥るというのである。
オブジェクト指向の発案者であるアラン・ケイもコーディング規約(頭文字にアンダースコアを付けるなどの命名規則)で
縛る程度にすることを推奨しており、アラン・ケイが関わったオブジェクト指向プログラミング言語にはどれも「private」
という概念はない。
URLリンク(monobook.org)
150:デフォルトの名無しさん
21/03/20 10:21:53.05 R72307UF.net
>>141
チンポ【を】しこしこするのではなくて、チンポ【が】しこしこする!
151:デフォルトの名無しさん
21/03/20 10:35:45.54 ct9wvzVp.net
>>145
アラン・ケイのオブジェクトはネットワーク越しに稼働するんだから
データが隠蔽されるのは当たり前すぎてprivateがなかっただけだと思う
現代のWeb Serviceが一番近い
152:デフォルトの名無しさん
21/03/20 11:13:47.08 YVZkTbgb.net
>>1
わかりやすい文章を書くときに主語を書けって言われるだろ?
あれだよ
オブジェクトはプログラムに主語を書くためのアイデア
153:デフォルトの名無しさん
21/03/20 11:38:06.43 tGB0HigS.net
サルでもわかるみたいな解説サイト見ると一般人向けに曖昧に書いてあるから余計イミフなんだよな
154:デフォルトの名無しさん
21/03/20 11:40:05.73 vUNrx7r3.net
しにそう
155:デフォルトの名無しさん
21/03/20 11:40:56.14 vUNrx7r3.net
rpcって最近聞かなくなったな
156:デフォルトの名無しさん
21/03/20 11:46:11.22 ARQDcx4T.net
>>133
その渡した関数が引数で使うデータをどう渡すかって話だよ。
cで書いてみろ。型の部分で変なキャストしなきゃならなくなるから。
157:デフォルトの名無しさん
21/03/20 11:52:06.96 ct9wvzVp.net
>>42 オブジェクトは対象語
>>148 オブジェクトは主語
どっちなの!?
158:デフォルトの名無しさん
21/03/20 12:44:05.75 R72307UF.net
>>153
チンポ【が】しこしこする、チンポは主語であり独立した主体存在である。
159:デフォルトの名無しさん
21/03/20 12:44:08.47 ebrbGMYs.net
>>152
はい?
>目的は関数の呼び出し側と呼ばれる側の依存関係を逆にしたいってところなんだよ。
これがオブジェクト指向の目的だと主張してるんだよね?
型のキャストの有無に何の関係があるのかわからんが
ある型を引数として受け取る関数を
別の関数の引数や戻り値として受け渡しできればキャスト不要だよね?
オブジェクト指向関係ある?
オブジェク指向じゃなければCって前提なのかな?
160:デフォルトの名無しさん
21/03/20 12:44:37.50 ebrbGMYs.net
>>151
gRPC
161:デフォルトの名無しさん
21/03/20 12:48:47.06 iZK7E0+o.net
kindle unlimitedにある「オブジェクト指向でなぜつくるのか」を読めスッキリするから
162:デフォルトの名無しさん
21/03/20 12:49:19.48 ebrbGMYs.net
>>142
「オブジェクト指向を使うメリットって何?」って聞いてる相手に対して
>つまりオブジェクト間はメッセージングによってのみ相互作用が可能であり
>オブジェクト内部がどうなっているかは見えないし知る必要もないのがオブジェクト指向
こういう説明しかできないならオブジェクト指向を理解してないか
オブジェクト指向そのものにメリットないと言われても仕方がないなと思うぞ
163:デフォルトの名無しさん
21/03/20 12:53:18.27 R72307UF.net
>>142
>つまりオブジェクト間はメッセージングによってのみ相互作用が可能であり
>オブジェクト内部がどうなっているかは見えないし知る必要もないのがオブジェクト指向
そして、トイレへ行き尿を出そうと思うと、脳が「出してよい」という信号を送ります。ここで副交感神経が
主にはたらき、尿道の筋肉がゆるみ、反対に膀胱の筋肉は締まって尿を押し出し、尿が排出されるのです。
健�
164:Nな成人では、1回の排尿量は300ミリリットルほどで、約30秒で膀胱が空っぽになるのが普通です。 https://www.hainyou.com/sp/m/mechanism/
165:デフォルトの名無しさん
21/03/20 12:55:02.24 ebrbGMYs.net
>>157
第2版で「関数型言語でなぜつくるのか」という章が追加されて
オブジェクト指向の「次」の開発技術として紹介されてる
次の開発技術が実用化されているのに「オブジェクト指向でなぜつくるのか」?
166:デフォルトの名無しさん
21/03/20 12:58:39.45 tGB0HigS.net
教本丸暗記してるか初心者相手に言葉遊びしてるのかどのみち害悪だよな
リサイクルしたり拡張したり切った貼ったしやすくするためにある
167:デフォルトの名無しさん
21/03/20 13:05:16.75 ebrbGMYs.net
>つまりオブジェクト間はメッセージングによってのみ相互作用が可能であり
>オブジェクト内部がどうなっているかは見えないし知る必要もないのがオブジェクト指向
つまり関数間は関数呼び出しによってのみ相互作用が可能であり
関数内部がどうなっているかは見えないし知る必要もないのが関数型?
んなわけないしそんな説明されても意味ないよね
呼び出し側が知るべき要素と知る必要がない要素を分けられるのは
オブジェクト指向特有の機能じゃないんだから
168:デフォルトの名無しさん
21/03/20 13:11:27.57 paFdJ8yI.net
>>147
ネットワーク越しか否かを区別したり意識しなくてよいことが本質
そして全てはメッセージングで行なうのだから現在で言うところのメンバー変数はオブジェクト内部のものとなりゲッターやセッターとなるメッセージングを用意することで初めて外部からアクセス可能
>>145
だからprivate指定がない、というか、必要ないわけ
169:デフォルトの名無しさん
21/03/20 13:31:51.79 PoGobC7U.net
>>155
そういう動的で型の弱い言語なら全く問題ないし、
オブジェクト指向を無理にやる必要もないって話だわ。
cの不便さとオブジェクト指向が流行ったことにはかなり関係がある。
まああんまり話を理解できてなさげだから言っても理解できるとは思えんけど。
170:デフォルトの名無しさん
21/03/20 13:42:15.23 paFdJ8yI.net
>>162
それは概念のレイヤーが異なることをあなたが理解できていないだけ
例えばオブジェクト指向でのメッセージングとは関数呼び出しではないです
さらに言えばローカルとリモートを区別するRPCでもないです
メッセージングはオブジェクトから別のオブジェクトへの一方向の通信であり
もし何らか返事が必要となる場合は逆向きのメッセージングを行いますがその二つのメッセージングは非同期です
概念だけではわかりにくいから具体的な実現例をで言うと
例えば皆がよくわかる例としてJavaScriptでは
ネット通信やファイルアクセスは各オブジェクトの非同期関数になっていて
1つ目のメッセージングはその非同期関数の呼び出しとして
2つ目のメッセージングはその非同期関数のコールバックとしてこの言語では実現しているようですが
概念としてのオブジェクト指向のメッセージングとその各言語における様々な実現例にはもちろん乖離があります
そしてこのスレで混乱しているのは各言語における実現例だけを取り上げて話すからであって
元々の概念を理解してそれと共に話せばわらりやすいです
各言語の様々な記法なんていうのは単なる実現例側の話ですからそこに囚われていてはダメ
171:デフォルトの名無しさん
21/03/20 14:04:16.02 IyzEzHor.net
Ruby on Rails 6 の本を出している人の、入門書が出た。
Erlang/OTP 上で動く、Ruby風の関数型言語
Elixir実践ガイド、黒田努、2021/2/5
Ubuntu 20.04, Docker CE 19.03, Elixir 1.11
172:デフォルトの名無しさん
21/03/20 14:05:57.32 ct9wvzVp.net
>>165
非同期であることはそんなに大事なことではないのではないかな
smalltalkは九州大学病院のプロジェクトで大爆死してVBが
生き残ったわけなのでプログラミングにおいては同期の方が
わかりやすく使いやすかったことを歴史が証明してるんじゃなかろうかと
173:デフォルトの名無しさん
21/03/20 14:13:04.27 ct9wvzVp.net
非同期のメッセージングは普通のプログラミングではあまり必要とされない
非同期の処理が必要なときはPromiseオブジェクトを使うように
非同期のメッセージングさえも併呑して現代のオブジェクト指向は成り立ってると思う
アラン・ケイのオブジェクトは、オブジェクトの一形態なんだよ
174:デフォルトの名無しさん
21/03/20 14:16:57.35 R72307UF.net
>クリントンの「不適切な関係」
class チンポ{
super.不適切な関係;
}
クリントン
↑
チンポ
175:デフォルトの名無しさん
21/03/20 14:17:05.69 ct9wvzVp.net
そうして考えた場合にオブジェクトは何かと言われると
データと操作をガッチャンコしたプログラムということになろうかと
176:デフォルトの名無しさん
21/03/20 14:25:14.73 ct9wvzVp.net
オブジェクト指向の設計論でよく言われる貧血ドメインはダメだという
考え方は僕は嫌いで、データと操作を分けた方が良いこともある
JavaはRecordやパターンマッチなど関数型言語の機能を取り込んでいってる
オブジェクト指向+関数型がベストプラクティスだと思う
177:デフォルトの名無しさん
21/03/20 14:28:17.96 R72307UF.net
>>170
>そうして考えた場合にオブジェクトは何かと言われると
チンポは繋がっているけれども独立した主体存在である!
178:デフォルトの名無しさん
21/03/20 14:31:51.39 M+lSuHvS.net
>>167
ネットワークアクセスもファイルアクセスもユーザーアクセス(インターフェース)も全て本質的に同期ではなく非同期ですよ
それを無理やりに同期で書こうとすると
例えば低レイヤーではブロッキングのシステムコールとなってしまい時間のかかる相手に対してブロックされ待つ間は何も出来なくなってしまう
もちろんマルチスレッドという別の概念&実現例を使って誤魔化すことはできますがそれでもそのスレッドがブロックされて何も出来なくなってリソースを無駄にするのは事実です
実際にこの問題はいわゆる有名な『C10K問題』として無数のスレッドがリソースを無駄に消費してサーバーが破綻する現実問題を引き起こしました
そこでも解決方法として取られたプログラミング方法は通信などで無駄にブロックされるスレッドを生じさせないこと
すなわちノンブロッキングなシステムコールにより非同期なプログラミングを行なうことでC10K問題も解決されて現在我々が使う多くの通信サーバーはこの非同期な実装方法です
このように相手がいるオブジェクト指向においてはオブジェクト間での非同期なメッセージングが基本
計算だけするならともかく多くのアプリ/ソフトでは人間UIやファイルI/Oやネット通信といった同期では非常に待たされる処理が重要ですから
179:デフォルトの名無しさん
21/03/20 14:34:16.10 zfB5pfEe.net
オブジェクト指向とは関係のない話しても
180:デフォルトの名無しさん
21/03/20 14:39:47.24 paFdJ8yI.net
>>174
元々のオブジェクト指向のメッセージングは非同期という一番基本的なところ
もしこの話がオブジェクト指向と無関係と思える人はオブジェクト指向を理解していない
181:デフォルトの名無しさん
21/03/20 14:43:44.55 zfB5pfEe.net
>>175
現在の実装ではまるで関係ないのにそんなどうでもいい話してもな
逆に笑いものにされるわ(笑)
objectiveCでもやっとけよ(笑)
182:デフォルトの名無しさん
21/03/20 14:46:18.10 ct9wvzVp.net
>>173
それはIOの話ですよね
ドメインオブジェクトの関数を呼び出したりとか
メモリ上で行われる処理まで非同期にする必要はないので
オブジェクト指向にとって非同期はオブジェクトが持つことができる機能の一部だと思いました
183:デフォルトの名無しさん
21/03/20 14:49:51.05 ct9wvzVp.net
アラン・ケイは非同期なオブジェクトだけの世界を夢見てたんでしょうね
一方で同期的に処理するオブジェクトもあるので
アラン・ケイのオブジェクトはオブジェクト指向の一部でしかないと思うんですよね
同様に非同期なメッセージングもメッセージングの一部でしかなくて
同期的なメソッドコールもメッセージングとして良いと思います
184:デフォルトの名無しさん
21/03/20 14:50:49.82 ct9wvzVp.net
そのように考えるとJavaなどの言語がオブジェクト指向言語と
言われることとも整合します
185:デフォルトの名無しさん
21/03/20 14:58:01.68 ct9wvzVp.net
非同期IOでC10K問題が解決したのはそうでしょうけど
プログラミング言語のライブラリには非同期IOも同期IOもありますから
非同期がオブジェクトの本質だとは思わないです
オブジェクトは非同期に処理するものもあるし同期に処理するものもあるという
ことだと思います
アラン・ケイがオブジェクト指向という言葉を作って
そこから抽象化されていって今に至るんじゃないかと思います
186:デフォルトの名無しさん
21/03/20 15:02:10.13 M+lSuHvS.net
>>177
それは逆です
別の話ですが例えで出すとインターネットの基本であるIPパケットは非同期で
187:一方向ですが それを利用したTCP上のHTTPなどは戻り値がある両方向で(時間はかかれど)同期に見えるよう作られてます このように基本は非同期でその上に同期を実現はできます 逆は無理です ここが一番重要なところです オブジェクト指向のメッセージングも本質的には非同期で一方向です その上に擬似的にRPCもしくは関数といった同期呼び出しは可能です それらの概念があった上で実装としてはプログラミング言語によっては関数呼び出しとして実現してるといった状況です
188:デフォルトの名無しさん
21/03/20 15:09:23.37 ct9wvzVp.net
>>181
同期を実現してるというところが大事なところなんじゃないかと
必要もないのにそうしてるわけではないでしょう
同期な方がわかりやすくて使いやすいから同期にしてるわけで
同期が基本で非同期にしたいところは非同期の処理を書いてというのが
プログラミング言語の主流なわけですから、非同期にした方が効率が良いところもあるでしょうけど
そういうケースがあるからといって非同期がオブジェクト指向の本質ではないと思います
189:デフォルトの名無しさん
21/03/20 15:17:38.11 ct9wvzVp.net
通信を同期に行うか非同期に行うかは通信の詳細なので
オブジェクトという高次の概念にそういった詳細を入れるのは抽象度が合わないと思うんですよね
オブジェクトに同期、非同期の縛りがないならばIPパケットが非同期で流れてることとも
矛盾は生じないわけだから、問題ないと思うんですよね
190:デフォルトの名無しさん
21/03/20 15:17:46.32 ebrbGMYs.net
>>164
>そういう動的で型の弱い言語なら全く問題ないし、
そういう動的で型の弱い言語?
“そういう”て言われても何のこと言ってるの?
ある型を引数として受け取る関数を別の関数の引数や戻り値として受け渡しするのに
型が動的か静的かも関係ないければ型付けが弱いか強いかも関係なやろ
191:デフォルトの名無しさん
21/03/20 15:18:56.03 M+lSuHvS.net
>>182
話の流れを勘違いしてるようだが
「オブジェクト指向の本質はメッセージング」という流れだよ
その話と「そのメッセージングの基本は一方向非同期であり両方向同期はその上に作られる」という話をごっちゃにしてる
もちろんどちらも正しい
反論があるならば上記のどちらかの話なついて書いてほしい
一方で「オブジェクト指向の本質は非同期」という主張は誰もしていない
192:デフォルトの名無しさん
21/03/20 15:19:36.07 PoGobC7U.net
>>184
とりあえずcでpthreadをお前の思うように実装してみれば?まず無理だから。
193:デフォルトの名無しさん
21/03/20 15:23:16.73 R72307UF.net
>>174
オブジェクト指向は生まれた時から俺の股間に付いているが?
194:デフォルトの名無しさん
21/03/20 15:24:43.62 ebrbGMYs.net
>>165
>それは概念のレイヤーが異なることをあなたが理解できていないだけ
>例えばオブジェクト指向でのメッセージングとは関数呼び出しではないです
レイヤーが異なるかどうかは捉え方によるんだよ
オブジェクト指向の観点だけから関数呼び出しとは違うと言っても意味がないよ
「オブジェクト指向を使うメリットは何?」
195:デフォルトの名無しさん
21/03/20 15:25:44.75 R72307UF.net
トイレでオシッコを出したり止めたりだな!
>>185
>「オブジェクト指向の本質はメッセージング」という流れだよ
928 デフォルトの名無しさん 2018/11/21(水) 18:59:11.61 ID:8Yc2p7H1
>>922
>ナンチャッテメッセージングスタイルになったのは
チンポ.オシッコを出す
チンポ.オシッコを止める
さっきトイレでやってきた。
929 デフォルトの名無しさん 2018/11/21(水) 19:07:17.83 ID:8Yc2p7H1
>>915
>単なる動的なメソッド呼び出しをメッセージと称し、ただしコールするメソッドが見つからない場合だけメッセージを
>ハンドリングできる省コストなナンチャッテメッセージングスタイルに落ち着いた。
×
俺.オシッコを止める 俺.オシッコを出す
○
俺.チンポに力を入れる 俺.チンポから力を抜く
196:デフォルトの名無しさん
21/03/20 15:26:48.24 ct9wvzVp.net
>>185
実装の話をしてたんですね
オブジェクト指向の概念の話をしてると思ってました
197:デフォルトの名無しさん
21/03/20 15:28:21.44 ct9wvzVp.net
メッセージングを実装するときの話ですね、非同期の処理があれば同期の処理は実装できるぜってことですね
つまりオブジェクト指向と非同期は関係ないという僕の考えと同じですね
198:デフォルトの名無しさん
21/03/20 15:31:58.55 R72307UF.net
831 デフォルトの名無しさん sage 2018/11/11(日) 10:00:59.18 ID:Tyd11AGx
たとえば、CycはFredという名前の男がドナルドダックのモノマネをするという話が理解できなかった。
Cycの推論エンジンは、この話の中に矛盾を見つけた。Cycは人間には羽がないことは知っているが、
アヒルのように歩き、アヒルのように鳴くものはアヒルに違いないと考えた。
したがって、CycはFredがドナルドダックのモノマネしている間、
Fredはそれでも人間なのかと尋ねた。
925 デフォルトの名無しさん 2018/11/21(水) 18:36:07.42 ID:8Yc2p7H1
>>919
>そもそもアランケイの言う「実行中」は「起動中」であって
>「使用中」じゃないんだろう。マルチユーザーで誰かが使用している最中に
チンポがシコシコしている間、俺はそれでも俺なのかと尋ねた。
829 デフォルトの名無しさん 2018/11/11(日) 09:52:59.70 ID:y84pWKv0
(第1章 はじめに 2頁)
たとえば、CycはFredという名前の男が朝にひげをそるという話が理解できなかった。
Cycの推論エンジンは、この話の中に矛盾を見つけた。Cycは人間には電気の部品がないことは知っているが、
Fredが
199:電気カミソリを持っていたので、エンティティ「Fredがひげそり中(FredWhileShaving)」 には電気の部品が含まれていると考えた。したがって、CycはFredがひげをそっている間、 Fredはそれでも人間なのかと尋ねた。 『深層学習』 著者: Ian Goodfellow, イアングッドフェロー, Yoshua Bengio, ヨシュアベンジオ, Aaron Courville, アーロンカービル
200:デフォルトの名無しさん
21/03/20 15:33:56.91 paFdJ8yI.net
>>191
元々のオブジェクト指向のメッセージングは一方向だから相手から返事があるとしてもそれは非同期であっている
基本が非同期だからこそ同期も実現できる
基本が同期だったら非同期は実現できない
201:デフォルトの名無しさん
21/03/20 15:38:17.09 R72307UF.net
785 名無し三等兵 sage 2019/12/03(火) 08:03:27.78 ID:sujZBpWD
>>762
>「胸がドキドキする」は良いが、「チンポがシコシコする」はダメな理由を、50字以内で述べろ!
チンポにチンポ自身を扱く機能が備わっていないので自動詞は不適切だから(34文字)
胸(心臓)には鼓動する機能があるため自動詞の適用対象だが
チンポには勃起する機能はあっても自身を扱く機能はないので「チンポ『が』勃起する」は成立しても「チンポ『が』シコシコする」は成立しない
夢精した状況を「チンポ『が』シコシコした」と称したければ「チンポがエロい夢を見させ夢精した」=「脳ではなくチンポが思考を司りエロい夢を見させて夢精させた」という状況で可となる
脳でなくチンポで物を考える生物についてなら「チンポ『が』シコシコする」は成り立つ
如何にもだつお的じゃないか
202:デフォルトの名無しさん
21/03/20 15:50:32.64 ct9wvzVp.net
>>193
元々のというのはアラン・ケイのオブジェクト指向ではってことですね
アラン・ケイのオブジェクトが非同期にやりとりするのはわかりましたが
アラン・ケイのオブジェクト指向は現代のオブジェクト指向の概念からすると
特殊例の一つだと思っています
オブジェクト指向 -> (詳細化) -> アラン・ケイのオブジェクト指向 -> (詳細化) -> メッセージングは非同期
という話だと思っていて、あなたがいう本質とは実装のことを指してるんだと思ってます
僕は現代のプログラミング言語でも通用するより抽象的なオブジェクト指向という概念に興味があります
203:デフォルトの名無しさん
21/03/20 15:50:46.76 R72307UF.net
オブジェクト指向が一時的な流行語ではなく、ソフトウェア開発の世界に自然に浸透していったのは
それが人間の自然本来の考え方であり、根源的なものであり、普遍性がある考え方だからなのです。
河合 昭男 『オブジェクト指向と哲学』
URLリンク(www.sociomedia.co.jp)
チンポは自分とは繋がっているけれども独立している、それがオブジェクト指向なのである!
204:デフォルトの名無しさん
21/03/20 15:55:08.77 R72307UF.net
657 仕様書無しさん [sage] 2020/08/12(水) 11:11:53.67 ID:
>>655
ちんぽをシコシコするというのは主体が別に存在する(おそらく右手であろう)
しかし、ちんぼがシコシコするというのはちんぽさんが主体となって別の輪状、もしくは固定された箇所に向かって
往復運動をすることを言う
そしてそれはシコシコと形容される範囲内におけるような物体や部位である必要がある
つまり、日本語でいうところのチンポがシコシコするというのは文法上は正しい
しかしである
ちんぽは主語になってよいものかという問題が残る
ちんぽは思考できるのか、主体的な存在であるのかという疑問んである
我々はちんぽを自由自在に動かす事はできない
「勃つんだ!ジョー!!」などと呼びかけた人もいるであろう
ちんぽは人の付属物�
205:ナあると同時に1本の主体的な存在でもある 思考や意識といったものはないかもしれないし他動的な刺激により、また体調により変化を兆す。 つまり、チンポがシコシコするというのはチンポが主体的な存在かどうかが問われているのであり 勃起に至る過程からそれはまさに肯定されるべきなのである
206:デフォルトの名無しさん
21/03/20 16:05:13.64 paFdJ8yI.net
>>195
君はウェブブラウザを使ってる?
ブラウザ上で動いており現代に最も使われているプログラミング言語の一つであるJavaScriptはオブジェクト指向で非同期プログラミング
君はJavaScriptでプログラミングすらしたことがないですか?
207:デフォルトの名無しさん
21/03/20 16:11:47.63 b4o+GKeK.net
美しい女優のパンツにウン筋がついてたから、ウンコは美味みたいな論法だな。
208:デフォルトの名無しさん
21/03/20 16:12:19.29 ct9wvzVp.net
>>198
普段はJavaScriptは書かないですけどPromiseオブジェクトを使って非同期の処理ができることは知ってます
論点がよくわかりませんけど、何の話をしようとしてますか?
209:デフォルトの名無しさん
21/03/20 16:33:43.93 ct9wvzVp.net
var a = 1;
var b = a + 2;
のようなプログラムを書いたら同期的に処理されるので基本は同期ですよね
DOMのイベントなどは非同期に処理されますけど
処理が同期か非同期かはオブジェクト指向の本質ではないと僕は思っていて
僕がいう本質はそれがなければある物事が成り立たないことで
オブジェクト指向という概念に処理が同期か非同期かは必要ないですよね
オブジェクトという概念がまずあって
それの実装として非同期的な処理を行えるということだと思うんですよ
オブジェクトは、データと操作をガッチャンコしたもので
データと操作をガッチャンコすると何が嬉しいのっていうのがオブジェクト指向を
理解する上で最も重要なことだと思います
210:デフォルトの名無しさん
21/03/20 17:00:33.75 ct9wvzVp.net
>>1の感覚はバランスが取れてて
オブジェクトは使えるところで使えば良くて何でもかんでもオブジェクトにする必要がないのは
そのとおりだと思う
オブジェクト指向の本によっては何でもかんでもオブジェクトにするのが成功の秘訣ですと
書いてあるんだよね、僕もいろいろ本は読んだけどこればかりはウソだと思ったし
今でもその恨みは忘れていない
こういう住所が与えられたときに
京都府京都市山科区御陵天徳町
愛媛県伊予市市場
秋田県由利本荘市岩城勝手
『都道府県』と『市郡区』と『町村地区』に分けて処理しなければいけないことがあったんだけど
Prefectureオブジェクト、Cityオブジェクト、Townオブジェクトを作って大失敗した
全部文字列型で処理する方が速く正確に処理できた
211:デフォルトの名無しさん
21/03/20 17:04:57.36 paFdJ8yI.net
>>200
Promiseは全く関係ないです
Promiseはデザインパターンの一つなのでどの言語でも自分でプログラミングできます
ただし様々な仕様になりうるので最近は各言語が公式サポートするようになりブラウザ上のJavaScriptでも6年前にようやくPromiseオブジェクトが導入され始めました
したがって更新のないIEブラウザにはPromiseオブジェクトはありません
そしてJavaScriptは登場した25年前からオブジェクト指向かつ非同期プログラミングです
212:デフォルトの名無しさん
21/03/20 17:12:05.40 dAj+8+Ce.net
>>202
おまえが>>1じゃなかったんかい!
Prefectureオブジェクト、Cityオブジェクト、Townオブジェクトみたいのを作ったほうがいいかどうかは状況次第
結局のところデータと振る舞いを1つの単位の中にまとめたほうがいいかどうか
213:デフォルトの名無しさん
21/03/20 17:16:48.10 L/wa3g20.net
>>203
関係ない話をふっておいて、レスにはまともに答えず、さらに関係ない話を掘り下げる
めちゃくちゃタチが悪い
214:デフォルトの名無しさん
21/03/20 17:26:37.14 ct9wvzVp.net
>>204
僕は>>1じゃないですね、見返してみるとたしかに似てますけど
成りすますつもりもなく、たまたま似てしまっただけです
シンパシーは感じます
Prefectureオブジェクト、Cityオブジェクト、Townオブジェクトを作った方が良い状況は一生ないです、マジです
215:デフォルトの名無しさん
21/03/20 17:35:40.64 M+lSuHvS.net
>>205 こういう流れ 「オブジェクト指向を産み出したアラン・ケイによるオブジェクト指向は非同期なメッセージング」 ↓ 「現代のメジャーなオブジェクト指向の言語では全て同期プログラミングでしょ?」 ↓ 「現代のメジャーなオブジェクト指向の言語の一つであるJavaScriptは非同期プログラミング」
217:デフォルトの名無しさん
21/03/20 17:41:34.77 ct9wvzVp.net
「JavaScriptは非同期プログラミング」
クリスマスは七面鳥をこんがりみたいな、なかなか味のある表現だなって思いました
218:デフォルトの名無しさん
21/03/20 18:06:45.97 ebrbGMYs.net
>オブジェクト内部がどうなっているかは見えないし知る必要もないのがオブジェクト指向
と主張してるにも関わらず
オブジェクト指向を使うメリットを理解するためには
アラン・ケイの主張や実装手段の非同期メッセージングなど
内部がどうなっているかを知る必要があるみたいな話をされても困るよね
オブジェクト指向の価値を理解して実践できてるなら
相手が知る必要がない実装の詳細とインターフェースを分けて話せばいいのに
219:デフォルトの名無しさん
21/03/20 18:10:28.59 ct9wvzVp.net
>>203
非同期プログラミングは、非同期のプログラムを書くことだと思いますけど
25年前のJavaScriptの非同期のプログラムってDOMのイベントですか?
言語の機能ではなくてDOMの機能のような気がしますけどそもそもあれって非同期なんでしたっけ?
220:デフォルトの名無しさん
21/03/20 18:16:11.81 paFdJ8yI.net
>>209
非同期メッセージングは実装手段ではないよ
オブジェクト指向の本質的な概念であり様々な実装手段の上位にある
だから実装は各言語の特色に応じて実装しても構わないので各プログラミングスタイルは異なってくる
例えばJavaScriptではクロージャーによる継続渡しの非同期コールバックで帰りのメッセージングを受けているね
221:デフォルトの名無しさん
21/03/20 18:19:06.81 pSr3PkfH.net
ここにいる人達に同じ要望書を渡しても、全員がバラバラなクラス書きそうだな
222:デフォルトの名無しさん
21/03/20 18:20:47.46 ct9wvzVp.net
WindowオブジェクトのsetTimeoutとかかな?
非同期に処理するオブジェクトもあるよってだけな気がします
オブジェクトという概念があってWindowオブジェクトはその実装の一つでしかないので
非同期メッセージングがオブジェクト指向の本質とは言えないと思います
223:デフォルトの名無しさん
21/03/20 18:29:07.83 ct9wvzVp.net
Windowsで動くJScriptはWindowオブジェクト使えないですから
非同期がJavaScriptに必須というわけでもないですよね
JavaScriptはプロトタイプベースのオブジェクト指向言語でしかなくて
非同期の処理も書けるよってだけな気がします
アラン・ケイのオブジェクト指向と繋げるのは筋悪だと思います
224:デフォルトの名無しさん
21/03/20 18:38:59.94 M+lSuHvS.net
>>213
JavaScriptはブラウザ上で全て非同期プログラミングで動いている
例えばマウスをクリックしたりスマホでタップしたりなどあらゆるヒューマンインターフェースは非同期イベント
AJAXのAがAsynchronousであるように通信も非同期で行われる