■危険性
かつて偏差値の低い学校向けの情報処理系教科書において「カプセル化は大変すばらしいものであり絶対に使うように」と大体的に宣伝された。
一方、カリフォルニア大学バークレー校の有識者を中心とした「インターネットを作った人たち」は「階層化の有害性(RFC 3439)」として「カプセル化は絶対にやめろ」としている。
大雑把にいうと、教科書の上では素晴らしく、開発を始めた最初のうちは良いが、将来的な改修の際に隠蔽されたデータにアクセスできないと解決できない問題が出てきて、非常に高確率でデスマーチに陥るというのである。
オブジェクト指向の発案者であるアラン・ケイもコーディング規約(頭文字にアンダースコアを付けるなどの命名規則)で縛る程度にすることを推奨しており、アラン・ケイが関わったオブジェクト指向プログラミング言語にはどれも「private」などという概念はない。
ソースコードが存在し改修が可能であればカプセル化しても問題ない。ソースコードがあってもライセンス的に改修できない場合や、そもそもバイナリのライブラリしかない場合などは絶望的である。
https://monobook.org/wiki/%E3%82%AB%E3%83%97%E3%82%BB%E3%83%AB%E5%8C%96(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)
探検
カプセル化は愚かな考え
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2020/07/29(水) 17:17:58.13ID:u638n5uE291デフォルトの名無しさん
2020/08/21(金) 15:41:01.39ID:2S3OsUgZ292デフォルトの名無しさん
2020/08/21(金) 15:47:59.93ID:xkZp2iCS グローバル変数未使用で関数のみを使って状態にも対処できる!
オブジェクト指向なんて選択肢はない!
と言い張る子の霊圧が消えた...
オブジェクト指向なんて選択肢はない!
と言い張る子の霊圧が消えた...
293デフォルトの名無しさん
2020/08/21(金) 15:49:18.62ID:x4g5r5SE294デフォルトの名無しさん
2020/08/21(金) 15:50:37.63ID:xkZp2iCS そして日本語もまともに読めないらしい
295デフォルトの名無しさん
2020/08/21(金) 16:05:07.06ID:xkZp2iCS はよこいつにとどめさしてあげて
296デフォルトの名無しさん
2020/08/21(金) 16:24:00.01ID:2S3OsUgZ もう死んでね?w
ボタンを関数型で作れなかったんだから
ボタンを関数型で作れなかったんだから
297デフォルトの名無しさん
2020/08/21(金) 17:27:54.83ID:Tdq0GS4g >>296
お前作れんの?
お前作れんの?
298デフォルトの名無しさん
2020/08/21(金) 17:28:26.23ID:Tdq0GS4g 作れなかったら>>296の負けだから
299デフォルトの名無しさん
2020/08/21(金) 17:33:06.64ID:UrYJ9hGn >>271
たしかC++ってそういうもんだがw
しかも同じく嫌いだよw
整理できてない
で、なんでクラスだとそれが楽になるのかね
>さておき、実際にはほとんどデフォルトで使うから、「クラスなら面倒がない」と言いたいのかな
こういうことかね、て先回りして聞いてるんだが
たしかC++ってそういうもんだがw
しかも同じく嫌いだよw
整理できてない
で、なんでクラスだとそれが楽になるのかね
>さておき、実際にはほとんどデフォルトで使うから、「クラスなら面倒がない」と言いたいのかな
こういうことかね、て先回りして聞いてるんだが
300デフォルトの名無しさん
2020/08/21(金) 17:34:24.29ID:Q2DXCe4b Reduxみたいなやつな。
はよ作れ。
はよ作れ。
301デフォルトの名無しさん
2020/08/21(金) 17:49:58.82ID:xkZp2iCS ちなみに俺はGUIを実装したことある
302デフォルトの名無しさん
2020/08/21(金) 17:50:12.82ID:xkZp2iCS オブジェクト指向でな!
303デフォルトの名無しさん
2020/08/21(金) 17:54:10.24ID:xkZp2iCS 作れもしないくせにど素人が楯突くな
304デフォルトの名無しさん
2020/08/21(金) 17:57:19.01ID:UrYJ9hGn そんなにうじゃっとしてないか
https://bituse.info/winapi/5
//ボタンコントロール作成
hwnd_button=CreateWindowA("button","ボタン",WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
50,50,100,100,hwnd,(HMENU)CHILD_ID,hInstance,NULL);
親ウィンドウの準備がイラっとするのかな
https://bituse.info/winapi/5
//ボタンコントロール作成
hwnd_button=CreateWindowA("button","ボタン",WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
50,50,100,100,hwnd,(HMENU)CHILD_ID,hInstance,NULL);
親ウィンドウの準備がイラっとするのかな
305デフォルトの名無しさん
2020/08/21(金) 17:59:06.13ID:xkZp2iCS そんなお膳立てされたAPI使っていいって誰が言った?
306デフォルトの名無しさん
2020/08/21(金) 18:03:32.36ID:UrYJ9hGn ちなみに多くの人が、「クラスオブジェクト指向な記述で」を「オブジェクト指向で」と言ってるようだね
スタティック関数で動かすオブジェクト指向もあるので(C++、WinAPI)
略すなら「クラスで」と言った方がいい(これも不正確だが)
スタティック関数で動かすオブジェクト指向もあるので(C++、WinAPI)
略すなら「クラスで」と言った方がいい(これも不正確だが)
307デフォルトの名無しさん
2020/08/21(金) 18:22:59.95ID:iO1OXKqS windows apiはc言語でしょ
308デフォルトの名無しさん
2020/08/21(金) 20:03:28.77ID:Q2DXCe4b システムワイドでReduxのような仕組みを適用するのは無理だろうか?
309デフォルトの名無しさん
2020/08/21(金) 20:12:46.04ID:7ttzM/39 思うに、このスレに集まってる人らの
業務内容が違うんから議論がズレるんじゃないか?
Web系の場合メモリ上の
オブジェクトは一瞬で役目を終えるから
正直カプセル化とかいらない
node.jsやPHPでデータベースのへselect文投げると
連想配列オブジェクトの配列が帰ってくるから
つまりテーブルから動的にクラスののオブジェクトが
生成するから正直クラス定義もいらない
staticでなんの問題もないと思う。
状態管理は特有のセッションに保持するだろう。
でもゲーム系だとキャラのHPみたいなゲージ管理や
持ち物、装備品などいつまでもメモリ上に
居座って状態管理が必要だからオブジェクト指向
とカプセル化は大切。
業務内容が違うんから議論がズレるんじゃないか?
Web系の場合メモリ上の
オブジェクトは一瞬で役目を終えるから
正直カプセル化とかいらない
node.jsやPHPでデータベースのへselect文投げると
連想配列オブジェクトの配列が帰ってくるから
つまりテーブルから動的にクラスののオブジェクトが
生成するから正直クラス定義もいらない
staticでなんの問題もないと思う。
状態管理は特有のセッションに保持するだろう。
でもゲーム系だとキャラのHPみたいなゲージ管理や
持ち物、装備品などいつまでもメモリ上に
居座って状態管理が必要だからオブジェクト指向
とカプセル化は大切。
310デフォルトの名無しさん
2020/08/21(金) 20:23:39.45ID:Q2DXCe4b うーん。
職業プログラマが5chで情報交換してたら、ちょっとひどすぎない?
俺は自分の職業の板なんて行かない。
見たことはもちろんあるけど、素人が玄人のフリしてうんちく述べてるだけで、俺らが何か書き込むことは無いと思うよ。
それとも職業プログラマってそんなに程度低い?
素人とうんちく語り合うほど?
職業プログラマが5chで情報交換してたら、ちょっとひどすぎない?
俺は自分の職業の板なんて行かない。
見たことはもちろんあるけど、素人が玄人のフリしてうんちく述べてるだけで、俺らが何か書き込むことは無いと思うよ。
それとも職業プログラマってそんなに程度低い?
素人とうんちく語り合うほど?
311デフォルトの名無しさん
2020/08/21(金) 20:24:45.30ID:Q2DXCe4b プロが匿名掲示板で情報交換して得るものなんてないでしょ。
あったら怖いわw
あったら怖いわw
312デフォルトの名無しさん
2020/08/21(金) 20:34:27.65ID:x4g5r5SE >>309
常駐プログラム云々いっちゃうと、GCが優れてる!いや、C++のデストラクタの方が!
とか、そういう話にもなっちゃうからオブジェクト指向云々は関係ないような。
優秀なCプログラマならCでもリークしないプログラム書くでしょ。
static云々言ってるバカは、オブジェクト指向でもリーク起こすと思うわ。
常駐プログラム云々いっちゃうと、GCが優れてる!いや、C++のデストラクタの方が!
とか、そういう話にもなっちゃうからオブジェクト指向云々は関係ないような。
優秀なCプログラマならCでもリークしないプログラム書くでしょ。
static云々言ってるバカは、オブジェクト指向でもリーク起こすと思うわ。
313デフォルトの名無しさん
2020/08/21(金) 20:49:57.82ID:xkZp2iCS オブジェクトのライフサイクルとカプセル化がなんの関係あるんだ?
314デフォルトの名無しさん
2020/08/21(金) 20:50:21.42ID:xkZp2iCS 素人発言が目立ちだしたな
315デフォルトの名無しさん
2020/08/21(金) 20:51:44.98ID:xkZp2iCS 素人が玄人のフリしてうんちく述べてるのがうざいから消えてほしいとは思ってる
でも中にはプロっぽい人も紛れてる
でも中にはプロっぽい人も紛れてる
316デフォルトの名無しさん
2020/08/21(金) 20:55:22.67ID:Q2DXCe4b いや、無いない。
素人が適当なこと書いてるから訂正するか?
無い無い。
レベルが違いすぎるのよ。
それとも何か?
プログラマという職業に限ってそんなにレベルが低いか?
素人と言い争うほどか?
素人が適当なこと書いてるから訂正するか?
無い無い。
レベルが違いすぎるのよ。
それとも何か?
プログラマという職業に限ってそんなにレベルが低いか?
素人と言い争うほどか?
317デフォルトの名無しさん
2020/08/21(金) 20:57:07.65ID:xkZp2iCS 自分が素人って認めたんかpublic staticくん
318デフォルトの名無しさん
2020/08/21(金) 21:01:52.55ID:2S3OsUgZ >>304
誰もWinAPIの話とは言ってないが、それボタンはウインドウハンドルを返すのよ
つまりクラスのメンバ変数に状態を持ってインスタンスのポインタを返してるのと同じ
オブジェクト指向なんだよね
こういうのって本質的に複数の状態を持ってるわけだから
関数型で作るの大変でしょ?
誰もWinAPIの話とは言ってないが、それボタンはウインドウハンドルを返すのよ
つまりクラスのメンバ変数に状態を持ってインスタンスのポインタを返してるのと同じ
オブジェクト指向なんだよね
こういうのって本質的に複数の状態を持ってるわけだから
関数型で作るの大変でしょ?
319デフォルトの名無しさん
2020/08/21(金) 21:09:07.17ID:Q2DXCe4b Windows自体がオブジェクト指向だから、関数型と相性悪いのかもしれないな。
もしかすると、それが原因でWindowsが無くなるのかもしれないな。
もしかすると、それが原因でWindowsが無くなるのかもしれないな。
320デフォルトの名無しさん
2020/08/21(金) 21:13:17.11ID:xkZp2iCS 頭のネジ外れてんな
締め直してこい
締め直してこい
321デフォルトの名無しさん
2020/08/21(金) 21:15:49.53ID:2S3OsUgZ >>319
だからWindowsの話はしてないんだって
勝手にWin32の話にしておいてWindowsのせいにするなよ
なんでもいいから関数型で複数のプロパティを持つボタンのようなもの作ってみろって
一つの関数で複数のプロパティを操作することもある
そして将来の拡張性も考えないといけない
関数型でできるんか?
だからWindowsの話はしてないんだって
勝手にWin32の話にしておいてWindowsのせいにするなよ
なんでもいいから関数型で複数のプロパティを持つボタンのようなもの作ってみろって
一つの関数で複数のプロパティを操作することもある
そして将来の拡張性も考えないといけない
関数型でできるんか?
322デフォルトの名無しさん
2020/08/21(金) 21:17:53.68ID:Q2DXCe4b ホビーの奴と話し合うことなど、一ミリたりとも無いけどな。
レベルが全く違う。
プログラマに限っては、そんなにレベルが低いか?
アマチュアと話し合うことがあるのか?
レベルが全く違う。
プログラマに限っては、そんなにレベルが低いか?
アマチュアと話し合うことがあるのか?
323デフォルトの名無しさん
2020/08/21(金) 21:19:50.51ID:Q2DXCe4b >>321
ウェブ界では、状態をすべて外に追い出すのが流行ってるようだけどな。
ウェブ界では、状態をすべて外に追い出すのが流行ってるようだけどな。
324デフォルトの名無しさん
2020/08/21(金) 21:20:35.07ID:2S3OsUgZ 関数型っていうのは結局ガイドラインみたいなもんやろ
引数だけから戻り値が決定する関数はテストがしやすいから
可能であればそうするようにしましょう
実際には可能でない場合が多い
何十個の引数と専用の戻り値型でも作れば
理論上は可能かもしれないが使いづらくなる
引数だけから戻り値が決定する関数はテストがしやすいから
可能であればそうするようにしましょう
実際には可能でない場合が多い
何十個の引数と専用の戻り値型でも作れば
理論上は可能かもしれないが使いづらくなる
325デフォルトの名無しさん
2020/08/21(金) 21:21:00.45ID:2S3OsUgZ >>323
それって結局グローバル変数なんだけどねw
それって結局グローバル変数なんだけどねw
326デフォルトの名無しさん
2020/08/21(金) 21:21:03.27ID:yq0UM+AD あおりではなく
カプセル化をうまく説明してあるサイトを長い間探しているんだが
決定版はどこ?
カプセル化をうまく説明してあるサイトを長い間探しているんだが
決定版はどこ?
327デフォルトの名無しさん
2020/08/21(金) 21:21:51.79ID:Q2DXCe4b いや俺は状態をすべて外に追い出すというのが目からうろこよ。
最終的にどうなるのか知らんけど、これは突き詰めて結果を導いてほしいな。
最終的にどうなるのか知らんけど、これは突き詰めて結果を導いてほしいな。
328デフォルトの名無しさん
2020/08/21(金) 21:23:58.46ID:Q2DXCe4b 頑張ったけど駄目でしたという場合もあるだろうけどな。
その結果が納得できるところまで突き詰めてほしいな。
その結果が納得できるところまで突き詰めてほしいな。
329デフォルトの名無しさん
2020/08/21(金) 21:24:48.58ID:2S3OsUgZ ウェブでは状態を全て追い出いたために、巨大な「状態オブジェクト」ができて
複数の関数から、共有の状態オブジェクトを変更するようになってしまってる
引数から戻り値が決まる関数型とは別のものだよ
分離された状態オブジェクトを読み書きして
状態オブジェクトが変更される
複数の関数から、共有の状態オブジェクトを変更するようになってしまってる
引数から戻り値が決まる関数型とは別のものだよ
分離された状態オブジェクトを読み書きして
状態オブジェクトが変更される
330デフォルトの名無しさん
2020/08/21(金) 21:26:23.35ID:Q2DXCe4b >>329
状態を入力に取れば良いだけだろ。
状態を入力に取れば良いだけだろ。
331デフォルトの名無しさん
2020/08/21(金) 21:27:19.73ID:7UnAdk+W >>309
ゲームの種類にもよるけどアクションやシューティングの場合
基本は以下3ステップの無限ループでTODO管理アプリみたいなものと核は同じ
1. 入力を処理
2. 状態を更新
3. 出力を生成
ReactでもElmでもRxでも関数型のパラダイムなら
直前の状態と入力(ユーザー操作やタイマーや衝突など)から
新しいバージョンの状態を作ってそれをもとに出力を生成して画面を更新する
ゲームの種類にもよるけどアクションやシューティングの場合
基本は以下3ステップの無限ループでTODO管理アプリみたいなものと核は同じ
1. 入力を処理
2. 状態を更新
3. 出力を生成
ReactでもElmでもRxでも関数型のパラダイムなら
直前の状態と入力(ユーザー操作やタイマーや衝突など)から
新しいバージョンの状態を作ってそれをもとに出力を生成して画面を更新する
332デフォルトの名無しさん
2020/08/21(金) 21:28:09.14ID:2S3OsUgZ333デフォルトの名無しさん
2020/08/21(金) 21:29:07.77ID:xkZp2iCS アマチュアと話し合ってるんじゃなくて
アマチュアがボケ倒してるからつっこんでるんだろw
アマチュアがボケ倒してるからつっこんでるんだろw
334デフォルトの名無しさん
2020/08/21(金) 21:29:17.98ID:2S3OsUgZ Reactなんかでいう「状態」というのはオブジェクトのこと
335デフォルトの名無しさん
2020/08/21(金) 21:29:25.77ID:Q2DXCe4b336デフォルトの名無しさん
2020/08/21(金) 21:30:03.37ID:xkZp2iCS どんだけかまってほしいんだよ
337デフォルトの名無しさん
2020/08/21(金) 21:32:12.90ID:2S3OsUgZ もともとC++のクラスっていうのは構造体の拡張なんだよね
この構造外がReactなんかでいう状態のこと
関数(状態=構造体へのポインタ, 引数1, 引数2, ...)
というのが
構造体へのポインタ->関数(引数1, 引数2, ...)
に変わったのがC++
この2つは書き方が違うだけで本質的には同じもの
この構造外がReactなんかでいう状態のこと
関数(状態=構造体へのポインタ, 引数1, 引数2, ...)
というのが
構造体へのポインタ->関数(引数1, 引数2, ...)
に変わったのがC++
この2つは書き方が違うだけで本質的には同じもの
338デフォルトの名無しさん
2020/08/21(金) 21:32:44.45ID:Q2DXCe4b >>333
無い無い。
小学生がごっこ遊びしてるところにプロが違う違うと口挟むか?
自分の職業の板を見てもそんな感じよ。
突っ込もうなんて思わないし、実際突っ込んでるプロも見たことが無い。
素人同士でわいわい言い争ってる。
レベルが違いすぎんのよ。
輪に入るわけがない。
職業プログラマは素人の輪に入れるのか?
無い無い。
小学生がごっこ遊びしてるところにプロが違う違うと口挟むか?
自分の職業の板を見てもそんな感じよ。
突っ込もうなんて思わないし、実際突っ込んでるプロも見たことが無い。
素人同士でわいわい言い争ってる。
レベルが違いすぎんのよ。
輪に入るわけがない。
職業プログラマは素人の輪に入れるのか?
339デフォルトの名無しさん
2020/08/21(金) 21:33:20.00ID:2S3OsUgZ340デフォルトの名無しさん
2020/08/21(金) 21:35:42.95ID:Q2DXCe4b 考えてみろよ。
園児が模型の飛行機でブーンとやってるところに、職業パイロットが通りすがったら、違う違う対気速度が低下するからこうだなどと口をはさむか?
そのくらいのレベルの差があるわけよ。
それともなに?
職業プログラマは素人と大した変わらんとでも?
園児が模型の飛行機でブーンとやってるところに、職業パイロットが通りすがったら、違う違う対気速度が低下するからこうだなどと口をはさむか?
そのくらいのレベルの差があるわけよ。
それともなに?
職業プログラマは素人と大した変わらんとでも?
341デフォルトの名無しさん
2020/08/21(金) 21:37:03.29ID:Q2DXCe4b342デフォルトの名無しさん
2020/08/21(金) 21:41:12.88ID:2S3OsUgZ >>341
そりゃオブジェクト指向でもそれは可能なんだから当たり前やろw
そりゃオブジェクト指向でもそれは可能なんだから当たり前やろw
343デフォルトの名無しさん
2020/08/21(金) 21:43:15.03ID:e1ADUqIj >>151-152
ついにこのへんに言及したレスが出てきたな
状態がある問題をプログラミングする以上
どっちの方法がマシかを問うのが次に取るべき立場
状態は悪、関数型は神、みたいな話はもうみんな飽きたろ?
ついにこのへんに言及したレスが出てきたな
状態がある問題をプログラミングする以上
どっちの方法がマシかを問うのが次に取るべき立場
状態は悪、関数型は神、みたいな話はもうみんな飽きたろ?
344デフォルトの名無しさん
2020/08/21(金) 21:43:58.68ID:xkZp2iCS 俺は容赦なく模型飛行機で遊んでいる園児(お前)を空爆する
345デフォルトの名無しさん
2020/08/21(金) 21:45:13.13ID:Q2DXCe4b >>344
だからお前はアマチュアとバレてるわけよ。
だからお前はアマチュアとバレてるわけよ。
346デフォルトの名無しさん
2020/08/21(金) 21:47:12.41ID:Q2DXCe4b >>343
状態と計算を分離する結果、関数型の恩恵にあずかれるなら、分離する方向に行くのが正しいのではないか。
状態と計算を分離する結果、関数型の恩恵にあずかれるなら、分離する方向に行くのが正しいのではないか。
347デフォルトの名無しさん
2020/08/21(金) 21:47:34.18ID:2S3OsUgZ >>343
前から言ってるが、関数型は少数の値型と一つの戻り値で十分な関数としての要件を
満たしているときに便利なもので、そうでないものを無理やり対応させても不便なだけという話
関数型が優位なのは理論上の話で、理論上の話だと数十個の引数でもOKという扱いだから
前から言ってるが、関数型は少数の値型と一つの戻り値で十分な関数としての要件を
満たしているときに便利なもので、そうでないものを無理やり対応させても不便なだけという話
関数型が優位なのは理論上の話で、理論上の話だと数十個の引数でもOKという扱いだから
348デフォルトの名無しさん
2020/08/21(金) 21:48:43.03ID:u4nsg/nb349デフォルトの名無しさん
2020/08/21(金) 21:49:03.22ID:2S3OsUgZ >>346
> 状態と計算を分離する結果、関数型の恩恵にあずかれるなら、分離する方向に行くのが正しいのではないか。
「関数型の恩恵にあずかれるなら」
結局そこ
「関数型の恩恵にあずかれるなら」関数型
「関数型の恩恵にあずかれないなら」オブジェクト指向
適切なものを組み合わせて使うべき
「関数型の恩恵にあずかれない」例の一つがボタン
> 状態と計算を分離する結果、関数型の恩恵にあずかれるなら、分離する方向に行くのが正しいのではないか。
「関数型の恩恵にあずかれるなら」
結局そこ
「関数型の恩恵にあずかれるなら」関数型
「関数型の恩恵にあずかれないなら」オブジェクト指向
適切なものを組み合わせて使うべき
「関数型の恩恵にあずかれない」例の一つがボタン
350デフォルトの名無しさん
2020/08/21(金) 21:52:29.11ID:Q2DXCe4b ボタンこそ、恩恵にあずかれるのでは?
351デフォルトの名無しさん
2020/08/21(金) 21:52:48.76ID:2S3OsUgZ >>348
> オブジェクトの内部状態が変わるのと戻り値だけが変わるのとでは影響範囲が違うだろう。
今話をしてるのは
オブジェクトの内部状態 "すべて" を "一つの" 戻り値にしたとき
影響範囲はオブジェクトの内部状態を変えるのと同じことになってるという話をしてる
例えばボタンのスタイルは前景色、背景色、座標、フォント、余白などいろんなスタイルあるが
オブジェクト指向ではボタンのスタイルとしてオブジェクトの内部状態に組み込んでる
これらの前景色、背景色、座標、フォント、余白などをあわせてスタイルオブジェクトとして
関数からスタイルオブジェクトを返すからテストしやすい!といっても
何がテストしやすいのさっぱりわからない
> オブジェクトの内部状態が変わるのと戻り値だけが変わるのとでは影響範囲が違うだろう。
今話をしてるのは
オブジェクトの内部状態 "すべて" を "一つの" 戻り値にしたとき
影響範囲はオブジェクトの内部状態を変えるのと同じことになってるという話をしてる
例えばボタンのスタイルは前景色、背景色、座標、フォント、余白などいろんなスタイルあるが
オブジェクト指向ではボタンのスタイルとしてオブジェクトの内部状態に組み込んでる
これらの前景色、背景色、座標、フォント、余白などをあわせてスタイルオブジェクトとして
関数からスタイルオブジェクトを返すからテストしやすい!といっても
何がテストしやすいのさっぱりわからない
352デフォルトの名無しさん
2020/08/21(金) 21:54:15.43ID:2S3OsUgZ 色を変える関数を作るとするならば
スタイルオブジェクト = setColor(スタイルオブジェクト, 色)
これが関数型
この時、setColorがどの属性をいじるかなんてコードを見ないとわからない
スタイルオブジェクト = setColor(スタイルオブジェクト, 色)
これが関数型
この時、setColorがどの属性をいじるかなんてコードを見ないとわからない
353デフォルトの名無しさん
2020/08/21(金) 21:56:32.11ID:2S3OsUgZ ボタンのスタイルオブジェクトの場合、関数型ではこうなるのだろうか?
ボタン.スタイル = setColor(ボタン.スタイル, 色)
本質的に関数型に適合しないようなものを
無理やり関数型にしても意味ないよ
ボタン.スタイル = setColor(ボタン.スタイル, 色)
本質的に関数型に適合しないようなものを
無理やり関数型にしても意味ないよ
354デフォルトの名無しさん
2020/08/21(金) 21:59:18.77ID:xkZp2iCS どこに状態持っとくかで状態管理のしやすさが変わるんだよな
あるComponentでそれと関係のない状態変数が無造作に置かれてるよりは
必要な場所からのみアクセスできるようになってるほうがありがたい
必要ない場所でその状態変数について気にしなくていいから
あるComponentでそれと関係のない状態変数が無造作に置かれてるよりは
必要な場所からのみアクセスできるようになってるほうがありがたい
必要ない場所でその状態変数について気にしなくていいから
355デフォルトの名無しさん
2020/08/21(金) 22:01:46.81ID:2S3OsUgZ >>353はドットでつないでるから関数型には見えないw
実際はこうなのだろうか?
ボタン = setStyleColor(ボタン, 色)
ボタンには色以外の複数のスタイル属性や
ボタンの有効無効などの属性を持っている
つまりsetStyleColorという関数は
ボタンという連想配列データの一部分をいじる関数になる
それはオブジェクト指向でボタン.スタイル.setColor(色)の場合に
色というメンバ変数を書き換えてるのと大差ない
実際はこうなのだろうか?
ボタン = setStyleColor(ボタン, 色)
ボタンには色以外の複数のスタイル属性や
ボタンの有効無効などの属性を持っている
つまりsetStyleColorという関数は
ボタンという連想配列データの一部分をいじる関数になる
それはオブジェクト指向でボタン.スタイル.setColor(色)の場合に
色というメンバ変数を書き換えてるのと大差ない
356デフォルトの名無しさん
2020/08/21(金) 22:02:23.83ID:2S3OsUgZ >>354
そうやってできたのがオブジェクト指向やなw
そうやってできたのがオブジェクト指向やなw
357デフォルトの名無しさん
2020/08/21(金) 22:03:35.09ID:xkZp2iCS 結局そこに行き着くw
358デフォルトの名無しさん
2020/08/21(金) 22:08:32.02ID:Q2DXCe4b 関数型Windowsが出せなければ、Windowsは無くなるだろな。
359デフォルトの名無しさん
2020/08/21(金) 22:09:51.39ID:2S3OsUgZ360デフォルトの名無しさん
2020/08/21(金) 22:10:10.19ID:u4nsg/nb361デフォルトの名無しさん
2020/08/21(金) 22:11:42.64ID:2S3OsUgZ 単なる戻り値も永続的に存在するので同じ
362デフォルトの名無しさん
2020/08/21(金) 22:17:04.55ID:Q2DXCe4b 俺はこれはある意味何かが起きると思ってんだよ。
賢い奴ら数名は気が付いているようだが。
今頃オブジェクト最強とか言ってるようでは気づけんだろうけど。
賢い奴ら数名は気が付いているようだが。
今頃オブジェクト最強とか言ってるようでは気づけんだろうけど。
363デフォルトの名無しさん
2020/08/21(金) 22:18:31.62ID:2S3OsUgZ364デフォルトの名無しさん
2020/08/21(金) 22:22:11.20ID:Q2DXCe4b 30年かかると思うよ。
でもWindowsは3年でなくなるだろな。
Windowsが30年かけて地位を築いたように。
関数型ウィンドウも30年かけて地位を築く。
でもWindowsは3年でなくなるだろな。
Windowsが30年かけて地位を築いたように。
関数型ウィンドウも30年かけて地位を築く。
365デフォルトの名無しさん
2020/08/21(金) 22:23:47.42ID:2S3OsUgZ >>364
じゃあお前のスレはここでいいねw
Windows10は当初の2025年で終了でしょうね
https://medaka.5ch.net/test/read.cgi/os/1566090910/
じゃあお前のスレはここでいいねw
Windows10は当初の2025年で終了でしょうね
https://medaka.5ch.net/test/read.cgi/os/1566090910/
366デフォルトの名無しさん
2020/08/21(金) 22:25:37.21ID:2S3OsUgZ 向こうのスレに記録残してきたw
367デフォルトの名無しさん
2020/08/21(金) 22:25:41.16ID:Q2DXCe4b Microsoftは世界最大規模の研究所を持ってるから、Windows Fを出してくる可能性がある。
すでに待機中かもしれん。
すでに待機中かもしれん。
368デフォルトの名無しさん
2020/08/21(金) 22:26:40.34ID:Q2DXCe4b >>365
やはりアマチュアか。
やはりアマチュアか。
369デフォルトの名無しさん
2020/08/21(金) 22:26:55.36ID:2S3OsUgZ370デフォルトの名無しさん
2020/08/21(金) 22:29:14.10ID:Q2DXCe4b371デフォルトの名無しさん
2020/08/21(金) 22:30:16.45ID:Q2DXCe4b このスレにいくつかのアイデアが埋まっている。
気づいたものが次世代ウィンドウシステムを作るのだろう。
それが関数型ウィンドウだ。
気づいたものが次世代ウィンドウシステムを作るのだろう。
それが関数型ウィンドウだ。
372デフォルトの名無しさん
2020/08/21(金) 22:31:37.03ID:2S3OsUgZ >>370
ほらな、かってな予想を立てて、自分の予想に自信がないw
ほらな、かってな予想を立てて、自分の予想に自信がないw
373デフォルトの名無しさん
2020/08/21(金) 22:42:46.86ID:Xt87XuMs 全て不変にすれば、パフォーマンス以外の問題点は解決する
374デフォルトの名無しさん
2020/08/22(土) 00:29:04.18ID:H4y73psn >>318
だから言ってるように、オブジェクト指向は否定してない
オブジェクトの操作を、クラスで書くか、関数で書くかっていう記述方法の違いでしか言ってない
関数はスカラー関数に限ってない
流れがプロパティ保持の話ばかりだけど、その程度ではクラスにする必要ない
クラスの特徴はメソッドと継承
そのメソッドが外に出てるのがスタティック関数
書く場所が違うだけで、機能は同じ
Obj.Close
Close( Obj )
の違い
で、実は後者の方が生産性が高い、ということもあるかもしれんねと(体感)
かといってWinAPLみたいに長い名前の膨大なグローバル関数がずらーっとあると、生産性低い
そこは子クラスでなくても、名前空間で分類するだけでも整理が付くので、工夫次第
さらに外人の「動詞+目的語」じゃなく、「主語+動詞」という命名なら分類ごとに並ぶ
× OpenObj、CloseObj
〇 ObjOpn、ObjClose
(クラスのメソッドなら後者の並びになるが、なら関数名自体もそのセンスでいいじゃんていう)
継承は、いろんなイベントで共通の処理があるフォームのバージョン違いだと、ごっそりソースは減る
でもイベント関数自体を共通にして、中で条件分岐の方が見通しがいいかもしれない
(エクセルでシートイベントに対するブックイベントみたいな)
クラス継承は、継承の様子は掘って掘ってしないと調べがつかないので
だから言ってるように、オブジェクト指向は否定してない
オブジェクトの操作を、クラスで書くか、関数で書くかっていう記述方法の違いでしか言ってない
関数はスカラー関数に限ってない
流れがプロパティ保持の話ばかりだけど、その程度ではクラスにする必要ない
クラスの特徴はメソッドと継承
そのメソッドが外に出てるのがスタティック関数
書く場所が違うだけで、機能は同じ
Obj.Close
Close( Obj )
の違い
で、実は後者の方が生産性が高い、ということもあるかもしれんねと(体感)
かといってWinAPLみたいに長い名前の膨大なグローバル関数がずらーっとあると、生産性低い
そこは子クラスでなくても、名前空間で分類するだけでも整理が付くので、工夫次第
さらに外人の「動詞+目的語」じゃなく、「主語+動詞」という命名なら分類ごとに並ぶ
× OpenObj、CloseObj
〇 ObjOpn、ObjClose
(クラスのメソッドなら後者の並びになるが、なら関数名自体もそのセンスでいいじゃんていう)
継承は、いろんなイベントで共通の処理があるフォームのバージョン違いだと、ごっそりソースは減る
でもイベント関数自体を共通にして、中で条件分岐の方が見通しがいいかもしれない
(エクセルでシートイベントに対するブックイベントみたいな)
クラス継承は、継承の様子は掘って掘ってしないと調べがつかないので
375デフォルトの名無しさん
2020/08/22(土) 00:58:01.96ID:qyHD0ees >>374
>書く場所が違うだけで、機能は同じ
ポリモーフィズムの実現方法が異なるというのが本質的な違い
変更要求に対してコードの修正範囲が変わるのでどちらがいいのかというのは状況による
obj.close()はobjがclosableであればいい
close(obj)はcloseがobjの型をサポートしている必要がある
len([0,1,2,3]), len(“foo”)と[0,1,2].length, “foo”.lengthの違い
namespaceやmoduleのサポートが貧弱な言語だと前者は名前空間を汚染しやすい
>書く場所が違うだけで、機能は同じ
ポリモーフィズムの実現方法が異なるというのが本質的な違い
変更要求に対してコードの修正範囲が変わるのでどちらがいいのかというのは状況による
obj.close()はobjがclosableであればいい
close(obj)はcloseがobjの型をサポートしている必要がある
len([0,1,2,3]), len(“foo”)と[0,1,2].length, “foo”.lengthの違い
namespaceやmoduleのサポートが貧弱な言語だと前者は名前空間を汚染しやすい
376デフォルトの名無しさん
2020/08/22(土) 02:55:48.95ID:H4y73psn >>375
“foo”.length はまたややこしい話で
実装はスタティック関数ってこともある(C#の拡張関数)
これは間違いなく生産性高い
むしろそこからスタティック関数の方が生産性高いのではという発想
改めてメソッドを実装しなくても無限に連鎖できる
“foo”.length.text.length
関数は元々無限にネストできるが
length( text( length("foo") ) )
ただし括弧が見にくい、起点が後ろの方にある、組の引数が遠いとこに分かれる、ので眼精疲労が起きる
“foo”.length はまたややこしい話で
実装はスタティック関数ってこともある(C#の拡張関数)
これは間違いなく生産性高い
むしろそこからスタティック関数の方が生産性高いのではという発想
改めてメソッドを実装しなくても無限に連鎖できる
“foo”.length.text.length
関数は元々無限にネストできるが
length( text( length("foo") ) )
ただし括弧が見にくい、起点が後ろの方にある、組の引数が遠いとこに分かれる、ので眼精疲労が起きる
377デフォルトの名無しさん
2020/08/22(土) 03:06:31.41ID:T+/LMfcE > これは間違いなく生産性高い
それはどうやって計測したのか言ってみ
それはどうやって計測したのか言ってみ
378デフォルトの名無しさん
2020/08/22(土) 03:33:53.88ID:T+/LMfcE 実装がスタティック関数 → スタティック関数は生産性が高い
ならば
実装がスタティック関数ではない → スタティック関数は生産性が低い
ならば
実装がスタティック関数ではない → スタティック関数は生産性が低い
379デフォルトの名無しさん
2020/08/22(土) 05:08:17.36ID:TIWYvQ38 >>338
16年この業界にいる現役だよ。
むしろ、一般人ががプログラム言語なんかに興味持つ方が驚き。
現場で使えない派遣のプログラマーをアマグラマーって馬鹿にしてるけど、アマチュアさんいるんやね。プログラムは好き勝手に書いてた方が楽しいよ。
囲碁とか将棋のプロがアマを見る気持ちがこのスレで分かった気がする。
16年この業界にいる現役だよ。
むしろ、一般人ががプログラム言語なんかに興味持つ方が驚き。
現場で使えない派遣のプログラマーをアマグラマーって馬鹿にしてるけど、アマチュアさんいるんやね。プログラムは好き勝手に書いてた方が楽しいよ。
囲碁とか将棋のプロがアマを見る気持ちがこのスレで分かった気がする。
380デフォルトの名無しさん
2020/08/22(土) 05:09:53.91ID:Q5VkNyRi 若造でワロタ
381デフォルトの名無しさん
2020/08/22(土) 05:25:55.26ID:TIWYvQ38 >>376
おまえ、それ、マルチスレッド処理でも同じこと言えんの?
GUIの話してんのかわからんけど、異なる複数の処理がスタティック関数にアクセスすること考えてないだろ?
なんか、Cでmalloc使わない!って豪語して、スタックオーバーフロー起こしてどうしていいかわからなくなってたPG思い出したわ。
おまえ、それ、マルチスレッド処理でも同じこと言えんの?
GUIの話してんのかわからんけど、異なる複数の処理がスタティック関数にアクセスすること考えてないだろ?
なんか、Cでmalloc使わない!って豪語して、スタックオーバーフロー起こしてどうしていいかわからなくなってたPG思い出したわ。
382デフォルトの名無しさん
2020/08/22(土) 05:26:43.69ID:TIWYvQ38383デフォルトの名無しさん
2020/08/22(土) 05:30:08.48ID:YtG8IJDk そりゃ恥ずかしいと思わないと。
この板は文法やライブラリの使い方を取り扱う板。
プロが欲するのはお客様の情報で、ここにいるべきではないだろ。
この板は文法やライブラリの使い方を取り扱う板。
プロが欲するのはお客様の情報で、ここにいるべきではないだろ。
384デフォルトの名無しさん
2020/08/22(土) 05:54:29.25ID:H4y73psn >>381
某大手メーカー系が何年も直せなかったマルチスレッドで起こしてるバグを小一時間で直してあげたことあるよw
(マルチスレッドで確率的に起きる事故はステップ実行で探せないから、勘が必要)
関数がスタティックかどうかと、処理がぶつかるどうかは無関係
組み込み関数を想像すれば分かるだろw
各スレッドがその関数に渡すインスタンスが別ならぶつからない
同じインスタンスの必要があるならシリアル化するだけ
そっちこそマルチスレッドの扱いが曖昧っぽいなw
某大手メーカー系が何年も直せなかったマルチスレッドで起こしてるバグを小一時間で直してあげたことあるよw
(マルチスレッドで確率的に起きる事故はステップ実行で探せないから、勘が必要)
関数がスタティックかどうかと、処理がぶつかるどうかは無関係
組み込み関数を想像すれば分かるだろw
各スレッドがその関数に渡すインスタンスが別ならぶつからない
同じインスタンスの必要があるならシリアル化するだけ
そっちこそマルチスレッドの扱いが曖昧っぽいなw
385デフォルトの名無しさん
2020/08/22(土) 17:03:26.86ID:fmjqBEq5 >>381
16年間どこの業界で何してきてたの君
16年間どこの業界で何してきてたの君
386デフォルトの名無しさん
2020/08/22(土) 18:46:30.33ID:hdxSNQ+Y >“foo”.length はまたややこしい話で
>実装はスタティック関数ってこともある(C#の拡張関数)
>これは間違いなく生産性高い
>むしろそこからスタティック関数の方が生産性高いのではという発想
このあたり失笑なんだけど
こんなちっちゃい部分にクローズアップして生産性を語られても
>実装はスタティック関数ってこともある(C#の拡張関数)
>これは間違いなく生産性高い
>むしろそこからスタティック関数の方が生産性高いのではという発想
このあたり失笑なんだけど
こんなちっちゃい部分にクローズアップして生産性を語られても
387デフォルトの名無しさん
2020/08/22(土) 18:53:23.88ID:hdxSNQ+Y しかも"foo".length()が実装はスタティック関数なのは
C#が提供してる拡張方法がそうなってるだけで
データと処理を紐づけてるのはオブジェクト指向そのものじゃないか
C#が提供してる拡張方法がそうなってるだけで
データと処理を紐づけてるのはオブジェクト指向そのものじゃないか
388デフォルトの名無しさん
2020/08/23(日) 00:21:55.02ID:eNcX4Z1l オブジェクト指向とはオーバーロードである。
ってことも無いのでは?
ってことも無いのでは?
389デフォルトの名無しさん
2020/08/23(日) 01:11:38.44ID:Gvt1TzeD オブジェクト指向=○○ではなくて、
オブジェクト指向はいろんな課題を解決するための
テクニックを詰め込んだ言語
イコールで何かと結びつくものではない
結びついたらオブジェクト指向という必要がないだろ
オブジェクト指向はいろんな課題を解決するための
テクニックを詰め込んだ言語
イコールで何かと結びつくものではない
結びついたらオブジェクト指向という必要がないだろ
390デフォルトの名無しさん
2020/08/23(日) 01:13:25.91ID:HeDyBrKq >>389
ゴミクズ
ゴミクズ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【おこめ】「有能だったんじゃ」おこめ券で批判殺到の鈴木農水大臣…ネットでは前任の“進次郎再評価” ★2 [ぐれ★]
- 国民 居住目的でない住宅所有者に「空室税」課せる法案を提出 [少考さん★]
- 「暖房が使えない」「食費が高くて子どもの栄養が…」 物価高に苦しむ子育て世帯、政府に期待する支援は ★2 [蚤の市★]
- オイルマッサージ施術中20代女性にわいせつ行為か セラピストの男(30)を再逮捕 余罪複数とみて警視庁が捜査 [どどん★]
- アメリカ、入国時に「日本人を含む外国人観光客の最大5年分のSNS履歴の提出」義務化へ 過去10年間に使用のメールアドレスや電話番号等も★3 [Hitzeschleier★]
- 内閣支持、微減59.9% 5割超が補正予算評価 時事通信世論調査 [どどん★]
- TSMC、国内で4nmの先端半導体を製造へwwwwwwwwwww 高市さんいつもありがとう🥺 [784715804]
- 高市内閣の支持率、下落wwwwwwwwwww [834922174]
- 【安倍悲報】めっちゃ癌になる遺伝子を持った男性、精子をドナー提供し197人の子供を作る [884040186]
- 【悲報】音符アイコン大ピンチ「真実だからデマスレ立てても大丈夫やろw」→神戸地検「ダメです」立花逮捕w [732289945]
- 駐日米国大使「フォーブス誌が今年の“世界で最もパワフルな女性”に高市首相を選出。おめでとうございます!」 [834922174]
- 中年男性のオナニー死が激増、原因は不明 [422186189]
