2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

カプセル化は愚かな考え

1 :デフォルトの名無しさん:2020/07/29(水) 17:17:58 ID:u638n5uE.net
■危険性

かつて偏差値の低い学校向けの情報処理系教科書において「カプセル化は大変すばらしいものであり絶対に使うように」と大体的に宣伝された。

一方、カリフォルニア大学バークレー校の有識者を中心とした「インターネットを作った人たち」は「階層化の有害性(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)

2 :デフォルトの名無しさん:2020/07/29(水) 17:19:08 ID:u638n5uE.net
■ 実例

XNA(MonoGame)では標準で3Dモデルを手軽に扱えるModelクラスが用意されている。 1行で読み込み、1行で描画できる素晴らしいものだ。

ただしこのModelクラスを使うと頂点データは遮蔽されておりアクセスできない。 物理演算エンジンに食わせるのにどうしても頂点データが必要なのにだ。

世界中の誰もが同じ問題で悩んでいるようでstackoverflowに回避策が書いてあった。内部でGPUへ送信したときに使用したGPUにアクセスする関数ポインタは公開されているのでGetData関数でそのまま返してもらうトリッキーなコードでめでたく回避できた。

しかし、時は流れこの方法では動かない環境が登場した。iOSやAndroidだ。こいつらが採用するOpenGL ESはGPUとの通信が一方通行だ。そこで事前に3Dモデルから頂点データを抜き出し別ファイルに保存しておくという一段とトリッキーな方法で回避する。みごと1モデルのファイルが2個になりました。

さらに時は流れた。あるとき謎の不具合が発生。連日連夜のデバッグ作業。原因は片方のファイルの更新を忘れていただけでした。

カプセル化は恐ろしいね!!

https://github.com/MonoGame/MonoGame/blob/develop/MonoGame.Framework/Graphics/Model.cs

3 :デフォルトの名無しさん:2020/07/29(水) 17:20:04 ID:u638n5uE.net
そもそも>>1-2はテスト以前の問題です。

カプセル化■プライベートメソッドをテストする方法
https://mevius.5ch.net/test/read.cgi/tech/1593949666/

4 :デフォルトの名無しさん:2020/07/29(水) 17:21:10 ID:g7QDPcv8.net
仕様変更

それは雲の上で決まったことなので底辺社畜のITドカタにはどうすることもできない。
意見を言おうにも雲の上にいる奴らの顔すら知らない。
それこそが階層化で起きることだ。

オブジェクト指向云々ではない。

5 :デフォルトの名無しさん:2020/07/29(水) 17:21:26.28 ID:uKNn2k3N.net
シンプルなほうが解読しやすいよね
散逸して現物しか残ってない場合とか特に

6 :デフォルトの名無しさん:2020/07/29(水) 17:21:57.79 ID:Oydw6pfn.net
データベースに出し入れするだけの業務システムなんかは問題ない。
データベース上のデータなんてグローバル変数となんら変わらない。
クラスは構造体としてしか使わないから深い階層化も起きないし。

7 :デフォルトの名無しさん:2020/07/29(水) 17:22:26.03 ID:E8y/GFz4.net
>>1
C++が流行りだしたころに、これ言ったら変な目で見られたわ。
設計能力と未来を見通す能力がある人限定なんだよ。
大人数だと低い方に合わされるから、大人数プロジェクトには不向き。優秀な少数精鋭プロジェクトなら良いんだけどね。

8 :デフォルトの名無しさん:2020/07/29(水) 17:22:44.93 ID:QLZrrI/I.net
日本の場合はカプセル化されてようがいまいが基底クラスなんて弄ったら再テストしなきゃいけないから
同じ機能を持ったクラスを作るので意味が無い

9 :デフォルトの名無しさん:2020/07/29(水) 17:23:04.24 ID:1J9bjWQ3.net
昔作ったクラスを継承したり再利用したりなんて殆どない

データと関数数個だけで済むものを
無駄にクラス化して
ヘッダと実装にわけて無駄にコード追いにくくするのはあかん

10 :デフォルトの名無しさん:2020/07/29(水) 17:23:37 ID:1YfzsCBy.net
>>2
この実例は良くないよね
Modelクラスが何かにラップされてるならその元を探して改良すべきなのに、
それやらないでトリッキーな方法で回避するから余計面倒になってる

11 :デフォルトの名無しさん:2020/07/29(水) 17:24:14 ID:cI0GVoM3.net
>>10
その相手が壮大なオープンソースのフレームワークで
改変した修正パッチが開発チームから拒絶されたら死ぬ。

フォークしたとして誰がメンテナンスするんだよ

12 :デフォルトの名無しさん:2020/07/29(水) 17:24:30 ID:vg7Z3zSa.net
内部に状態を持つな

13 :デフォルトの名無しさん:2020/07/29(水) 17:24:41 ID:69CvhnsQ.net
オブジェクト指向で設計やるとしばしば手段が目的化してしまって不必要に複雑化する

14 :デフォルトの名無しさん:2020/07/29(水) 17:25:11 ID:GP5fGhio.net
想像を絶する馬鹿が想像を絶するカプセル化をしてしまうんだよなあ……

15 :デフォルトの名無しさん:2020/07/29(水) 17:25:39.61 ID:J53vwtRf.net
>>2
特定の事例はオブジェクト指向とかクラスが悪いわけじゃなくて
その設計が失敗してるだけですね

16 :デフォルトの名無しさん:2020/07/29(水) 17:27:31 ID:27/LTGZ1.net
>>15
XNAというマイクロソフトの天才たちが推し進めたプロジェクトでも失敗しているという事例だし、凡人だったらもっと悲惨なことになる。

17 :デフォルトの名無しさん:2020/07/29(水) 17:28:38 ID:Vqlry5vz.net
おっそろしーなぁ

18 :デフォルトの名無しさん:2020/07/29(水) 17:28:52 ID:uvei7tHN.net
オブジェクト思考って何?
誰か説明して

19 :デフォルトの名無しさん:2020/07/29(水) 17:29:11 ID:VfBPeHSy.net
オブジェクト原理主義者のコードを引き継ぐ事になった時の絶望感は異常

20 :デフォルトの名無しさん:2020/07/29(水) 17:29:25 ID:zsp+8xMC.net
「カプセル化は悪」「カプセル化はオブジェクト指向ではない」というのがやっと広まりだした。

21 :デフォルトの名無しさん:2020/07/29(水) 17:29:41 ID:zsp+8xMC.net
ようするに「仕様変更の恐ろしさは異常」

22 :デフォルトの名無しさん:2020/07/29(水) 17:29:50 ID:zsp+8xMC.net
未来予測できるが勝負所

23 :デフォルトの名無しさん:2020/07/29(水) 17:30:12.05 ID:i3uBuM+c.net
カプセル化は隠蔽体質ってことですね

24 :デフォルトの名無しさん:2020/07/29(水) 17:30:38.36 ID:pqaZ9+7I.net
>>15
XNA作ったマイクロソフトの超エリートたちですら設計ミスをするくらいオブジェクト指向は難しい。

25 :デフォルトの名無しさん:2020/07/29(水) 17:31:42.76 ID:fVVDTdgK.net
組み込みだと細分化し過ぎるんじゃね?
業務システムで細分化することはまずない。

26 :デフォルトの名無しさん:2020/07/29(水) 17:32:08.32 ID:IWquYLz9.net
業務システムだとDBいじくるだけだから深い階層構造に関わることはまずないだろ。
DBというグローバル変数をクラスという名の構造体にコピーして、編集して、書き戻すという単純作業の繰り返し。

27 :デフォルトの名無しさん:2020/07/29(水) 17:32:50.34 ID:a9P4jhh/.net
結論:privateにしたら、必ずgetterを用意しておきましょう。

28 :デフォルトの名無しさん:2020/07/29(水) 17:33:09.46 ID:FJzf6su8.net
小規模なら問題ない

29 :デフォルトの名無しさん:2020/07/29(水) 17:33:58.47 ID:I4F+YKTC.net
今一番勢いのある言語であるPythonは完全なプライベートじゃ無いんだよな

30 :デフォルトの名無しさん:2020/07/29(水) 17:35:05.46 ID:futNIK+y.net
RFC 3439では、インターネット構造に関して第3章の序文に"Layering Considered Harmful (階層化の有害性)"と題された節が有り、
「階層化」という考え方が概念的および構造的にさまざまな利点を持っているが、
実装面では層単位で同じような最適化が繰り返し発生することによる無駄な処理により効率的な実装を阻害し、複雑化を招くことがあり、
また低層部分のみに存在するデータにアクセスできない場面が発生するなど、

インターネット・プロトコルの目指す「単純化」という原則に反する

https://ja.m.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:UDP_encapsulation.svg

31 :デフォルトの名無しさん:2020/07/29(水) 17:36:12 ID:B9GAbJCb.net
メソッド全部staticにしてみろ
大半の問題が解決する

32 :デフォルトの名無しさん:2020/07/29(水) 17:37:47 ID:JqP21Wkx.net
> オブジェクト指向の発案者であるアラン・ケイもコーディング規約
> (頭文字にアンダースコアを付けるなどの命名規則)で縛る程度にすることを推奨しており、

それがprivateでは?

33 :デフォルトの名無しさん:2020/07/29(水) 23:07:46.03 ID:mVFqEUCw.net
>>32
名前でprivate感を出すだけにしておくって話だと

34 :デフォルトの名無しさん:2020/07/30(木) 03:10:51.58 ID:oWxKF5YB.net
>>33
それはprivateと何が違うの?

35 :デフォルトの名無しさん:2020/07/30(木) 09:06:15.43 ID:aMAEXQwY.net
カプセル化が悪いというより、カプセル化にこだわる奴が不適切なカプセル化を認めないところが問題。

36 :デフォルトの名無しさん:2020/07/30(木) 12:31:37.82 ID:9/rdfAc6.net
不適切なカプセル化とは?
アランケイも言っていた、privateはアンダースコアをつけるだけでいいと
つまりprivateでもアクセス可能にしておくのが良いということで
privateでもアクセスしていいということ

ならprivateにアクセスする手段がある言語であれば
アランケイの名前で明示するやり方よりも良い手段であるということだよ。

37 :デフォルトの名無しさん:2020/07/30(木) 14:37:49.17 ID:xP/66ZtT.net
>>36
pythonがこれなんだっけか

38 :デフォルトの名無しさん:2020/07/30(木) 15:15:07.17 ID:vOSCVC8M.net
>>2
それをラップするモデルを作るんだよ。場当たり的な対応をするからそんなことになる。

39 :デフォルトの名無しさん:2020/07/30(木) 18:15:34.88 ID:5sWEm17U.net
>>38
その例だと低層からのデータを捨て去ってるわけで、
ラップしても破棄されたデータは復元できない。

破棄しないように作り直すしかない。

40 :デフォルトの名無しさん:2020/07/30(木) 20:00:50 ID:DFjeaZjZ.net
>>37
実例たのむ

41 :デフォルトの名無しさん:2020/07/30(木) 23:26:02 ID:2DU34DEY.net
>>40
実例も糞もpythonにはprivateもpublicもない。
すべて暗黙でpublic

42 :デフォルトの名無しさん:2020/07/31(金) 00:07:26.39 ID:erqiTFyu.net
結局の所、privateはあってもいいけど
呼び出したらエラーになるんじゃなくて
ワーニングレベルで良かったって話よね?

テストコード以外から呼んだらワーニングにすればよかった。
そういう言語があると良いね。

43 :デフォルトの名無しさん:2020/07/31(金) 00:28:49.58 ID:yu65eNBx.net
キミ戦争を英語で何て言う?
え?ウォー?
warをウォーって読むのになんでwarnはワーンって読むのwwwウワーンってかwwww
バカじゃないのwwwww

44 :デフォルトの名無しさん:2020/07/31(金) 07:42:46.79 ID:0J+iX777.net
ばかはどんな言語機能を用意しても糞な変更したり、普通の変更がしずらい構造にしたりするんだから無意味。
言語機能の問題じゃない。

45 :デフォルトの名無しさん:2020/07/31(金) 09:29:19 ID:NLy05HSt.net
>>44
バカの問題と技術の問題は分けて考えましょう

46 :デフォルトの名無しさん:2020/07/31(金) 09:40:25.98 ID:ZHQKI64e.net
>>39
捨てられるデーターを保持しといて、それをカプセル化したらいいんではないの?

47 :デフォルトの名無しさん:2020/07/31(金) 09:41:42.18 ID:ZHQKI64e.net
リファクタリングで困りますよ

48 :デフォルトの名無しさん:2020/07/31(金) 12:51:05.01 ID:0J+iX777.net
>>45
いつでも簡単に分けられると思ってるのはバカですね。

49 :デフォルトの名無しさん:2020/07/31(金) 15:37:48 ID:KVBY0ZED.net
>>43
Rの発音はカタカナ表記できないから一概にどちらが正しいというものでもない

warのrの発音を無理やり表記するとウォァに近くこれを縮めてワーにしてるだけ
warningもウォーニングよりもゥォアーニングやゥワーニングのほうが実際の発音に近い
ワープやワランティも同じで日本語カタカナ表記として定着してる

「ワープww バカじゃないのw ウォープだろwww」って書いてるやつ見たら痛いよね?

50 :デフォルトの名無しさん:2020/07/31(金) 17:06:17 ID:k/mzlDiC.net
>>48
「いつでも簡単に分けられる」なんて言ってないですね
そう思ったのはお前ですね

51 :デフォルトの名無しさん:2020/07/31(金) 18:59:54.64 ID:XB3+uQxn.net
>>43みたいなバカって義務教育終えてないんじゃないの

52 :デフォルトの名無しさん:2020/07/31(金) 19:05:26.84 ID:Q7hjdc7P.net
>>49
英語音痴が恥の上塗りで口から出任せ乙www
warnの発音調べてみろよw
会社でそんな恥ずかしい低学歴芸披露して恥かかないようになw
You were warned(警告はした)wwwww
わーんwwwわーんどwwwwわーにんぐwwwwwハラ痛いwwwwww

53 :デフォルトの名無しさん:2020/07/31(金) 20:44:23.24 ID:jclw2i1e.net
うぉ〜ん

54 :デフォルトの名無しさん:2020/07/31(金) 20:48:02.23 ID:4XHNop85.net
平置きバカが発狂しちゃってんの?

55 :デフォルトの名無しさん:2020/07/31(金) 21:55:19.86 ID:yu65eNBx.net
ワープ
https://ja.m.wikipedia.org/wiki/%E3%83%AF%E3%83%BC%E3%83%97
英語の発音としては、「戦争」の「ウォー」と同じで、カタカナでは「ウォープ」とするのが近いが、日本の初期のSFで「ワープ」と書かれたうえ、『宇宙戦艦ヤマト』で一般にも広く「ワープ」で定着した。

ウォーニング
https://ja.m.wikipedia.org/wiki/%E3%82%A6%E3%82%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0
ウィキメディアの曖昧さ回避ページ
ウォーニング(英語: warning、英語発音: ['wɔːɹnɪŋ] )
・警告、警戒
・警報
・訓戒、戒め
・ウォーニング (曲) - グリーン・デイの2000年のシングル曲。
・ウォーニング (アルバム) - グリーン・デイの6thアルバム。
・ウォーニング (競走馬) - イギリスの競走馬。
・WARNING (いしだ壱成の曲) - いしだ壱成の1994年のシングル曲。
・WARNING (アルバム) - mochAのアルバム。

ワーニング
https://mevius.5ch.net/test/read.cgi/tech/1596010678/42
英語の発音としては、「戦争」の「ウォー」と同じで、カタカナでは「ウォーニング」とするのが近いが、日本の低学歴のレスで「ワーニング」と書かれたうえ、恥の上塗りで『warのrの発音を無理やり表記するとウォァに近くこれを縮めてワーにしてるだけ
warningもウォーニングよりもゥォアーニングやゥワーニングのほうが実際の発音に近い』と発音記号も読めない低脳を晒し、同調した低学歴に広く「ワーニング」で定着した。

56 :デフォルトの名無しさん:2020/07/31(金) 21:58:35.21 ID:k/mzlDiC.net
ビニールテープは間違い
バイニルテープ、バイニル袋が正しい

57 :デフォルトの名無しさん:2020/07/31(金) 22:46:03.90 ID:KVBY0ZED.net
>>55
カタカナ英語にこだわるのは自分が発音できない裏返し
カタカナに頼ってたらwalking(ウォーキング)とwarning(ウォーニング)のウォーを使い分けられないよ

学歴コンプこじらせるのもほどほどにね

58 :デフォルトの名無しさん:2020/07/31(金) 23:20:28.75 ID:28gnV4mI.net
カプセル化はいいとして
なんでもかんでもセッターゲッター作るバカの方が痛いわ

59 :デフォルトの名無しさん:2020/07/31(金) 23:25:53.90 ID:gJoK1c/t.net
セッターゲッターしか駄目な点を指摘できないんだね

60 :デフォルトの名無しさん:2020/07/31(金) 23:41:42.59 ID:C75u5On2.net
セッターとゲッターは存在自体がカプセル化を否定してるよな
カプセルに閉じ込めて入口と出口をイベントに絞ったんじゃねーのかよと
オブジェクト指向の目指すものがよくわからない
はじめの思想はともかく矛盾を承知で次の形態へ変化したと言うならそれでもいいとは思うけどね

ただ、言語作ってる奴さ
どんな設計書からどんなソースを作成したいのか?またそれをどうやってテストするのか?そろそろシームレスに真面目に考えるときじゃね?
最近追加で増える機能に思想を感じない
控えめに言って俺よりバカが便所で思い付いたようなアイデアを検証も無しに追加してる気がする

61 :デフォルトの名無しさん:2020/08/01(土) 01:27:20.73 ID:lS0R4ljb.net
カプセル化はデータと処理を分離させないためのものなのに、昔の説明をいまだに信じ込んで、データの参照もメソッド経由でないとカプセル化になっていないと言う30代、40代がいる。オラクル社のJavaの資格でも取り直した方がいい。一部は考え方が誤っていたから、いまは変な理想や思想は教えていない。むしろ、いまでは失敗だったとして否定されている部分も多い。

62 :デフォルトの名無しさん:2020/08/01(土) 01:27:30.68 ID:lS0R4ljb.net
テスト

63 :デフォルトの名無しさん:2020/08/01(土) 01:39:18.16 ID:JfG80/LC.net
不具合が起こる根本的な要因を理解していないとカプセル化の効果を得る事は出来ないと思う
解らない人はゲッターセッターを使ってやるほうが有る意味おかしくならないからそれはそれで良いと思う
効果が有るようにオブジェクト指向でプログラムするのは難しいから
中途半端にカプセルかするより従来みたいにしているほうが良い
解らない人は無理せずに行制御basicでもやったほうが良いかも
そんな感じ

64 :デフォルトの名無しさん:2020/08/01(土) 02:01:30.20 ID:5v4lbbZK.net
まあ、設計的にはイベントというかメッセージ以外のアクセスを許さないためのカプセル化だろ?
セッターとかゲッターで横紙破りしちゃったらカプセルにならねーじゃん
だからセッターとかゲッター、プロパティまたそれを宛てにした機能全般は初期の思想からは大分ズレてんなと思う
カプセルなってねぇじゃんと

俺自体はpublic、staticメソッドのみが正義なのでカプセル化なんてどうでもいいし意識することもないけど

65 :デフォルトの名無しさん:2020/08/01(土) 04:47:59.20 ID:hADlV/rS.net
カプセルはまとめるという意味だったのに、中に閉じ飲めるという意味だと誤解したんだよね。

66 :デフォルトの名無しさん:2020/08/01(土) 07:23:51.46 ID:tIIJOG0C.net
>>65
いや、誤解やないやろw

67 :デフォルトの名無しさん:2020/08/01(土) 08:03:35.26 ID:1RFWToyV.net
> セッターとかゲッターで横紙破りしちゃったらカプセルにならねーじゃん

ならねーとまでではないんだろうし
実際教科書ではむしろカプセル化のためにアクセッサ書かせるくらいなんじゃないのかな

でもね、そのアナタの感性はすごくいいと思う
俺もアクセッサ前提の設計はまちがってると思う
カプセル化として間違ってるというより
インタフェースとして型を決めていくのが前提で
内部の実装に引きずられてアクセッサつくっちゃうのは
ホンマまじで脳腐ってると思う

68 :デフォルトの名無しさん:2020/08/01(土) 08:21:19 ID:Lj3Owie1.net
まあ、思想的にはそうではあるけど
機能的に書かねぇとそもそも実装できないようなのあるから
ここ今更主張してもしょうがないんだけどね
でも、方向としておかしいのはおかしいのだと思う

69 :デフォルトの名無しさん:2020/08/01(土) 09:52:11.60 ID:cVk77Hxz.net
>>57
warn
[wˈɔɚn] (米国英語)
[wˈɔːn] (英国英語)
war
[wˈɔɚ] (米国英語)
[wˈɔː] (英国英語)

同じ発音 [ɔ] なのにwarnではア、warではオと使い分けてしまう低学歴www

70 :デフォルトの名無しさん:2020/08/01(土) 11:12:33 ID:eqNnh4Zw.net
>>60
> セッターとゲッターは存在自体がカプセル化を否定してるよな
> カプセルに閉じ込めて入口と出口をイベントに絞ったんじゃねーのかよと

お前が、すべてのprivateフィールドにセッターとゲッターを作り、
そのセッターとゲッターにははただ値を転送するだけにしてるってのはわかった
お前が間違ってる

71 :デフォルトの名無しさん:2020/08/01(土) 11:13:25 ID:eqNnh4Zw.net
>>64
セッターとゲッターは必要なものだけ作るんだよ?
ちょっと頭悪すぎないかw

72 :デフォルトの名無しさん:2020/08/01(土) 11:56:21 ID:pnZUr/MU.net
>>71
あ、いや、そもそも汎用的な出入り口を作っちゃ駄目っしょ
って話
だからどのプロパティがじゃなくて
イベントに対して引数からアクセスさせる以外の方法はそもそもカプセル化じゃないよねってだけ
別に原理主義者出ないのでそれで回らなくなったんじゃない?ってならそれも時代の流れだと思うよ俺は

73 :デフォルトの名無しさん:2020/08/01(土) 12:25:27.95 ID:biQ1QRTH.net
医者が出すのは処方箋
薬💊の調合は薬剤師
患者は中身を弄る必要無いってだけ

74 :デフォルトの名無しさん:2020/08/01(土) 12:32:19.22 ID:6s9LN6+z.net
>>72
> イベントに対して引数からアクセスさせる以外の方法はそもそもカプセル化じゃないよねってだけ
どういう理屈?w

引数があるメソッドはすべてカプセル化じゃないって言ってるの?
引数があるメソッドは、セッターとゲッターだけじゃないよ

75 :デフォルトの名無しさん:2020/08/01(土) 12:38:28.44 ID:6s9LN6+z.net
クラスの中のすべてのprivateフィールドは間接的に値を代入することが出来る

setFoo(int foo) {
 _foo=foo;
}
というセッターはカプセル化じゃないというのなら

setFooBar(int foo, int bar) {
 _foo=foo;
 _bar=bar;
}
というメソッドであればカプセル化になってるとでも言うつもりだろうか?

それとも名前が行けないとでも言うつもりだろうかね

initialize(int foo, int bar) {
 _foo=foo;
 _bar=bar;
}
これならOKとか?w

カプセル化の本質がわかってないから、セッターとゲッター(だけ)に問題があると思ってしまっている。
「問題」はそこではなく、その「問題」の影響がなければセッターやゲッターがだめな理由はない

76 :デフォルトの名無しさん:2020/08/01(土) 12:39:33.47 ID:+e9G5Uqi.net
>>74
え?ちょっとお前頭悪いから話したくないわw

77 :デフォルトの名無しさん:2020/08/01(土) 12:41:39.77 ID:6s9LN6+z.net
>>72のように
メソッド単位で「このメソッドはカプセル化じゃない」というような
言い方をしている人はカプセル化を理解してない

カプセル化はオブジェクト単位で考えるもの

何か(薬など)を包んでいる入れ物がカプセルなのであって
入れ物に出し入れする穴がカプセルなのではない

78 :デフォルトの名無しさん:2020/08/01(土) 12:41:58.50 ID:6s9LN6+z.net
>>76
反論できない人はさようなら

79 :デフォルトの名無しさん:2020/08/01(土) 12:45:35.11 ID:6s9LN6+z.net
カプセルにどれだけ穴(メソッド)が空いていようが、カプセルの意味がある

メソッド経由でしかアクセスできないことが保証されているからだ

80 :デフォルトの名無しさん:2020/08/01(土) 13:28:33.15 ID:biQ1QRTH.net
全面穴だらけのカプセルならもうそれ粉薬で良いんちゃうw

81 :デフォルトの名無しさん:2020/08/01(土) 14:04:15.81 ID:hADlV/rS.net
値の参照についてはメソッドでの値の取得にはしないともう結論は出ていて、いまは不毛なメソッドは作らない。

82 :デフォルトの名無しさん:2020/08/01(土) 14:05:07.09 ID:GK6vh4b0.net
>>80
はい。そういうことなんですがなにか?

「全面穴だらけ」
これこそがカプセル化の否定の条件だろ

間違い ゲッターセッターがある(穴がある) 故にカプセルじゃない
正しい 全面穴だらけ。故にカプセルじゃない

「アクセスしてはいけないもの」に「アクセスできる」なら
それはカプセル化を破壊していることになる。条件はこの2つでしかない。
この2つの条件を両方同時に満たしていないならカプセル化の破壊にはならない
ゲッターセッター関係ないんですよ

83 :デフォルトの名無しさん:2020/08/01(土) 14:12:41.19 ID:htNB4Xat.net
ハイ論破ッ!!!

84 :デフォルトの名無しさん:2020/08/01(土) 14:37:54.28 ID:mnCw/PCI.net
どんな値でも代入していいし取得してもいいのに
それをpublicにしたらカプセル化破壊とか
ゲッターセッターを作ったらカプセル化破壊とか
ちゃんちゃらおかしいわけですよ
インターフェースの定義が「どんな値でも代入していいし取得してもいい」なんだから
どんな値でも代入していいし取得してもいいんです。

85 :デフォルトの名無しさん:2020/08/01(土) 15:36:05.13 ID:zOYkYoe2.net
初期化の時点で定数扱いするとか、stateパターンみたいなことやるとか、
今時はセッター用意しない方向だわな。
テスト作成がめんどい時はセッターもありだと思ってるけど。

86 :デフォルトの名無しさん:2020/08/01(土) 20:23:54 ID:XDmb1Dov.net
たとえばこのようにカプセル化しておくと
https://paiza.io/projects/rmOOucjuBQy05OnLY5JozQ

使用する側には影響を与えずに値チェックができたりするじゃろう
https://paiza.io/projects/Gn51oPIH_D9tEJchmBEzXA

カプセル化ええじゃろう

87 :デフォルトの名無しさん:2020/08/01(土) 21:07:47.56 ID:rpF69vZ/.net
参照渡しで配列の中身が勝手に書き換えられるのも
気持ち悪いと言えば気持ち悪い
カプセル化ではあるけれども

88 :デフォルトの名無しさん:2020/08/02(日) 19:17:55.28 ID:4pM7vb20.net
こういう認識の齟齬を生みやすいこと自体が
オブジェクト指向の欠陥

まず分かりにくい思想があって
その思想の解釈が人によってバラバラで
コードで表現すると思想と辻褄が合わない部分が出てきて
その辻褄の帳尻を合わせるためにコーディング仕様追加して
コードがやたら汚くなっていく

そしてそもそもの思想を何も知らない初心者が
帳尻合わせの部分だけを真似して覚える
なんのためなのかも分からずに

じゃそもそもそんな思想要らなかったよね。
って言いたくなってくる。

89 :デフォルトの名無しさん:2020/08/02(日) 19:20:30.93 ID:Z93Ns0BP.net
じゃあOOPを捨てて何使ったらいいの?
もしくは、OOPを排除した人は具体的にどんな言語で書いてるの?

90 :デフォルトの名無しさん:2020/08/02(日) 19:23:45.26 ID:4pM7vb20.net
>>89
OOPで作られたライブラリをインストールして使うが
自分たちはOOPでコードを書かない
基本自作のコードは使い捨てるものとして
資産になるなんて考えは捨てる
構造化と純粋な関数型プログラミングの
考えに徹する

91 :デフォルトの名無しさん:2020/08/02(日) 19:34:03.04 ID:Z93Ns0BP.net
>>90
素人が手を出したら
OOPの恩恵に預かるよりもむしろ糞の山を量産するからね
これは素人が悪いとか
あるいは誰かの力量を疑うようなことを言いたいんじゃなくて
クラス設計インタフェース設計の根本的な難しさを問題にしてる

92 :デフォルトの名無しさん:2020/08/02(日) 20:53:18.23 ID:NyB2sc37.net
身の程を知らないと難しい

93 :デフォルトの名無しさん:2020/08/02(日) 21:27:34.31 ID:fjyVy3s+.net
>>86
エラーハンドリングが必要だから現実のコードだと影響与えるような気がしないでもない
それは良いとしてこのコードを見るとJavaって大変だなぁって感じる

構造体がない
0~255を表現できる標準の型がない
オプショナルパラメータがない

オブジェクト指向への不満度の高さと使ってる主な言語には相関関係ありそう

94 :デフォルトの名無しさん:2020/08/02(日) 21:28:38.27 ID:Sk2GUQvh.net
現実問題としてオブジェクト指向は避けられない
ライブラリがオブジェクト指向前提なってるから…
数十個のメソッド継承したデブっちょクラスを前に
わけわかんねーってなる(←ポンコツですみません)

95 :デフォルトの名無しさん:2020/08/02(日) 23:55:35 ID:hOZnEm6f.net
>>94
いや別にそこだけ回避すればええ話出し

96 :デフォルトの名無しさん:2020/08/03(月) 17:52:25 ID:dUkcl/VW.net
>>94
ぶっちゃけ使うのはいいがお前は作るな!が言いたいことだよ。

97 :デフォルトの名無しさん:2020/08/03(月) 23:08:05.87 ID:/fZxIKnK.net
このメソッドはこのクラスから継承と
書き出してみればわかると思うよ
たくさんのライブラリがあって
どのライブラリのどの関数を使うというのと
本質的に同じ問題だから

98 :デフォルトの名無しさん:2020/08/05(水) 02:50:58 ID:TuJoRFtb.net
>>88
んなの、オブジェクト指向以前の問題だろ。

99 :デフォルトの名無しさん:2020/08/06(木) 00:04:23.21 ID:BdJgq6RO.net
https://dotup.org/uploda/dotup.org2219661.jpg

100 :デフォルトの名無しさん:2020/08/06(木) 21:09:25 ID:8iK3jD+F.net
イミュータブルてできないか、常に考える。

101 :デフォルトの名無しさん:2020/08/08(土) 02:09:38.97 ID:8W1l6inb.net
https://video.twimg.com/ext_tw_video/1291368506907222017/pu/vid/1280x720/6_SSkXAWzEAP7jVq.mp4

102 :デフォルトの名無しさん:2020/08/08(土) 04:14:12.26 ID:2Yg/dKbJ.net
>>101はチンコ動画でした

103 :デフォルトの名無しさん:2020/08/08(土) 16:34:38.41 ID:DwZ6ejE/.net
staticおじさんを全面肯定するわけではないが擁護するわ
インスタンスを生成するタイプのクラスは
本当はかなり作るのが難しくて
高度な設計技術と計画性を要すると思う

そういう意味ではstaticおじさんは自分の力量を弁えていて
賢明だと思う
インスタンスを作るタイプのクラスをそうそう
乱発製造すべきではないと思う

104 :デフォルトの名無しさん:2020/08/08(土) 18:24:14 ID:mdJspHbv.net
>>103
自分の力量?
同僚の力量も考慮に入れろよ

105 :デフォルトの名無しさん:2020/08/08(土) 21:02:47 ID:bKK8FlY/.net
オブジェクト指向の考え
オブジェクト内に状態(フィールド)を持ったり
オブジェクト内の状態を内部で操作するような
処理は外部から勝手に操作されると
不具合の元だから隠蔽しないといけない
(でも操作したくなることもあるから
ゲッターやセッターを作る)
しかし、オブジェクト指向の一番の問題点は
隠蔽さえすれば、状態をもつたり、
内部状態を操作する行為自体は許容してるという点。


staticおじさんや純粋関数型プログラミングの考え方
そもそもオブジェクト内に状態を持つこと、
内部状態を操作すること自体がシステムがめんどくさくなったり
不具合の原因なんだから、そんなこと自体極力やめた
方がいい。という考え方。
クラスにやたらめったらフィールドを定義するから
それらの管理が大変になるんでしょ?
じゃあそもそも不必要にフィールドをたくさん定義するのは
やめようってこと。

106 :デフォルトの名無しさん:2020/08/08(土) 22:44:55 ID:OT1M6D83.net
1クラス1フィールドの原則な。

107 :デフォルトの名無しさん:2020/08/08(土) 23:32:20 ID:v8N9JR44.net
そのフィールドがhashmapのhashmap

108 :デフォルトの名無しさん:2020/08/09(日) 02:13:07.67 ID:m2kgymdR.net
>>105
結局グローバル変数の弊害と変わらないってわけだ
イベント駆動プログラムにはオブジェクト指向が向くとされてるから
現在主流の言語はほぼオブジェクト指向になってしまった
オブジェクト指向を避けてイベント駆動を実現できればなあ…

109 :デフォルトの名無しさん:2020/08/09(日) 08:47:05 ID:B3aIWQ09.net
>>103
static変数を使わないつくりにすることがstatic変数使う場合に比べて難しいというのは
あんまり納得しないがな。
確かに既存コードがどこで変更が起こってるのか全く分からん場合には仕方ない時もあるが。
>>108
同じようなところもあるがさすがに数百万行のコードになってくると、グローバルとメンバ変数じゃ
負担はだいぶ違うよ。

110 :デフォルトの名無しさん:2020/08/09(日) 08:53:36.03 ID:gwNRWHAq.net
staticなら何の問題も起きないのにバカがメンバに持つ

111 :デフォルトの名無しさん:2020/08/09(日) 08:54:09.82 ID:gwNRWHAq.net
あ、メソッドをpublic staticね

112 :デフォルトの名無しさん:2020/08/09(日) 09:00:00.94 ID:a7MhRm2l.net
カプセル化が不十分というだけ。
XNA は使い方を間違えている。

113 :デフォルトの名無しさん:2020/08/09(日) 09:20:34 ID:+PyqObml.net
そもそも処理を仕方がない理由もなく

入力→処理→出力

で入力と出力でチェックできない形にしてしまうのは悪手

114 :デフォルトの名無しさん:2020/08/09(日) 11:42:28.37 ID:e3BzhtQg.net
>>109
static変数なんてものももちろん使わない
staticおじさんへの批判が的外れになるのもこれが原因
「staticメソッドしか定義しない」

115 :デフォルトの名無しさん:2020/08/10(月) 02:59:21.35 ID:l5zwQhnu.net
アンサイクロペディアでやれ

116 :デフォルトの名無しさん:2020/08/11(火) 00:29:12 ID:jdRsH5YI.net
そもそもJavaScriptや
python使ってると
「あれ?クラスって必要なくね?」
って思うことが多いよ
(クラスというかフィールドやコンストラクタや
インスタンス化の必要性)

複数種のデータをセットで持ちたいなら
連想配列や辞書で持てばいい話で
クラス型なんて無名で言いじゃん。
JSONやローカルストレージやDBなど
格納方法には色々選択肢があるわけで
連想配列を引数に与えてやりとりすればいい
もちろんJavaだとMapのキーと値にも
型の宣言が必要で不便だから
JavaScriptやPyを使ったほうがいいね

117 :デフォルトの名無しさん:2020/08/11(火) 02:32:11.74 ID:Yoj/uuKw.net
Hooks API来てから皆Function Component。誰もClass Componentつかわなくなった@React

118 :デフォルトの名無しさん:2020/08/11(火) 10:11:56 ID:PBDRLAp9.net
privateとかpublicじゃなくて775とかパーミッション設定したい。

119 :デフォルトの名無しさん:2020/08/11(火) 10:25:23.64 ID:DyHWpKfR.net
Java.classファイルのパーミッション?

120 :デフォルトの名無しさん:2020/08/11(火) 12:40:18.13 ID:VjXaeZPI.net
>>114
もともとの議論知らんのならだまってりゃいいのに。
あきらかに元ネタはstatic変数を使ってシングルトンやることをマンセーしとるわ。
クラス使えばいいってもんじゃないが、結合時のバグを気にしすぎてテストしずらい構造つくってるってのが
この手の問題なわけよ。

121 :デフォルトの名無しさん:2020/08/11(火) 13:45:14.16 ID:zGJr4AFR.net
staticおじさんの逆襲
https://qiita.com/minebreaker/items/45ffaaa5e8729e16cfb4

122 :デフォルトの名無しさん:2020/08/11(火) 13:45:31.32 ID:zGJr4AFR.net
お前ら論破されてんじゃん

123 :デフォルトの名無しさん:2020/08/11(火) 17:56:32.40 ID:K2Zt4r5r.net
別に論破はされてないなぁ

要するにデータをどう持つかの話で
データが必要なものはオブジェクトに持たせたほうがいいし
データが必要ない(引数程度)ならstaticにすると言うだけの話
この「引数」はシンプルな値型に限る。

いやだってstaticにするために引数にしてデータを持たないオブジェクトにしたのに
データを持つオブジェクトを渡すとか本末転倒やろ?w

ようはデータが有るかどうかって話で、ないならstaticでいいけど
あるなら普通にオブジェクトにしましょうってだけ
データが有るのに頑張ってstaticにするとか無駄

124 :デフォルトの名無しさん:2020/08/11(火) 21:32:59 ID:nKBbqh2w.net
ケースバイケース、適材適所で設計すれば良いというだけの話なのにね。
教条主義、原理主義の奴らは必ず◯◯すべし!◯◯すべからず!と声高に叫んでるだけでまともな議論にはならないし、スルーするのが一番かと思われる。

125 :デフォルトの名無しさん:2020/08/12(水) 11:17:16 ID:lWgXenAf.net
>>123
お前が言ってるのはjavaのstaticの方な。
もともとのstaticおじさんはcの話をしてる。

126 :デフォルトの名無しさん:2020/08/12(水) 11:39:55 ID:IJKCUlyt.net
>>125
staticおじさんはjavaのstaticな

127 :デフォルトの名無しさん:2020/08/15(土) 22:05:11.13 ID:HPBTZIIs.net
スタティックでマルチスレッドはキツイぞ

128 :デフォルトの名無しさん:2020/08/15(土) 22:52:56 ID:pyil6gDT.net
マルチスレッドと関係ねえw

129 :デフォルトの名無しさん:2020/08/15(土) 23:11:43.21 ID:67hbQA2K.net
バカっていっつも関係ないこと紐付けるよな

130 :デフォルトの名無しさん:2020/08/15(土) 23:14:58.03 ID:Ob8esEzA.net
バカって関係あることを紐付けるバカも居るだろ

131 :デフォルトの名無しさん:2020/08/17(月) 08:38:19 ID:+Ou9g0gb.net
義経「馬も鹿も四脚」

132 :デフォルトの名無しさん:2020/08/17(月) 20:03:48.21 ID:aKA3oP69.net
>>119
chmodとかで設定するパーミッションな。
↓こんなイメージ。
664: // 基底クラスと派生クラスが読み書き可能。その他はよむことだけOK。
 int a;
640: // 基底クラス読み書き可能。派生クラス読み込み可能。その他はアクセス不能。
 int b;

133 :デフォルトの名無しさん:2020/08/18(火) 16:33:07.58 ID:b4wiyhNa.net
>>127
純粋関数は並列性が高い。
GPUシェーダーとかもろに純粋関数だし。

134 :デフォルトの名無しさん:2020/08/18(火) 22:19:04 ID:ZCkQ8Dn9.net
そもそもフィールドで持つ必要がある
データってこのブログで紹介されてるような
キャラHP,MPや貯水量、現金残高
みたいな上下限をもった数値の増減みたいな
ものだけだと思う。
境界値バグに関係しうるパラメータね。
こればっかりはstaticおじさんはやりにくいと思うわ。

カプセル化とはなにか?超わかりやすく解説します!
https://jpazamu.com/encapsulation/

あと考えられるのは 装備品みたいな
魔法使いジョブには剣を装備させてはいけないなど
特有の細かなルールがあるときはカプセル化が必要か。


それ以外の人名とかIDとかメモリ内で変動しないような値を
わざわざフィールドを用意する必要もなければ
privateで保護する必要もないしstaticおじさんで
なんの問題もないよね。
基本的に「演算」がないデータだから
連想配列やJSONでまとめてやり取りすればいいと思う。
あとバグを引き起こすのは値の変更で
あって参照って無害なのでは?

135 :デフォルトの名無しさん:2020/08/18(火) 22:22:09 ID:wUa7ucBR.net
バカじゃね
最近のソシャゲなんて全部DBのテーブルに入れなきゃいけないのにクラスの階層構造なんてテーブルに格納するときやりにくくて死ぬだろ

136 :デフォルトの名無しさん:2020/08/18(火) 22:30:21 ID:lDffCv4W.net
>>135
バカじゃね
最近のソシャゲなんてRDB使う方がレアなのにテーブルに格納する前提でコード書いてたらやりにくくて死ぬだろw

137 :デフォルトの名無しさん:2020/08/19(水) 01:42:01 ID:hBlUyArs.net
その界隈はスケールアウト重視でRDBよりさらにフラットなのが主流だからな。
それこそ学校で教えるデータベース正規化の真逆、「逆正規化こそ正義」という世界だし。

「正規化は愚かな考え」というスレを立てようぜ

138 :デフォルトの名無しさん:2020/08/19(水) 07:15:17 ID:OrygHj4v.net
最近気が付いたんだけど。
STLならどうなるか?と考えるのも、一つの分析手法だな。

139 :デフォルトの名無しさん:2020/08/19(水) 20:19:37 ID:1TMyVKY8.net
カプセル化が悪いんじゃなくて設計ミスってるだけじゃん
経験積んで未来予知の精度上げるしかないかな

140 :デフォルトの名無しさん:2020/08/19(水) 20:29:39 ID:1TMyVKY8.net
あとgetter、setterてカプセル化の思想とは関係なく、
便宜上の何かしらの理由(フレームワーク都合、トレースしやすい)で
慣用的に使われてるイメージある

141 :デフォルトの名無しさん:2020/08/19(水) 20:58:57 ID:bIJ+SeFj.net
その未来予知や
設計ミスで後悔する要素とか
フレームワーク依存要素を排除したいから
純粋関数型で余計な状態を持たずに
機械的にプログラミングする方が
いいと言ってるじゃないか。

142 :デフォルトの名無しさん:2020/08/19(水) 21:05:37 ID:1TMyVKY8.net
え、純粋関数型しばり?w

143 :デフォルトの名無しさん:2020/08/19(水) 21:09:50 ID:AMkDCrIJ.net
> 純粋関数型で余計な状態を持たずに
> 機械的にプログラミングする方が
> いいと言ってるじゃないか。

↑間違い

状態を持たないものは
純粋関数型で簡単に作れるが
世の中には状態を持っているものがたくさんある

純粋関数型は状態を持たないものは簡単に作れるが
状態を持つものは簡単に作れない

状態を排除することは不可能なので
結局状態を持つものを管理しやすい
オブジェクト指向を併用することになる

144 :デフォルトの名無しさん:2020/08/19(水) 21:11:56.89 ID:1TMyVKY8.net
純粋関数型のプログラム書いたことないけど
例えばカウンタ(内部に整数型データ保持)とかどういう実装になるんだろ?
って調べたら↓が見つかった
https://riptutorial.com/ja/haskell/example/25413/%E3%83%A2%E3%83%8A%E3%83%87%E3%82%A3%E3%83%83%E3%82%AF%E3%82%AB%E3%82%A6%E3%83%B3%E3%82%BF%E3%83%BC
結構面倒だな

145 :デフォルトの名無しさん:2020/08/19(水) 21:13:46 ID:1TMyVKY8.net
状態を多用する場面で純粋関数型は向かないってことかな?

146 :デフォルトの名無しさん:2020/08/19(水) 21:14:49 ID:AMkDCrIJ.net
純粋関数型言語を使えば状態を持たなくて良くなるわけじゃないんだよ

状態があるのとないのであれば、状態がない場合は
テストも簡単でシンプルに作れることが出来るだろう

しかし実際のシステムは状態があるんだよ

状態がないもの(つまり簡単なもの)を簡単に作れることを目指しても有り難みがない
状態があるもの(複雑なもの)を簡単に作れるもののほうがありがたい

147 :デフォルトの名無しさん:2020/08/19(水) 21:28:46.66 ID:1TMyVKY8.net
関数型言語のエッセンス(イミュータビリティ)を部分的に取り入れると
いい感じだけど全部置き換えたら破綻するね

148 :デフォルトの名無しさん:2020/08/19(水) 21:37:00.69 ID:bIJ+SeFj.net
状態を持つ必要が有るとしても
極力少なめに厳選すべき

データベースのカラムは
全部オブジェクトのフィールドとして保持して
コンストラクタ経由で引数をフィールドに移し替えて
全部ゲッターセッター用意して
見ればわかるメソッドに全部Javadoc記述して
とかどう考えても馬鹿でしょ

personオブジェクトの
人名、年齢、身長、体重
とかがプログラムが動いてる短い期間に目まぐるしく
変動するんですか?
オブジェクト指向の教科書見るとそうやって教えてるんだぜ?

149 :デフォルトの名無しさん:2020/08/19(水) 21:39:15.87 ID:meyBYzW3.net
>>147
別に破綻しないよ
状態が必要なら、状態ごと受け取って状態を含めた出力をするような関数を作る

データとそれを使う関数を1つの単位(クラス)にまとめたほうがいいのか
それともデータはデータ、関数は関数で分けて管理したほうがいいのかという違い
(関数型でも必要ならある種のデータ型とそれに密接に関係する関数群をモジュールとしてまとめる)

どちらかが常にいいというわけじゃなくトレードオフだから
それを理解してドメインに応じて使い分ければいい

150 :デフォルトの名無しさん:2020/08/19(水) 21:42:50 ID:AMkDCrIJ.net
> 状態が必要なら、状態ごと受け取って状態を含めた出力をするような関数を作る

んで、その最終形態が

メモリの内容を全部渡して、書き換え済みのメモリを返す
それを永続化する。

つまりはグローバル変数と同じ状態になるわけだ

151 :デフォルトの名無しさん:2020/08/19(水) 21:44:22 ID:AMkDCrIJ.net
結局書き方の違いでしか無いんだよね

状態 = 関数(状態)にするか
状態.関数() にするかという書き方が違うだけ

152 :デフォルトの名無しさん:2020/08/19(水) 21:47:30 ID:AMkDCrIJ.net
そして行き着く先は

状態 = 関数(状態)の形で
大規模なものを人間が統治管理できるのか?って話

人間がってのが重要な所
理論的には出来る。コンピュータにも出来る。

だが人間がそれをやれなきゃ意味がない
簡単な足し算でも、それが何万個もあれば人間はミスをする

153 :デフォルトの名無しさん:2020/08/19(水) 21:49:27 ID:meyBYzW3.net
>>150
プログラミングモデルの話だからそういうのは関係ないんよね

言語が保証してくれるレイヤーから上でプログラムをどういうスタイルで書くかという話だから

>>144の最初の例ならCounterが状態
incはCounterとIntを受け取ってCounterを返す関数

inc :: Counter -> Int -> Counter
inc (MkCounter c) n = MkCounter (c + n)

154 :デフォルトの名無しさん:2020/08/19(水) 21:55:27.63 ID:1TMyVKY8.net
結局外から整数渡すのか

155 :デフォルトの名無しさん:2020/08/19(水) 22:08:23.64 ID:1TMyVKY8.net
>>152
>状態 = 関数(状態)の形で
>大規模なものを人間が統治管理できるのか?って話
オブジェクト指向のコア概念メッセージングがなぜ提唱されたか察するに
このあたり関係ありそう

156 :デフォルトの名無しさん:2020/08/19(水) 22:33:08 ID:yE6ycl6R.net
昔のC言語は状態なんか持たなくても動いてたよw
前提が間違ってるじゃん

157 :デフォルトの名無しさん:2020/08/19(水) 22:34:39 ID:1TMyVKY8.net
>ソースコードが存在し改修が可能であればカプセル化しても問題ない。
>ソースコードがあってもライセンス的に改修できない場合や、そもそもバイナリのライブラリしかない場合などは絶望的である。
ライブラリが担うべき要件でもないし他の探すか自分で作るか改修依頼するかしかないでしょ
なんでカプセル化が悪の権化みたいなことになってんのw

158 :デフォルトの名無しさん:2020/08/19(水) 22:35:36 ID:OrygHj4v.net
純粋でなければ、利点として宣伝されるものの多くが実現されなくなるからな。
もっとも、純粋であっても、現時点では実現されていないのだが。

159 :デフォルトの名無しさん:2020/08/19(水) 22:36:45.75 ID:1TMyVKY8.net
C言語とかバリバリ状態変数使ってるでしょ

160 :デフォルトの名無しさん:2020/08/19(水) 22:39:11.93 ID:1TMyVKY8.net
その状態の管理方法がオブジェクト指向でも純粋関数型でもないだけで

161 :デフォルトの名無しさん:2020/08/19(水) 22:56:55.74 ID:c5gUks+P.net
>>140
getter/setterはJavaBeansの仕様だからね
JavaBeansはGUIツールでポトペタで操作できるようにするためのもの
GUIのツールでプロパティ書き換えたりイベントリスナー書いたりするのが目的
だからJavaBeansの情報を取得するBeanInfoにはgetIconメソッドがあったりする

JavaBeansではプロパティに値をセットしたら値が変更されましたイベントを発火したりするから
getter/setter経由でアクセスすることは理に適っていた

それがいつの間にかオブジェクト指向のプログラムではgetter/setterを書くんだーになってしまった
JavaBeansのようなコンポネントの作法はライブラリ内部で使われるようなオブジェクトには必要ない
デスクトップアプリの開発が衰退したおかげかいまはだいぶその認識が広まってる

162 :デフォルトの名無しさん:2020/08/19(水) 23:05:18 ID:EjRsdu11.net
単にそのクラスに必要な操作のみ公開するという思想は良いと思うが
頭の硬いやつがいると理解出来ないからか文句を言ってくる

163 :デフォルトの名無しさん:2020/08/19(水) 23:25:59 ID:yE6ycl6R.net
>>162
結局入力と出力を
メンバ変数に入力や出力を内包されると単純に動作が把握し難いだけで
全くメリットがない
内包されたデータを見ないで修正してもいいのか?
お前の会社はそれでいいとは言わないだろう
だとしたら入力や出力を隠蔽するのは誰にとっても迷惑にしかならない

164 :デフォルトの名無しさん:2020/08/19(水) 23:41:19 ID:1TMyVKY8.net
そのクラスの責務(入力に対する出力の仕様)がわかっていれば
具体的な内部の動きを把握する必要がそもそもない
把握する必要ないから楽

165 :デフォルトの名無しさん:2020/08/19(水) 23:48:14 ID:AMkDCrIJ.net
>>163
システムの規模が大きくなった時
どう管理するかって話だからその理屈は全く関係ないんだよな

内包されたデータを見ないで修正してもいいか?
オブジェクト指向であれば、それがある単位で分割されているから
そこだけを見ればいい

166 :デフォルトの名無しさん:2020/08/20(木) 00:39:03.89 ID:Ha0cLvqC.net
>>164
お前が作ったクラスの動作がおかしいときどうすればいいの?
中身みんでええの?

167 :デフォルトの名無しさん:2020/08/20(木) 00:40:27.24 ID:Ha0cLvqC.net
>>165
お前が作ったクラスの動作がおかしいときどうすればいいの?

168 :デフォルトの名無しさん:2020/08/20(木) 00:43:54.72 ID:x6SYzBHh.net
>>167
テストコード書いて直すだけ

169 :デフォルトの名無しさん:2020/08/20(木) 00:44:38.43 ID:x6SYzBHh.net
>>166
お前が作った関数の動作がおかしいときどうすればいいの?
中身みんでええの?

どちらも中身を見るなら
管理しやすいオブジェクト指向の方が良い

170 :デフォルトの名無しさん:2020/08/20(木) 00:50:30 ID:ecAQ66Lj.net
適切な単位で分割されてると修正も楽
それこそ「そのクラスの責務(入力に対する出力の仕様)」だけ
満たすことを考えればいい

171 :デフォルトの名無しさん:2020/08/20(木) 00:53:30 ID:ecAQ66Lj.net
内部で関係する変数とかを閉じててくれないと
そのクラスに値を設定する部分を見て回らないといけなくなる

172 :デフォルトの名無しさん:2020/08/20(木) 00:58:14 ID:nfJPehze.net
クラスに値を設定する部分は、そのクラスを見るだけでいい
引数として独立していると、その引数を使ってる部分を全部調べなければいけなくなる
戻り値が変わると、その戻り値を使ってる部分全てだ

173 :デフォルトの名無しさん:2020/08/20(木) 00:59:25 ID:Ha0cLvqC.net
>>170
中身を見るとどうやらメンバ変数statesの値がnoneにならないとメソッドの処理が最後まで流れない処理になってるみたいなんだけど
こういうときどうしたらいいの?

174 :デフォルトの名無しさん:2020/08/20(木) 01:09:23.46 ID:Eg0HvHSQ.net
一クラス一メソッドの原則な。

175 :デフォルトの名無しさん:2020/08/20(木) 01:10:33.08 ID:ecAQ66Lj.net
メンバ変数statesがprivateだったらそのクラス内に閉じた問題だから
単純にそのクラスのメソッド内でstatesとnoneを比較するようなとこを
洗い出せばいいんじゃないの?

176 :デフォルトの名無しさん:2020/08/20(木) 01:20:32.10 ID:qjxJt4Hn.net
>>170
その責務って奴が言葉だけは聞こえがいいが
現実論として関わるプログラマや関係者の間で
認識がバラバラになる最大のポイントなんだわ。
プログラムやコンピュータを計算機として見てないんだわ。
「この処理を果たしてこの場所で書いていいものか…」
なんて余計な事で頭を悩ます最大の原因なんだわ。

それよりももっとシンプルに、
任意の場所に、受け取った引数を使って
結果を返す関数を作って関数に要求させた演算を
投げて結果だけ受け取った方が生産的だよね?
関数を連鎖的に組み合わせればどんな複雑な演算も
成し遂げることが出来る。

177 :デフォルトの名無しさん:2020/08/20(木) 01:27:25.42 ID:ecAQ66Lj.net
それはチーム編成とか統制の問題では
レベルが低い集団だと統制とれずク○の山が積み上がって
収集つかなくなるんだろうな

178 :デフォルトの名無しさん:2020/08/20(木) 01:32:57.21 ID:Ha0cLvqC.net
>>175
privateメンバ変数は見なくていいって話じゃなかったん?

179 :デフォルトの名無しさん:2020/08/20(木) 01:36:01.29 ID:ecAQ66Lj.net
クラス外からは気にしなくていいけどクラスを修正するときは見なきゃだめでしょ
privateなら見るべき範囲はクラス内って絞ることができる

180 :デフォルトの名無しさん:2020/08/20(木) 01:44:41.21 ID:Ha0cLvqC.net
>>179
じゃあ、結局見るんじゃんバーカ

181 :デフォルトの名無しさん:2020/08/20(木) 01:48:58.64 ID:ecAQ66Lj.net


182 :デフォルトの名無しさん:2020/08/20(木) 01:52:46.09 ID:ecAQ66Lj.net
まあ理解できもしないのに真似事みたいなことするのが一番迷惑だから
やりたいようにやりなさい

183 :デフォルトの名無しさん:2020/08/20(木) 02:03:10.41 ID:ecAQ66Lj.net
そもそも>>173の質問がバカ丸出しなのに自覚ないとか

184 :デフォルトの名無しさん:2020/08/20(木) 07:00:11.09 ID:X1nNk3cj.net
>>161
プロパティって、どういうプロパティが存在するかを実行時にインスペクトできるというのも重要な性質だな。
BeansはJavaのリフレクションでそれを実現していたけど、単なるgette/setterではそういうのも忘れられている。

185 :デフォルトの名無しさん:2020/08/20(木) 07:31:18.16 ID:Ha0cLvqC.net
>>179
さらにpublic staticならグローバル変数不使用なら引数と戻り値(入力と出力)の確認だけじゃん
絶対こっちのがクラスより優秀だろ

186 :デフォルトの名無しさん:2020/08/20(木) 07:59:40.26 ID:i/J3/2zN.net
>>176
それって、ちゃんと考えて設計するの面倒だから全部グローバル変数でやります、生産性高いよね!といってるのと変わらないじゃないかw

187 :デフォルトの名無しさん:2020/08/20(木) 08:08:01.01 ID:Ha0cLvqC.net
>>186
比較するものがグローバル変数使用のソースしか無くなった?

188 :デフォルトの名無しさん:2020/08/20(木) 08:33:25.88 ID:ecAQ66Lj.net
>>185
> さらにpublic staticならグローバル変数不使用なら
どうせその前提だとそれはクラス内部に状態を持つ必要ない単なるUtilityクラス
内のメソッドだろ?
状態をどうやって管理するかの話だったのに、状態を排除した前提を持ち出してきて
何を認めさせたいの?反論することだけが目的?

189 :デフォルトの名無しさん:2020/08/20(木) 08:38:25 ID:Ha0cLvqC.net
>>188
だからグローバル変数不使用のc言語と同じでいいよ
っていうかこれで完璧なんだよ

190 :デフォルトの名無しさん:2020/08/20(木) 10:46:21.05 ID:ecAQ66Lj.net
御託はいいからお前の書いたコード見てみたいわ
グローバル変数を使わないCコードが書けるんだろ?(失笑)
C言語ならグローバル変数はある程度使うべきなんだけどね

191 :デフォルトの名無しさん:2020/08/20(木) 11:25:12.56 ID:Ha0cLvqC.net
>>190
普通に書きゃいいじゃんw
作れないものがあったと思ってるの?wバカ?w

192 :デフォルトの名無しさん:2020/08/20(木) 12:04:17 ID:ecAQ66Lj.net
下手なりにかけるとは思うよ下手なりに
ただその方法じゃスケールしない
ここまで言ってわからないならもう相手にしてあげないよ

193 :デフォルトの名無しさん:2020/08/20(木) 12:06:02.57 ID:ecAQ66Lj.net
小さいプログラムしか書いたことないんだろうな

194 :デフォルトの名無しさん:2020/08/20(木) 12:14:50.55 ID:KHHtBj+5.net
結局大規模なものをカプセル化が有効なんだよね

195 :デフォルトの名無しさん:2020/08/20(木) 12:49:31.45 ID:tyNv301J.net
Information Hidingの意味でカプセル化と言ってるやつと
データとメソッドをオブジェクトという構造にひとまとめにすることをカプセル化と言ってるやつがいるから
話が噛み合ってない

前者はオブジェクト指向に関係なくあらゆるプログラミングスタイルで使われてる
規模に関係して重要になってくるのはInformation Hidingの意味でのカプセル化
CでもHaskellでもそれが重要なのは変わらない

後者はオブジェクト指向特有のもの
これはソフトウェアの規模の大小とは関係なく
どういう方向の変化に対して高い柔軟性を確保しておくのがいいかという問題なので
デメリットも考慮しつつ状況に合わせて採用するかどうか判断すべきもの

196 :デフォルトの名無しさん:2020/08/20(木) 15:12:12.70 ID:ecAQ66Lj.net
Ha0cLvqC ← こいつに関しては
・情報隠蔽
・関心事の局所化
いずれの意味も明らかに理解できていないし、日本語も通じてないから話が噛み合わない

197 :デフォルトの名無しさん:2020/08/20(木) 16:03:22.57 ID:BhReT/u1.net
お前らのコミュニケーション能力が劣ってるだけだろ
良い大人なんだからきちんと伝わる語彙と文法、論理を示せばわかりあえる
コミュ障のお前らに俺が手本を見せてやるよ

198 :デフォルトの名無しさん:2020/08/20(木) 16:04:17.28 ID:BhReT/u1.net
>>191
>>193
ちんちんが痒いときってキンカン塗っとけば良いですよね?

199 :デフォルトの名無しさん:2020/08/20(木) 17:54:53.75 ID:Ha0cLvqC.net
>>196
でも君、メリット説明できないよね?

200 :デフォルトの名無しさん:2020/08/20(木) 18:34:06 ID:ecAQ66Lj.net
お前みたいな低能に説明してる時間が無駄

201 :デフォルトの名無しさん:2020/08/20(木) 19:27:08.80 ID:Ha0cLvqC.net
>>200
まあ、この世のどのサイトも説明できてないから気にするなよw

ってアレ?ということはメリットない技術なんじゃない?w

202 :デフォルトの名無しさん:2020/08/20(木) 19:33:32.26 ID:ecAQ66Lj.net
技術的な関心があってこんなスレ開いてるんだろ?
にしては程度が低すぎる

203 :デフォルトの名無しさん:2020/08/20(木) 19:47:35.12 ID:ecAQ66Lj.net
お前が今まで信じてきたものやってきたことって意味あったの?

204 :デフォルトの名無しさん:2020/08/20(木) 20:05:43 ID:Ha0cLvqC.net
>>203
お前の方が顕著だろ
じゃあ、お前と主張が同じサイト持ってきてメリット説明してみろよw

205 :デフォルトの名無しさん:2020/08/20(木) 20:24:20 ID:ecAQ66Lj.net
オブジェクト指向の理解にすら躓いてるやつと話しても時間の無駄だから

206 :デフォルトの名無しさん:2020/08/20(木) 21:49:30.63 ID:Ha0cLvqC.net
>>205
ああ、そう?w
メリットを解説できてるサイトないけどなw

207 :デフォルトの名無しさん:2020/08/20(木) 21:56:57 ID:/mEcLGEB.net
理解できる脳みそがない

208 :デフォルトの名無しさん:2020/08/20(木) 22:16:51.32 ID:KHHtBj+5.net
>>206
メリットを解説してるけど、解説になってないというサイトを言える?
お前が一番まともだと思うやつね。全てまともじゃないというのなら其の中でいちばん有名なやつ
それをお前が言えるのであれば、俺らはそれがちゃんとした解説になってることを証明するのは簡単だろう

209 :デフォルトの名無しさん:2020/08/20(木) 22:22:56 ID:Ha0cLvqC.net
>>208
いいや、ゴミクズ過ぎて違いなんかわからん
オブジェクト指向が役に立つって書いてあるだけで俺にとっては全く役にたたんサイトなわけだし

210 :デフォルトの名無しさん:2020/08/20(木) 22:30:26 ID:qjxJt4Hn.net
もう「お前はオブジェクト指向理解してない」
に結論づけるのやめにしようや。
かならずそこに収束するやん。
理解してない奴が悪いんじゃなくて
理解し難い概念であるオブジェクト指向が悪い
っていう発想の転換してんだよ

211 :デフォルトの名無しさん:2020/08/20(木) 22:31:11 ID:Ha0cLvqC.net
だいたい言ってることキチガイじゃん
オブジェクトの中身は隠蔽されてるから気にしなくていいって言った口で
修正するときはprivateのメンバ変数使用箇所全部確認して直せって言ってるんだぜ
なんのために誰に隠蔽してたんだよw
完全に無意味じゃんwww

こんなくだらないことやってるんだったら、public staticにするべきだぜ

212 :デフォルトの名無しさん:2020/08/20(木) 22:34:10 ID:Eg0HvHSQ.net
いや、一クラス一メソッドの原則に基づいて設計すればじゅうぶん可能。

213 :デフォルトの名無しさん:2020/08/20(木) 22:47:07.87 ID:KHHtBj+5.net
>>209
そういう言い訳をしたからお前の説得力ゼロになったな
結局何も知らなずにろくなサイトも見ずに
ダメダメ言ってるだけだろ?

言い返したいなら、ちゃんと解説してるサイトの一つでも上げてみろって

214 :デフォルトの名無しさん:2020/08/20(木) 22:48:24.29 ID:KHHtBj+5.net
>>211
> オブジェクトの中身は隠蔽されてるから気にしなくていいって言った口で
それは使う場合の話。つまり開発(担当)者とは別の人は気にしなくていい

> 修正するときはprivateのメンバ変数使用箇所全部確認して直せって言ってるんだぜ
それは開発(担当)者の話

この区別ぐらい基本だろ

215 :デフォルトの名無しさん:2020/08/20(木) 23:03:27.99 ID:Ha0cLvqC.net
>>214
じゃあ、開発者しか触らない環境でクラスなんて作るのは無駄ってことでおk?
お前、完全にそう言っちゃってるよな?
それでええの?

216 :デフォルトの名無しさん:2020/08/20(木) 23:06:06.44 ID:KHHtBj+5.net
>>215
お前バカなのか?

例え自分が開発したとしても、それを使うだけの場合と開発する場合は違うだろ

苦労して頑張ってライブラリを作りました。
そのライブラリを使うときに、ライブラリのソースコードの中身を見ないと使い方がわかりません

ってそれ、作り方しっぱいしてるじゃん
お前はいちいち中身を見てるんだろうけどな

217 :デフォルトの名無しさん:2020/08/20(木) 23:07:26.61 ID:Ha0cLvqC.net
>>213
ハイハイ、オブジェクト指向にメリットが全く無いのはメリットを感じ取れないやつがバカなんだよなw
誰も証明できないけどなw
バーカ、一生やってろw

218 :デフォルトの名無しさん:2020/08/20(木) 23:08:01.72 ID:qjxJt4Hn.net
そのライブラリ使ってるブログ検索して
真似するだけなんだよなぁ…
隠蔽要らんやん

219 :デフォルトの名無しさん:2020/08/20(木) 23:11:15.07 ID:Ha0cLvqC.net
>>216
は?何言ってるのか意味不明

220 :デフォルトの名無しさん:2020/08/20(木) 23:13:58.87 ID:KHHtBj+5.net
>>219
隠蔽っていうのはな、コードとデータの両方の話なんだよ
ライブラリにすれば中身を見なくてすむようになるんだよ
知ってるか?

221 :デフォルトの名無しさん:2020/08/20(木) 23:15:04.46 ID:KHHtBj+5.net
頑張ってクイックソートライブラリを作ったおっさんは
これでもうソートするときに中身をいちいち見なくてすむ
って安堵してるわけだ

222 :デフォルトの名無しさん:2020/08/20(木) 23:19:44.69 ID:Ha0cLvqC.net
>>220
でも修正するとき見ないと駄目なんだろw
つまり作る側と使う側が完全に別れてないときにクラスなんか無意味なんじゃない?

223 :デフォルトの名無しさん:2020/08/20(木) 23:44:16.56 ID:KHHtBj+5.net
>>222
オブジェクト指向
 修正しない時・・・見ない(メリット)
 修正する時・・・見る

関数型言語
 修正しない時・・・見る(デメリット)
 修正する時・・・見る

理解できますか?

224 :デフォルトの名無しさん:2020/08/20(木) 23:44:18.70 ID:iNatz9V0.net
>>195
そうそう。
カプセル化っていってんだから、オブジェクト指向は関係ない。
Cの構造体でメンバを公開したり非公開にしたりできまっせ。っていうだけのこと。
それを愚かというなら、その程度の規模のプログラムしか作ったことないんだろうね。

225 :デフォルトの名無しさん:2020/08/20(木) 23:45:52.06 ID:iNatz9V0.net
>>222
君って情報学部の学生さんなんか?
それとも、どっかの会社でプログラマーの卵として頑張ってるのか?
プログラミングの素養が絶望的にないから、他の道で頑張ったほうがいいよ。

226 :デフォルトの名無しさん:2020/08/20(木) 23:47:57.89 ID:Ha0cLvqC.net
>>223
は?意味不明
なんの説明してんの?
恥の上塗りの達人かよ

227 :デフォルトの名無しさん:2020/08/20(木) 23:49:20.30 ID:KHHtBj+5.net
>>226
理解できないのか?

お前が○○の時に限っては見るんだから意味ないっていうから
○○の時だけ見るというのはメリットだって言ってるんだが

228 :デフォルトの名無しさん:2020/08/20(木) 23:50:03.69 ID:Ha0cLvqC.net
>>225
年収1000万超えのカリスマプログラマー(笑)さんですか?

229 :デフォルトの名無しさん:2020/08/20(木) 23:50:43.49 ID:KHHtBj+5.net
> でも修正するとき見ないと駄目なんだろw

でも風呂に入るとき脱がないと駄目なんだろw
じゃあ服着る意味がないじゃない

といっているのがお前

230 :デフォルトの名無しさん:2020/08/20(木) 23:55:00.24 ID:iNatz9V0.net
>>227
「見る」の一人称が机に座ってモニターを眺めてる>>226なんだよ。
こんなのが新卒として入ってきたら、速攻で人事に掛け合ってクビにさせる。

231 :デフォルトの名無しさん:2020/08/20(木) 23:56:32.42 ID:iNatz9V0.net
>>230
机じゃなくて椅子か。

232 :デフォルトの名無しさん:2020/08/20(木) 23:59:10.43 ID:Ha0cLvqC.net
>>227
は?だってメンバ変数ってクラス内限定のグローバル変数だぜ
このときのお前のメソッドは俺の作るpublic staticなメソッドより遥かに
不出来で読みにくい
どこでいきなり編集されるかわからないメンバ変数に気を配りながら
メソッドを読むのはぶっちゃけ苦痛でしかない

233 :デフォルトの名無しさん:2020/08/21(金) 00:00:02.85 ID:f3uMOLT8.net
>>229
たとえ話が適切であることを証明してからしろよそういうのは

234 :デフォルトの名無しさん:2020/08/21(金) 00:01:33.82 ID:x4g5r5SE.net
> メンバ変数がクラス内限定のグローバル変数
その通りなんだが、声を出して笑ったわ。
君と働く人たちは大変だなw

235 :デフォルトの名無しさん:2020/08/21(金) 00:13:52.76 ID:8bG0TKoL.net
>>232
> は?だってメンバ変数ってクラス内限定のグローバル変数だぜ
お前の場合、ローカル変数は関数内限定のグローバル変数って言うだろw

236 :デフォルトの名無しさん:2020/08/21(金) 00:14:57.41 ID:8bG0TKoL.net
条件付きで何かを主張し始めたら、
それはもう主張が破綻してるってことなんですよ。

Macユーザー限定だとMacのシェア100%だ!みたいにね

237 :デフォルトの名無しさん:2020/08/21(金) 00:31:48.71 ID:FlbTfju5.net
>>234-235
俺の作るpublic staticのが遥かに厳密に管理されてて
お前らのはしっかりやってるようでいて
わりかしドンブリだってわかっただろ?
俺はオブジェクト指向のここが特に嫌でメンバ変数がグローバル変数的な問題を起こすところが
クラスが大きくなったときに本当に嫌

つまり俺が嫌いなのはグローバル変数的な動きをするメンバ変数なんだよ
クラスでもちゃんと引数通してアクセスするような造りにしてるときは別にいいぜ
ただそれやるならpublic staticのがいいしやっぱりバカだね

238 :デフォルトの名無しさん:2020/08/21(金) 00:43:01 ID:8bG0TKoL.net
> わりかしドンブリだってわかっただろ?

なにか証明した?
それがわかるというレスを(明示できるなら)やってみてよw

239 :デフォルトの名無しさん:2020/08/21(金) 00:43:45.59 ID:8bG0TKoL.net
>>237
関数内ローカル変数が、グローバル変数だっていうのなら
関数を小さく保てばいいだけでは?w

あ、クラスの話でしたっけ?
同じですがね

240 :デフォルトの名無しさん:2020/08/21(金) 01:05:05.19 ID:FlbTfju5.net
>>238
だってpublic static でグローバル変数無しなら
入力に対する出力が絶対一定だぜ
これ以上の安心感ってあるの?

241 :デフォルトの名無しさん:2020/08/21(金) 01:06:35.83 ID:FlbTfju5.net
まあ、デバイス絡むとそいつの状態次第だけど
そこに限定できるじゃん?

242 :デフォルトの名無しさん:2020/08/21(金) 02:13:09 ID:8bG0TKoL.net
>>240
引数が大量になるじゃんw
クラスの中にある変数を全部引数で渡すとしたら
何十個にもなるからな

それとも構造体で渡すのか?
そうすると構造体のうちどこを弄るかわからないから
結局グローバル変数と変わらなくなるなw

243 :デフォルトの名無しさん:2020/08/21(金) 03:01:20.82 ID:2Tg4ivJd.net
たしかにベテランになるにつれ、パブリックスタティック関数でやりきる方がすっきりするかもしれん
整理の上手さで
利点はソースがシンプルで早く作れるのと、可読性が良い
ただし整理が上手い場合
もっとも、整理が下手ならクラスもうじゃーっとなるw
無駄にやたらオーバーロードしてたり

244 :デフォルトの名無しさん:2020/08/21(金) 03:02:16.79 ID:2Tg4ivJd.net
いやオーバーロードはパブリックスタティックでもできるか

245 :デフォルトの名無しさん:2020/08/21(金) 04:45:13 ID:xkZp2iCS.net
>>243
もともと小さいプログラムならどっちでやってもすっきり書ける
問題はある程度大きくなると状態とかを取り回す必要が生じてその場合は
毎回staticな関数を呼ぶときにそれらを引数として渡さなきゃいけない
そこまで想像して発言してるか?

246 :デフォルトの名無しさん:2020/08/21(金) 04:53:48 ID:xkZp2iCS.net
小さいプログラムに対してはオブジェクト指向なんて記述が大げさすぎるのは事実だ
でもプログラムが大きくなってくるとその恩恵に預かれる

247 :デフォルトの名無しさん:2020/08/21(金) 04:55:17 ID:cTh5+k8G.net
例えばボタンを描画する関数があったとする
そのスタイルとはボタンの色、サイズ、座標

面倒くさいからリンクを貼るけど
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.button?view=netcore-3.1

AccessibilityObject, AccessibleDefaultActionDescription, AccessibleDescription, AccessibleName,
AccessibleRole, AllowDrop., Anchor, AutoEllipsis, AutoScrollOffset, AutoSize, AutoSizeMode,
BackColor, BackgroundImage, BackgroundImageLayout, ImageLayout, BindingContext,
Bottom, Bounds, CanEnableIme, CanFocus, CanRaiseEvents, CanSelect, Capture,
CausesValidation, ClientRectangle, ClientSize, CompanyName, Container, ContainsFocus,
ContextMenu , ContextMenuStrip, Controls, Created, CreateParams, Cursor

飽きたがこれぐらい渡せばボタンが実現でっきるやろ

248 :デフォルトの名無しさん:2020/08/21(金) 05:34:11.16 ID:FlbTfju5.net
>>242
どっちでもいいよ
そこで見た目にビビってやめちゃうのが一番の害
それだけ複雑な処理だから仕方ないんだよ
逆にそれだけのもんをグローバル変数で空中戦なんかするから手に負えなくなる

どんなにでかくなっても引数と戻り値に打ち込めや
逆にそこの検閲を徹底するから楽になるんや

249 :デフォルトの名無しさん:2020/08/21(金) 05:36:23.70 ID:FlbTfju5.net
>>247
必要なら全部持っとけや
それらをグローバル変数で空中戦やられる地獄を味わうよりずっといい

250 :デフォルトの名無しさん:2020/08/21(金) 07:03:30 ID:xkZp2iCS.net
>メンバ変数ってクラス内限定のグローバル変数だぜ
最強の迷言

251 :デフォルトの名無しさん:2020/08/21(金) 08:40:41.98 ID:FlbTfju5.net
>>250
でもそうだろ?
俺のpublic staticグローバル変数無しのメソッドのが遥かにキッチリ作ってあるというわけ

252 :デフォルトの名無しさん:2020/08/21(金) 09:09:18.44 ID:x4g5r5SE.net
お前がコーディングしたプログラム貼れよ。
一つのメソッドで1000行とかそれ以上書いてそうなんだよな。

253 :デフォルトの名無しさん:2020/08/21(金) 09:57:08 ID:Tdq0GS4g.net
>>250
君は引数やローカル変数、戻り値の代わりにインスタンス変数使ってるプログラムを見たことがない幸せな人
オブジェクト指向こじらせたバカは想像を超えてくるぞ

254 :デフォルトの名無しさん:2020/08/21(金) 10:00:09 ID:Tdq0GS4g.net
変数は必要最小限にしたが良い
数もスコープも

255 :デフォルトの名無しさん:2020/08/21(金) 10:30:15 ID:aoU7uP7R.net
要するにゴミのような想像を絶する現場で使われてる言語がJavaだった、と
すると袈裟が憎い理論も成り立つ

が、どんなパラダイムのどんな言語を使っても底辺ドカタはゴミを作り出す
とすると、一定水準以下の知能の物体は習得できない、面倒な言語を作った方がいい

256 :デフォルトの名無しさん:2020/08/21(金) 10:41:29.06 ID:FlbTfju5.net
>>254
だからってその解決方法がグローバル変数じゃ駄目なわけよ

引数外してグローバル変数や突然取得できる何らかの手法例えばメンバ変数に逃げるのはやってはいけないこと
最低限にするのであって本来必要な引数までカットしていいわけではない

257 :デフォルトの名無しさん:2020/08/21(金) 10:42:26.76 ID:cTh5+k8G.net
>>256
必要な引数が多かったらどうすんの?

258 :デフォルトの名無しさん:2020/08/21(金) 10:49:23.77 ID:FlbTfju5.net
>>257
処理を分けるかそれができなければ
その引数はそのメソッドに必要なものなので潔く引数にズラズラ並べる
こうすることで
引数を通した時点で型チェック
メソッドを呼び出した頭で値のチェックができ、適切なエラーが出せるし出しやすい
無くしてしまっては何にもわからない
呼び出した側はその変数がそのメソッドに使われているかどうかすらわからない
エラーを出してもそれが内包されてるメンバ変数では一体何が起こったのかさっぱりわからない

259 :デフォルトの名無しさん:2020/08/21(金) 10:57:12 ID:wUhiKu+g.net
>>258
俺はお前が何をやってるのかさっぱりわからないよw
結局のところ、お前はお前の言うやり方で、現実的に意味のある動作をするそれなりの規模のプログラムを書いたことはあるの?
実際のスケール感を無視して、頭の中の小さなサンプルだけをイメージしながら机上の空論を並べ立ててるだけでないの?
そりゃ自分に都合のいいモデルだけをイメージしてれば、サイキョーのカンペキな理論ができるわな

260 :デフォルトの名無しさん:2020/08/21(金) 10:58:41 ID:xkZp2iCS.net
もうこのバカ相手にするのやめません?

261 :デフォルトの名無しさん:2020/08/21(金) 11:01:10 ID:cTh5+k8G.net
>>258
メンバ変数は型チェックされるよ?
その型しか入らないからね

262 :デフォルトの名無しさん:2020/08/21(金) 11:01:36 ID:cTh5+k8G.net
>>258
> エラーを出してもそれが内包されてるメンバ変数では一体何が起こったのかさっぱりわからない

意味不。どの変数を参照してるかなんてコード見ればわかるだろ

263 :デフォルトの名無しさん:2020/08/21(金) 11:01:59 ID:cTh5+k8G.net
>>260
おもちゃを取り上げないでくれないかな?w

264 :デフォルトの名無しさん:2020/08/21(金) 11:11:15 ID:FlbTfju5.net
>>262
いきなりメソッドの中身を見る話になってんじゃん
見る必要ないんだろ?w

265 :デフォルトの名無しさん:2020/08/21(金) 11:29:37.79 ID:cTh5+k8G.net
>>264
だから修正するときと使う時の話をごっちゃにするな
使うときはメソッドの中身なんか見ない

266 :デフォルトの名無しさん:2020/08/21(金) 11:30:05.87 ID:cTh5+k8G.net
何度言っても理解できない。アホなのか?本当のアホなのか?

267 :デフォルトの名無しさん:2020/08/21(金) 11:33:26.05 ID:cTh5+k8G.net
引数で渡すと、この値なんなんですか?ってなる
「内部で使用するフラグです。」

初期化関数を呼んだら内部で必要なデータを返しますので
次呼ぶときに渡してください。
ファイルハンドルっていうんです。

みたいなね。

内部情報が一つだけならいいが
複数あったらどうするのか?

ファイルハンドルは内部に確保したメモリに
シーク位置を紐付けて保存してるんですよ
なんてことになるw

268 :デフォルトの名無しさん:2020/08/21(金) 11:47:09.66 ID:UrYJ9hGn.net
>>247
ボタンごときに膨大なプロパティがあるのがおかしい
整理できてないw

さておき、実際にはほとんどデフォルトで使うから、「クラスなら面倒がない」と言いたいのかな
関数でも名前付き引数、あるいはコレクション渡しで未設定ならデフォルト、で省略できると思うが

まあコレクションはオブジェクト指向の基礎なので、これを使えば既にオブジェクト指向なんだろうけど
WinAPIもスタティック関数でオブジェクトを動かすので、スタティック関数は別にオブジェクト指向の対立概念ではないが

269 :デフォルトの名無しさん:2020/08/21(金) 12:00:44.90 ID:pQPzrAvT.net
>>267
内部で〜はお前が出してるメッセージの問題だよね?

270 :デフォルトの名無しさん:2020/08/21(金) 12:03:46.30 ID:pQPzrAvT.net
>>265
じゃあ、エラーもトレースも外に出すなよ
お前が作ったモノは、ただ、ただ、わけもわからず落ちろ

271 :デフォルトの名無しさん:2020/08/21(金) 12:08:14.57 ID:cTh5+k8G.net
>>268
> ボタンごときに膨大なプロパティがあるのがおかしい

現実見ろよ

お前が言う方法で、create_button関数作ってみ

ボタンの属性として、ボタンの値、無効ボタンかどうか、
位置x、y、z座標、文字の色、ボタンの色、枠のスタイル、
ボタンの余白、文字の右寄せ・左寄せ、フォント、
まだまだあるが、これぐらいでいいだろう?

ボタンを作ったらこれだけの属性が初期設定として
設定される

はい、引数で作ってみてください
あと将来の拡張性も考えてね。
増えるかもしれない

272 :デフォルトの名無しさん:2020/08/21(金) 12:24:30.10 ID:FlbTfju5.net
構造体でも作れば見た目シンプルになるで

273 :デフォルトの名無しさん:2020/08/21(金) 12:28:47.71 ID:AwYjNd+Z.net
>>272
構造体はグローバル変数やろ?
どこを書き換えるのかわからんのだから

それとも一つのクラスになってるから
それは一つの引数だ!っていうつもりか?
あ、間違った一つの構造体だったw

274 :デフォルトの名無しさん:2020/08/21(金) 12:32:51 ID:AwYjNd+Z.net
結局、引数で複数の情報を与えるのはずらずら何十個の並べれば
また可能だとしても、戻り値が一つしかないから現実的じゃないんだよね

クラスを使うのは、一つのメソッドで
複数のプロパティを操作することがあるからなわけ
例えばcreate_buttonだったら複数のプロパティを初期化する

戻り値で複数の値を返せないし、戻り値を構造体とかクラスにして返すとしたら
結局それはお前の言うクラス内のグローバル変数と同じになってしまう
引数の構造体(クラス)のうちどこを変更するかわからないからね

275 :デフォルトの名無しさん:2020/08/21(金) 12:50:37.55 ID:AwYjNd+Z.net
引数で渡すと将来の修正時の拡張性と互換性が犠牲になる
これはいい知見だ

276 :デフォルトの名無しさん:2020/08/21(金) 12:51:17.64 ID:7UnAdk+W.net
変数のスコープと型の違いも区別できてないようだと
どういうやり方しても泥スパゲッティしか出来上がらない

277 :デフォルトの名無しさん:2020/08/21(金) 12:53:26.97 ID:Q2DXCe4b.net
関数型を否定するのか。

278 :デフォルトの名無しさん:2020/08/21(金) 12:57:43.17 ID:AwYjNd+Z.net
関数型は否定してないよ

少数の引数と一つの戻り値だけで実現できることなら関数型でやればいい
それができないことまで無理してやろうとするのはデメリットしか無いという話

引数で渡せばメリットが有る、だから引数で渡すようにしよう!
これは間違いで
引数で渡せる場合は、関数型にメリットが有るが
そうでない場合にはむしろろデメリットになる
条件に応じて関数型にするかに分岐するのであって
関数型にするために条件を無理やり歪めてはいけないということ

279 :デフォルトの名無しさん:2020/08/21(金) 13:56:53.08 ID:YabcZt9w.net
構造体でまとめることによって引数で渡せるようになるのなら、そうした方が関数型的な考え方に親和的ということはない?
戻り値が引数以外に依存するのはできるだけ避けるというのが関数形的な発想かと思っていたが、

280 :デフォルトの名無しさん:2020/08/21(金) 14:03:53.99 ID:AwYjNd+Z.net
>>279
そうすると結局、クラス内のメンバ変数のどこがいじられるかわからないというのが
引数の構造体のどこがいじられるかわからないという問題に変わるだけで
関数型を使うメリットが無くなる
じゃあもうクラスでいいじゃんとなる

何度も言うように、関数型が優れてるから関数型に移行するのではなく
関数型が優れてる場合は限られてるので、そこだけ関数型にすればいい
関数型にメリットがないならオブジェクト指向にすればいい

その例が、ボタンの生成のように一つの関数で
複数のメンバ変数を初期化するような例

281 :デフォルトの名無しさん:2020/08/21(金) 14:05:27.74 ID:AwYjNd+Z.net
× 戻り値が引数以外に依存するのはできるだけ避ける
○ 戻り値が引数以外に依存するのが "避けられる場合に限って" 関数型を使いましょう

282 :デフォルトの名無しさん:2020/08/21(金) 14:22:18.92 ID:7UnAdk+W.net
関数型を実践したこともないのに
知ったかして関数型関数型と連呼しちゃうのは
日本を出たこともなく日本のことしか知らないのに
欧米では〜欧米では〜と連呼してるのと同じ

283 :デフォルトの名無しさん:2020/08/21(金) 14:28:24.68 ID:Tdq0GS4g.net
自分で経験したことしか信じない人っていますよね

284 :デフォルトの名無しさん:2020/08/21(金) 14:42:05 ID:Tdq0GS4g.net
じゃあグローバル変数を使って大規模なプログラムを組み上げたことがない人はグローバル変数を批判してはいけないのか
実践せずともわかるだろうが、関数型も欧米も想像で十分

285 :デフォルトの名無しさん:2020/08/21(金) 15:11:36.49 ID:AwYjNd+Z.net
だから多数のプロパティを持つcreate_buttonを関数型で実装してほしい

286 :デフォルトの名無しさん:2020/08/21(金) 15:22:29.34 ID:xkZp2iCS.net
それもグローバル変数を使わずに

287 :デフォルトの名無しさん:2020/08/21(金) 15:23:39.17 ID:xkZp2iCS.net
押下されたらちゃんとその状態も反映すること

288 :デフォルトの名無しさん:2020/08/21(金) 15:27:03.62 ID:Q2DXCe4b.net
1クラス1メソッドの原則を守れば可能。

289 :デフォルトの名無しさん:2020/08/21(金) 15:29:04.16 ID:2S3OsUgZ.net
1クラス1メソッドの原則なんて言葉はお前が考え出したものだろ?w

290 :デフォルトの名無しさん:2020/08/21(金) 15:38:01.82 ID:YabcZt9w.net
ボタン自体は状態を持つものだから、オブジェクト指向で実装するのが自然でしょ?(関数型でも抜け道があるのかもしれないが、自分は関数型には詳しくないのでわからない)
しかし、上でされていた議論はそういう話ではなくて、関数の戻り値が依存する情報を、@全て引数として与えることも、A一部はメンバ変数から引っ張ってくることもできるという状況の場合に、どちらを選択するかという問題設定だと思っていたんだが。

291 :デフォルトの名無しさん:2020/08/21(金) 15:41:01.39 ID:2S3OsUgZ.net
>>290
関数型の主張が「どんな場合でも引数で渡して戻り値で戻したほうがいい」だから
オブジェクト指向の主張は元から、内部にプロパティが多数ある場合の話をしてる

292 :デフォルトの名無しさん:2020/08/21(金) 15:47:59.93 ID:xkZp2iCS.net
グローバル変数未使用で関数のみを使って状態にも対処できる!
オブジェクト指向なんて選択肢はない!
と言い張る子の霊圧が消えた...

293 :デフォルトの名無しさん:2020/08/21(金) 15:49:18.62 ID:x4g5r5SE.net
>>252
ぉ?Javaディスってんのか?

>>290
> ボタン自体は状態を持つものだから、オブジェクト指向で実装するのが自然でしょ?
いや、別にオブジェクト指向で実装するのが自然っていうのは乱暴だろ。

ほんと、ソース貼れよ。引きこもりのアマグラマーがw

294 :デフォルトの名無しさん:2020/08/21(金) 15:50:37.63 ID:xkZp2iCS.net
そして日本語もまともに読めないらしい

295 :デフォルトの名無しさん:2020/08/21(金) 16:05:07 ID:xkZp2iCS.net
はよこいつにとどめさしてあげて

296 :デフォルトの名無しさん:2020/08/21(金) 16:24:00.01 ID:2S3OsUgZ.net
もう死んでね?w
ボタンを関数型で作れなかったんだから

297 :デフォルトの名無しさん:2020/08/21(金) 17:27:54.83 ID:Tdq0GS4g.net
>>296
お前作れんの?

298 :デフォルトの名無しさん:2020/08/21(金) 17:28:26.23 ID:Tdq0GS4g.net
作れなかったら>>296の負けだから

299 :デフォルトの名無しさん:2020/08/21(金) 17:33:06 ID:UrYJ9hGn.net
>>271
たしかC++ってそういうもんだがw
しかも同じく嫌いだよw
整理できてない

で、なんでクラスだとそれが楽になるのかね

>さておき、実際にはほとんどデフォルトで使うから、「クラスなら面倒がない」と言いたいのかな

こういうことかね、て先回りして聞いてるんだが

300 :デフォルトの名無しさん:2020/08/21(金) 17:34:24.29 ID:Q2DXCe4b.net
Reduxみたいなやつな。
はよ作れ。

301 :デフォルトの名無しさん:2020/08/21(金) 17:49:58 ID:xkZp2iCS.net
ちなみに俺はGUIを実装したことある

302 :デフォルトの名無しさん:2020/08/21(金) 17:50:12 ID:xkZp2iCS.net
オブジェクト指向でな!

303 :デフォルトの名無しさん:2020/08/21(金) 17:54:10 ID:xkZp2iCS.net
作れもしないくせにど素人が楯突くな

304 :デフォルトの名無しさん:2020/08/21(金) 17:57:19 ID:UrYJ9hGn.net
そんなにうじゃっとしてないか

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 ID:xkZp2iCS.net
そんなお膳立てされたAPI使っていいって誰が言った?

306 :デフォルトの名無しさん:2020/08/21(金) 18:03:32.36 ID:UrYJ9hGn.net
ちなみに多くの人が、「クラスオブジェクト指向な記述で」を「オブジェクト指向で」と言ってるようだね
スタティック関数で動かすオブジェクト指向もあるので(C++、WinAPI)
略すなら「クラスで」と言った方がいい(これも不正確だが)

307 :デフォルトの名無しさん:2020/08/21(金) 18:22:59.95 ID:iO1OXKqS.net
windows apiはc言語でしょ

308 :デフォルトの名無しさん:2020/08/21(金) 20:03:28.77 ID:Q2DXCe4b.net
システムワイドでReduxのような仕組みを適用するのは無理だろうか?

309 :デフォルトの名無しさん:2020/08/21(金) 20:12:46.04 ID:7ttzM/39.net
思うに、このスレに集まってる人らの
業務内容が違うんから議論がズレるんじゃないか?


Web系の場合メモリ上の
オブジェクトは一瞬で役目を終えるから
正直カプセル化とかいらない
node.jsやPHPでデータベースのへselect文投げると
連想配列オブジェクトの配列が帰ってくるから
つまりテーブルから動的にクラスののオブジェクトが
生成するから正直クラス定義もいらない
staticでなんの問題もないと思う。
状態管理は特有のセッションに保持するだろう。


でもゲーム系だとキャラのHPみたいなゲージ管理や
持ち物、装備品などいつまでもメモリ上に
居座って状態管理が必要だからオブジェクト指向
とカプセル化は大切。

310 :デフォルトの名無しさん:2020/08/21(金) 20:23:39.45 ID:Q2DXCe4b.net
うーん。
職業プログラマが5chで情報交換してたら、ちょっとひどすぎない?

俺は自分の職業の板なんて行かない。
見たことはもちろんあるけど、素人が玄人のフリしてうんちく述べてるだけで、俺らが何か書き込むことは無いと思うよ。

それとも職業プログラマってそんなに程度低い?
素人とうんちく語り合うほど?

311 :デフォルトの名無しさん:2020/08/21(金) 20:24:45.30 ID:Q2DXCe4b.net
プロが匿名掲示板で情報交換して得るものなんてないでしょ。

あったら怖いわw

312 :デフォルトの名無しさん:2020/08/21(金) 20:34:27 ID:x4g5r5SE.net
>>309
常駐プログラム云々いっちゃうと、GCが優れてる!いや、C++のデストラクタの方が!
とか、そういう話にもなっちゃうからオブジェクト指向云々は関係ないような。
優秀なCプログラマならCでもリークしないプログラム書くでしょ。

static云々言ってるバカは、オブジェクト指向でもリーク起こすと思うわ。

313 :デフォルトの名無しさん:2020/08/21(金) 20:49:57.82 ID:xkZp2iCS.net
オブジェクトのライフサイクルとカプセル化がなんの関係あるんだ?

314 :デフォルトの名無しさん:2020/08/21(金) 20:50:21.42 ID:xkZp2iCS.net
素人発言が目立ちだしたな

315 :デフォルトの名無しさん:2020/08/21(金) 20:51:44.98 ID:xkZp2iCS.net
素人が玄人のフリしてうんちく述べてるのがうざいから消えてほしいとは思ってる
でも中にはプロっぽい人も紛れてる

316 :デフォルトの名無しさん:2020/08/21(金) 20:55:22.67 ID:Q2DXCe4b.net
いや、無いない。

素人が適当なこと書いてるから訂正するか?
無い無い。

レベルが違いすぎるのよ。

それとも何か?
プログラマという職業に限ってそんなにレベルが低いか?
素人と言い争うほどか?

317 :デフォルトの名無しさん:2020/08/21(金) 20:57:07.65 ID:xkZp2iCS.net
自分が素人って認めたんかpublic staticくん

318 :デフォルトの名無しさん:2020/08/21(金) 21:01:52.55 ID:2S3OsUgZ.net
>>304
誰もWinAPIの話とは言ってないが、それボタンはウインドウハンドルを返すのよ
つまりクラスのメンバ変数に状態を持ってインスタンスのポインタを返してるのと同じ
オブジェクト指向なんだよね

こういうのって本質的に複数の状態を持ってるわけだから
関数型で作るの大変でしょ?

319 :デフォルトの名無しさん:2020/08/21(金) 21:09:07 ID:Q2DXCe4b.net
Windows自体がオブジェクト指向だから、関数型と相性悪いのかもしれないな。

もしかすると、それが原因でWindowsが無くなるのかもしれないな。

320 :デフォルトの名無しさん:2020/08/21(金) 21:13:17 ID:xkZp2iCS.net
頭のネジ外れてんな
締め直してこい

321 :デフォルトの名無しさん:2020/08/21(金) 21:15:49 ID:2S3OsUgZ.net
>>319
だからWindowsの話はしてないんだって
勝手にWin32の話にしておいてWindowsのせいにするなよ

なんでもいいから関数型で複数のプロパティを持つボタンのようなもの作ってみろって
一つの関数で複数のプロパティを操作することもある
そして将来の拡張性も考えないといけない
関数型でできるんか?

322 :デフォルトの名無しさん:2020/08/21(金) 21:17:53.68 ID:Q2DXCe4b.net
ホビーの奴と話し合うことなど、一ミリたりとも無いけどな。
レベルが全く違う。

プログラマに限っては、そんなにレベルが低いか?
アマチュアと話し合うことがあるのか?

323 :デフォルトの名無しさん:2020/08/21(金) 21:19:50 ID:Q2DXCe4b.net
>>321
ウェブ界では、状態をすべて外に追い出すのが流行ってるようだけどな。

324 :デフォルトの名無しさん:2020/08/21(金) 21:20:35 ID:2S3OsUgZ.net
関数型っていうのは結局ガイドラインみたいなもんやろ

引数だけから戻り値が決定する関数はテストがしやすいから
可能であればそうするようにしましょう

実際には可能でない場合が多い
何十個の引数と専用の戻り値型でも作れば
理論上は可能かもしれないが使いづらくなる

325 :デフォルトの名無しさん:2020/08/21(金) 21:21:00 ID:2S3OsUgZ.net
>>323
それって結局グローバル変数なんだけどねw

326 :デフォルトの名無しさん:2020/08/21(金) 21:21:03 ID:yq0UM+AD.net
あおりではなく
カプセル化をうまく説明してあるサイトを長い間探しているんだが
決定版はどこ?

327 :デフォルトの名無しさん:2020/08/21(金) 21:21:51.79 ID:Q2DXCe4b.net
いや俺は状態をすべて外に追い出すというのが目からうろこよ。

最終的にどうなるのか知らんけど、これは突き詰めて結果を導いてほしいな。

328 :デフォルトの名無しさん:2020/08/21(金) 21:23:58.46 ID:Q2DXCe4b.net
頑張ったけど駄目でしたという場合もあるだろうけどな。

その結果が納得できるところまで突き詰めてほしいな。

329 :デフォルトの名無しさん:2020/08/21(金) 21:24:48.58 ID:2S3OsUgZ.net
ウェブでは状態を全て追い出いたために、巨大な「状態オブジェクト」ができて
複数の関数から、共有の状態オブジェクトを変更するようになってしまってる

引数から戻り値が決まる関数型とは別のものだよ
分離された状態オブジェクトを読み書きして
状態オブジェクトが変更される

330 :デフォルトの名無しさん:2020/08/21(金) 21:26:23.35 ID:Q2DXCe4b.net
>>329
状態を入力に取れば良いだけだろ。

331 :デフォルトの名無しさん:2020/08/21(金) 21:27:19.73 ID:7UnAdk+W.net
>>309
ゲームの種類にもよるけどアクションやシューティングの場合
基本は以下3ステップの無限ループでTODO管理アプリみたいなものと核は同じ

1. 入力を処理
2. 状態を更新
3. 出力を生成

ReactでもElmでもRxでも関数型のパラダイムなら
直前の状態と入力(ユーザー操作やタイマーや衝突など)から
新しいバージョンの状態を作ってそれをもとに出力を生成して画面を更新する

332 :デフォルトの名無しさん:2020/08/21(金) 21:28:09.14 ID:2S3OsUgZ.net
>>330
「状態」がオブジェクト、つまり配列と連想配列の組み合わせで
どこが必要なのかわからないから、テストが困難になる

333 :デフォルトの名無しさん:2020/08/21(金) 21:29:07 ID:xkZp2iCS.net
アマチュアと話し合ってるんじゃなくて
アマチュアがボケ倒してるからつっこんでるんだろw

334 :デフォルトの名無しさん:2020/08/21(金) 21:29:17 ID:2S3OsUgZ.net
Reactなんかでいう「状態」というのはオブジェクトのこと

335 :デフォルトの名無しさん:2020/08/21(金) 21:29:25 ID:Q2DXCe4b.net
>>332
逆かもしれんぞ?

状態が外に記録されているので、把握しやすくなる。

それどころか状態の圧縮など、自動化されやすくなり、テストが容易になる。

336 :デフォルトの名無しさん:2020/08/21(金) 21:30:03 ID:xkZp2iCS.net
どんだけかまってほしいんだよ

337 :デフォルトの名無しさん:2020/08/21(金) 21:32:12 ID:2S3OsUgZ.net
もともとC++のクラスっていうのは構造体の拡張なんだよね
この構造外がReactなんかでいう状態のこと

関数(状態=構造体へのポインタ, 引数1, 引数2, ...)
というのが

構造体へのポインタ->関数(引数1, 引数2, ...)
に変わったのがC++

この2つは書き方が違うだけで本質的には同じもの

338 :デフォルトの名無しさん:2020/08/21(金) 21:32:44 ID:Q2DXCe4b.net
>>333
無い無い。
小学生がごっこ遊びしてるところにプロが違う違うと口挟むか?

自分の職業の板を見てもそんな感じよ。
突っ込もうなんて思わないし、実際突っ込んでるプロも見たことが無い。
素人同士でわいわい言い争ってる。

レベルが違いすぎんのよ。
輪に入るわけがない。

職業プログラマは素人の輪に入れるのか?

339 :デフォルトの名無しさん:2020/08/21(金) 21:33:20 ID:2S3OsUgZ.net
>>335
> 状態が外に記録されているので、把握しやすくなる。

状態が外にあっても中にあっても本質的には同じ
どちらにしろオブジェクト指向

340 :デフォルトの名無しさん:2020/08/21(金) 21:35:42 ID:Q2DXCe4b.net
考えてみろよ。
園児が模型の飛行機でブーンとやってるところに、職業パイロットが通りすがったら、違う違う対気速度が低下するからこうだなどと口をはさむか?

そのくらいのレベルの差があるわけよ。
それともなに?
職業プログラマは素人と大した変わらんとでも?

341 :デフォルトの名無しさん:2020/08/21(金) 21:37:03 ID:Q2DXCe4b.net
>>339
状態遷移表などは圧縮できるし、事前の検査も可能。

ここを否定せずに、研究してみてはどうか?
新しいモノは中国に期待するべきか?

342 :デフォルトの名無しさん:2020/08/21(金) 21:41:12 ID:2S3OsUgZ.net
>>341
そりゃオブジェクト指向でもそれは可能なんだから当たり前やろw

343 :デフォルトの名無しさん:2020/08/21(金) 21:43:15 ID:e1ADUqIj.net
>>151-152
ついにこのへんに言及したレスが出てきたな
状態がある問題をプログラミングする以上
どっちの方法がマシかを問うのが次に取るべき立場
状態は悪、関数型は神、みたいな話はもうみんな飽きたろ?

344 :デフォルトの名無しさん:2020/08/21(金) 21:43:58 ID:xkZp2iCS.net
俺は容赦なく模型飛行機で遊んでいる園児(お前)を空爆する

345 :デフォルトの名無しさん:2020/08/21(金) 21:45:13 ID:Q2DXCe4b.net
>>344
だからお前はアマチュアとバレてるわけよ。

346 :デフォルトの名無しさん:2020/08/21(金) 21:47:12 ID:Q2DXCe4b.net
>>343
状態と計算を分離する結果、関数型の恩恵にあずかれるなら、分離する方向に行くのが正しいのではないか。

347 :デフォルトの名無しさん:2020/08/21(金) 21:47:34 ID:2S3OsUgZ.net
>>343
前から言ってるが、関数型は少数の値型と一つの戻り値で十分な関数としての要件を
満たしているときに便利なもので、そうでないものを無理やり対応させても不便なだけという話

関数型が優位なのは理論上の話で、理論上の話だと数十個の引数でもOKという扱いだから

348 :デフォルトの名無しさん:2020/08/21(金) 21:48:43 ID:u4nsg/nb.net
>>280
オブジェクトの内部状態が変わるのと戻り値だけが変わるのとでは影響範囲が違うだろう。
それこそグローバル変数とローカル変数のスコープの違いみたいに。

349 :デフォルトの名無しさん:2020/08/21(金) 21:49:03 ID:2S3OsUgZ.net
>>346
> 状態と計算を分離する結果、関数型の恩恵にあずかれるなら、分離する方向に行くのが正しいのではないか。

「関数型の恩恵にあずかれるなら」

結局そこ

「関数型の恩恵にあずかれるなら」関数型
「関数型の恩恵にあずかれないなら」オブジェクト指向
適切なものを組み合わせて使うべき

「関数型の恩恵にあずかれない」例の一つがボタン

350 :デフォルトの名無しさん:2020/08/21(金) 21:52:29 ID:Q2DXCe4b.net
ボタンこそ、恩恵にあずかれるのでは?

351 :デフォルトの名無しさん:2020/08/21(金) 21:52:48 ID:2S3OsUgZ.net
>>348
> オブジェクトの内部状態が変わるのと戻り値だけが変わるのとでは影響範囲が違うだろう。

今話をしてるのは
オブジェクトの内部状態 "すべて" を "一つの" 戻り値にしたとき
影響範囲はオブジェクトの内部状態を変えるのと同じことになってるという話をしてる

例えばボタンのスタイルは前景色、背景色、座標、フォント、余白などいろんなスタイルあるが
オブジェクト指向ではボタンのスタイルとしてオブジェクトの内部状態に組み込んでる
これらの前景色、背景色、座標、フォント、余白などをあわせてスタイルオブジェクトとして

関数からスタイルオブジェクトを返すからテストしやすい!といっても
何がテストしやすいのさっぱりわからない

352 :デフォルトの名無しさん:2020/08/21(金) 21:54:15 ID:2S3OsUgZ.net
色を変える関数を作るとするならば


スタイルオブジェクト = setColor(スタイルオブジェクト, 色)

これが関数型

この時、setColorがどの属性をいじるかなんてコードを見ないとわからない

353 :デフォルトの名無しさん:2020/08/21(金) 21:56:32 ID:2S3OsUgZ.net
ボタンのスタイルオブジェクトの場合、関数型ではこうなるのだろうか?

ボタン.スタイル = setColor(ボタン.スタイル, 色)

本質的に関数型に適合しないようなものを
無理やり関数型にしても意味ないよ

354 :デフォルトの名無しさん:2020/08/21(金) 21:59:18 ID:xkZp2iCS.net
どこに状態持っとくかで状態管理のしやすさが変わるんだよな
あるComponentでそれと関係のない状態変数が無造作に置かれてるよりは
必要な場所からのみアクセスできるようになってるほうがありがたい
必要ない場所でその状態変数について気にしなくていいから

355 :デフォルトの名無しさん:2020/08/21(金) 22:01:46 ID:2S3OsUgZ.net
>>353はドットでつないでるから関数型には見えないw
実際はこうなのだろうか?

ボタン = setStyleColor(ボタン, 色)

ボタンには色以外の複数のスタイル属性や
ボタンの有効無効などの属性を持っている

つまりsetStyleColorという関数は
ボタンという連想配列データの一部分をいじる関数になる

それはオブジェクト指向でボタン.スタイル.setColor(色)の場合に
色というメンバ変数を書き換えてるのと大差ない

356 :デフォルトの名無しさん:2020/08/21(金) 22:02:23 ID:2S3OsUgZ.net
>>354
そうやってできたのがオブジェクト指向やなw

357 :デフォルトの名無しさん:2020/08/21(金) 22:03:35 ID:xkZp2iCS.net
結局そこに行き着くw

358 :デフォルトの名無しさん:2020/08/21(金) 22:08:32 ID:Q2DXCe4b.net
関数型Windowsが出せなければ、Windowsは無くなるだろな。

359 :デフォルトの名無しさん:2020/08/21(金) 22:09:51 ID:2S3OsUgZ.net
>>358
何年以内に?w
ま、それを明言するだけの勇気はお前にないだろうね

360 :デフォルトの名無しさん:2020/08/21(金) 22:10:10 ID:u4nsg/nb.net
>>351
オブジェクトとして永続的に存在するものと単なる戻り値が同じわけないだろう。
戻り値として返されたオブジェクトをすぐに破棄するってんならまぁわかるが。

361 :デフォルトの名無しさん:2020/08/21(金) 22:11:42 ID:2S3OsUgZ.net
単なる戻り値も永続的に存在するので同じ

362 :デフォルトの名無しさん:2020/08/21(金) 22:17:04 ID:Q2DXCe4b.net
俺はこれはある意味何かが起きると思ってんだよ。

賢い奴ら数名は気が付いているようだが。

今頃オブジェクト最強とか言ってるようでは気づけんだろうけど。

363 :デフォルトの名無しさん:2020/08/21(金) 22:18:31 ID:2S3OsUgZ.net
>>362
いつまでに?

そのうち何かが起きるという予言は
宇宙の歴史から見ればそのうち当たるだろう
程度の話でしかないよ

364 :デフォルトの名無しさん:2020/08/21(金) 22:22:11 ID:Q2DXCe4b.net
30年かかると思うよ。

でもWindowsは3年でなくなるだろな。

Windowsが30年かけて地位を築いたように。

関数型ウィンドウも30年かけて地位を築く。

365 :デフォルトの名無しさん:2020/08/21(金) 22:23:47 ID:2S3OsUgZ.net
>>364
じゃあお前のスレはここでいいねw

Windows10は当初の2025年で終了でしょうね
https://medaka.5ch.net/test/read.cgi/os/1566090910/

366 :デフォルトの名無しさん:2020/08/21(金) 22:25:37 ID:2S3OsUgZ.net
向こうのスレに記録残してきたw

367 :デフォルトの名無しさん:2020/08/21(金) 22:25:41 ID:Q2DXCe4b.net
Microsoftは世界最大規模の研究所を持ってるから、Windows Fを出してくる可能性がある。
すでに待機中かもしれん。

368 :デフォルトの名無しさん:2020/08/21(金) 22:26:40 ID:Q2DXCe4b.net
>>365
やはりアマチュアか。

369 :デフォルトの名無しさん:2020/08/21(金) 22:26:55 ID:2S3OsUgZ.net
>>367
いつまでに?w
お前にどれだけ自信があるかわかるね
短くすればすぐに外れたのがわかる、長くすれば自信がないw

370 :デフォルトの名無しさん:2020/08/21(金) 22:29:14 ID:Q2DXCe4b.net
>>369
ほんとバカだな。

それは技術の話か?

Microsoftの戦略次第だろうが。

Maicrosoftに聞け。

371 :デフォルトの名無しさん:2020/08/21(金) 22:30:16 ID:Q2DXCe4b.net
このスレにいくつかのアイデアが埋まっている。

気づいたものが次世代ウィンドウシステムを作るのだろう。
それが関数型ウィンドウだ。

372 :デフォルトの名無しさん:2020/08/21(金) 22:31:37 ID:2S3OsUgZ.net
>>370
ほらな、かってな予想を立てて、自分の予想に自信がないw

373 :デフォルトの名無しさん:2020/08/21(金) 22:42:46.86 ID:Xt87XuMs.net
全て不変にすれば、パフォーマンス以外の問題点は解決する

374 :デフォルトの名無しさん:2020/08/22(土) 00:29:04.18 ID:H4y73psn.net
>>318
だから言ってるように、オブジェクト指向は否定してない
オブジェクトの操作を、クラスで書くか、関数で書くかっていう記述方法の違いでしか言ってない
関数はスカラー関数に限ってない

流れがプロパティ保持の話ばかりだけど、その程度ではクラスにする必要ない
クラスの特徴はメソッドと継承

そのメソッドが外に出てるのがスタティック関数
書く場所が違うだけで、機能は同じ

Obj.Close
Close( Obj )
の違い
で、実は後者の方が生産性が高い、ということもあるかもしれんねと(体感)

かといってWinAPLみたいに長い名前の膨大なグローバル関数がずらーっとあると、生産性低い
そこは子クラスでなくても、名前空間で分類するだけでも整理が付くので、工夫次第

さらに外人の「動詞+目的語」じゃなく、「主語+動詞」という命名なら分類ごとに並ぶ
× OpenObj、CloseObj
〇 ObjOpn、ObjClose
(クラスのメソッドなら後者の並びになるが、なら関数名自体もそのセンスでいいじゃんていう)

継承は、いろんなイベントで共通の処理があるフォームのバージョン違いだと、ごっそりソースは減る
でもイベント関数自体を共通にして、中で条件分岐の方が見通しがいいかもしれない
(エクセルでシートイベントに対するブックイベントみたいな)
クラス継承は、継承の様子は掘って掘ってしないと調べがつかないので

375 :デフォルトの名無しさん:2020/08/22(土) 00:58:01.96 ID:qyHD0ees.net
>>374
>書く場所が違うだけで、機能は同じ

ポリモーフィズムの実現方法が異なるというのが本質的な違い
変更要求に対してコードの修正範囲が変わるのでどちらがいいのかというのは状況による

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.95 ID:H4y73psn.net
>>375
“foo”.length はまたややこしい話で
実装はスタティック関数ってこともある(C#の拡張関数)
これは間違いなく生産性高い
むしろそこからスタティック関数の方が生産性高いのではという発想

改めてメソッドを実装しなくても無限に連鎖できる
“foo”.length.text.length
関数は元々無限にネストできるが
length( text( length("foo") ) )
ただし括弧が見にくい、起点が後ろの方にある、組の引数が遠いとこに分かれる、ので眼精疲労が起きる

377 :デフォルトの名無しさん:2020/08/22(土) 03:06:31.41 ID:T+/LMfcE.net
> これは間違いなく生産性高い
それはどうやって計測したのか言ってみ

378 :デフォルトの名無しさん:2020/08/22(土) 03:33:53.88 ID:T+/LMfcE.net
実装がスタティック関数 → スタティック関数は生産性が高い

ならば

実装がスタティック関数ではない → スタティック関数は生産性が低い

379 :デフォルトの名無しさん:2020/08/22(土) 05:08:17.36 ID:TIWYvQ38.net
>>338
16年この業界にいる現役だよ。
むしろ、一般人ががプログラム言語なんかに興味持つ方が驚き。
現場で使えない派遣のプログラマーをアマグラマーって馬鹿にしてるけど、アマチュアさんいるんやね。プログラムは好き勝手に書いてた方が楽しいよ。

囲碁とか将棋のプロがアマを見る気持ちがこのスレで分かった気がする。

380 :デフォルトの名無しさん:2020/08/22(土) 05:09:53.91 ID:Q5VkNyRi.net
若造でワロタ

381 :デフォルトの名無しさん:2020/08/22(土) 05:25:55 ID:TIWYvQ38.net
>>376
おまえ、それ、マルチスレッド処理でも同じこと言えんの?
GUIの話してんのかわからんけど、異なる複数の処理がスタティック関数にアクセスすること考えてないだろ?

なんか、Cでmalloc使わない!って豪語して、スタックオーバーフロー起こしてどうしていいかわからなくなってたPG思い出したわ。

382 :デフォルトの名無しさん:2020/08/22(土) 05:26:43 ID:TIWYvQ38.net
>>380
そりゃ、自分より年寄りはいるだろう。
すごい人もいっぱいいて、日々勉強だわな。

383 :デフォルトの名無しさん:2020/08/22(土) 05:30:08 ID:YtG8IJDk.net
そりゃ恥ずかしいと思わないと。

この板は文法やライブラリの使い方を取り扱う板。

プロが欲するのはお客様の情報で、ここにいるべきではないだろ。

384 :デフォルトの名無しさん:2020/08/22(土) 05:54:29.25 ID:H4y73psn.net
>>381
某大手メーカー系が何年も直せなかったマルチスレッドで起こしてるバグを小一時間で直してあげたことあるよw
(マルチスレッドで確率的に起きる事故はステップ実行で探せないから、勘が必要)

関数がスタティックかどうかと、処理がぶつかるどうかは無関係
組み込み関数を想像すれば分かるだろw

各スレッドがその関数に渡すインスタンスが別ならぶつからない
同じインスタンスの必要があるならシリアル化するだけ
そっちこそマルチスレッドの扱いが曖昧っぽいなw

385 :デフォルトの名無しさん:2020/08/22(土) 17:03:26.86 ID:fmjqBEq5.net
>>381
16年間どこの業界で何してきてたの君

386 :デフォルトの名無しさん:2020/08/22(土) 18:46:30 ID:hdxSNQ+Y.net
>“foo”.length はまたややこしい話で
>実装はスタティック関数ってこともある(C#の拡張関数)
>これは間違いなく生産性高い
>むしろそこからスタティック関数の方が生産性高いのではという発想
このあたり失笑なんだけど
こんなちっちゃい部分にクローズアップして生産性を語られても

387 :デフォルトの名無しさん:2020/08/22(土) 18:53:23 ID:hdxSNQ+Y.net
しかも"foo".length()が実装はスタティック関数なのは
C#が提供してる拡張方法がそうなってるだけで
データと処理を紐づけてるのはオブジェクト指向そのものじゃないか

388 :デフォルトの名無しさん:2020/08/23(日) 00:21:55 ID:eNcX4Z1l.net
オブジェクト指向とはオーバーロードである。

ってことも無いのでは?

389 :デフォルトの名無しさん:2020/08/23(日) 01:11:38.44 ID:Gvt1TzeD.net
オブジェクト指向=○○ではなくて、
オブジェクト指向はいろんな課題を解決するための
テクニックを詰め込んだ言語
イコールで何かと結びつくものではない
結びついたらオブジェクト指向という必要がないだろ

390 :デフォルトの名無しさん:2020/08/23(日) 01:13:25.91 ID:HeDyBrKq.net
>>389
ゴミクズ

391 :デフォルトの名無しさん:2020/08/23(日) 01:15:10.85 ID:Gvt1TzeD.net
クリティカルヒットしてしまったっぽいw

392 :デフォルトの名無しさん:2020/08/23(日) 01:32:09.38 ID:+aN5WY/b.net
いや、そもそもオブジェクト指向だろうが関数型だろうが便利ならなんでもいいけど
関数型のほうがすべてにおいて優れてるって言いたいという動機ありきで
都合のいい話をでっち上げてるとしか思えない
全体的に根拠がふわふわしてるんだよ

393 :デフォルトの名無しさん:2020/08/23(日) 01:49:35.65 ID:+aN5WY/b.net
こんなふわふわした論理を積み重ねちゃう感じで
本当にプログラムがかけるのかも疑問

394 :デフォルトの名無しさん:2020/08/23(日) 01:49:53.43 ID:Gvt1TzeD.net
>>392
そのとおり

私は状態がない世界に住んでいる
私の世界では引数と戻り値だけで表現できる
状態がない世界では関数型が一番

こういう理屈

現実はたくさんの状態がある世界
たくさんの状態をどうやって管理するか?が難しい
そこに架空の世界を持ってきたって意味がない

395 :デフォルトの名無しさん:2020/08/23(日) 01:50:15.25 ID:rOaea7BL.net
>>386
プログラミングの生産性は地味でちっちゃいことの積み重ね
管理職やアプリコンサルやその他ペテン師は大きいことを言いたがるから、
多大なコストをかけてマイナンバーカードを作っておいて、未だに当たり前のデータ連携ができておらず、相変わらず無駄な申請

もしくは、ついでに出てきたものに対するついでの返信でしかないものを、「クローズアップ」とする解釈の方が大げさ

>>387
その機能は、あるクラスオブジェクト指向言語、が持ってるのだが、コーディングはスタティックなコストで済む
どの言語を選ぶべきかという話ではなく、どんなコーディングをすべきか、という話
または、いい機能なので他の言語にも付けてね、っていう願望

メソッド風に出てくるのは書式の違いであって、本質的に括弧と違わない
スタティックだと言ってるんだから仕様的にも裏切っちゃいけないし
宣言は length( this string s ) で普通の関数と同じく括弧の中に呼び出し元がある(ちょっと気持ち悪いが)

396 :デフォルトの名無しさん:2020/08/23(日) 14:03:19.82 ID:OgLdxADB.net
馬鹿はオブジェクト指向にかぶれるくらいなら関数型にかぶれてる方がまだ扱いが楽。
モジュール分割へたくそなくせにオブジェクト指向にかぶれるとほんま手に負えんモンスターになるから。

397 :デフォルトの名無しさん:2020/08/23(日) 14:24:19.29 ID:mH2YjVlt.net
>>396
人間の話なんてどうでもいいんですよ
技術の話をしなさい

398 :デフォルトの名無しさん:2020/08/23(日) 19:35:46 ID:FOCNZ4Ko.net
staticが技術的な話なのか。
C++をbetter Cとして使ってくれてればいいよ。
C++使ってんのにどうしてOOPじゃないんだ、とか言わないからさ^^

399 :デフォルトの名無しさん:2020/08/23(日) 19:39:10 ID:a/7Z84eB.net
スタティック関数っていってるの多分javaのスタティックメソッドの方だと思うよ

400 :デフォルトの名無しさん:2020/08/23(日) 19:41:19 ID:eNcX4Z1l.net
オブジェクト指向から関数型へは、ある程度発想の転換が必要なんだろな。

スレの子たちは転換できてないな。

オブジェクト指向で設計できないから関数型では出来ないというが、そもそもオブジェクト指向の必要が無いのだが。

401 :デフォルトの名無しさん:2020/08/23(日) 20:08:07.34 ID:ij+CyHSL.net
C++をbetter Cとか言う奴は
C++もCも両方ニワカである

402 :デフォルトの名無しさん:2020/08/23(日) 20:22:19 ID:mH2YjVlt.net
>>400
> オブジェクト指向から関数型へは、ある程度発想の転換が必要なんだろな。
必要なのは発想の転換じゃなくて実装サンプルだよ
多数の状態を持つボタンのようなものをどうすればシンプルに実装できるか
その実装サンプルがどこにもないから関数型には無理なんだなってことになってる

403 :デフォルトの名無しさん:2020/08/23(日) 20:25:02.95 ID:eq+oHtYe.net
そもそもオブジェクト指向について、関数型について
きちんと説明できる人っているんだろうか

みんな、なんとなくこういうもの、というイメージしか
持てないでいるんじゃなかろうか

404 :デフォルトの名無しさん:2020/08/23(日) 21:08:28.39 ID:xAXFDUuo.net
>>403
関数型についてはごく小さな例だけをあげて、だから関数型は素晴らしい、といってるのしか見たことないな
自分が書いたのでなくてもいいからだいきぼなプログラムを関数型でうまく書いたという事例があれば見てみたい

405 :デフォルトの名無しさん:2020/08/23(日) 21:12:08.32 ID:OV89sKi5.net
カプセル化だけではなくオブジェクト指向自体が時代遅れ

スタートアップである弊社が全員ほぼ未経験でRuby on RailsをScalaに移行した理由、その効果と苦労点 - Qiita
https://qiita.com/sonken625/items/d5d0f3b8d794e06489bd

406 :デフォルトの名無しさん:2020/08/23(日) 21:13:29.31 ID:WHl934bN.net
>>402
>多数の状態を持つボタン

もう少し要件が明確にしてくれる?

407 :デフォルトの名無しさん:2020/08/23(日) 21:33:12.94 ID:+aN5WY/b.net
>カプセル化だけではなくオブジェクト指向自体が時代遅れ
といいながらScalaを例に出してるけど
「Scala(スカラ、SKAH-lah)はオブジェクト指向言語と関数型言語の特徴を統合した
マルチパラダイムのプログラミング言語である。」by wikipedia
オブジェクト指向も含んでるしもう何が言いたいのか

408 :デフォルトの名無しさん:2020/08/23(日) 21:36:35.20 ID:+aN5WY/b.net
HaskellではMonadで状態というか状態遷移を表現するらしいけど
関数型推しにはそれがどういう実装になるのか例を示してほしいね

409 :デフォルトの名無しさん:2020/08/23(日) 21:45:01.92 ID:eNcX4Z1l.net
そんな頼み方で教えてもらえると思ってることに驚いた。

410 :デフォルトの名無しさん:2020/08/23(日) 21:49:05.95 ID:+aN5WY/b.net
関数型の利点を主張する割にここまで具体的な情報が一つもでてきてない
それともエアプだからわからないとか・・・?!

411 :デフォルトの名無しさん:2020/08/23(日) 21:49:46.52 ID:jaDomWgN.net
>>409
愚図々々せずにさっさと教えて欲しいね

412 :デフォルトの名無しさん:2020/08/23(日) 21:50:06.36 ID:+aN5WY/b.net
無能ほど偉そうなんだよなぁ

413 :デフォルトの名無しさん:2020/08/23(日) 22:36:25.12 ID:PvvBVKTl.net
>>406
要件?HTML(DOM)のボタンでいいよ

https://www.w3schools.com/jsref/dom_obj_button.asp
プロパティ一覧
autofocus
defaultValue
disabled
form
name
type
value

ボタンを作ったら、これだけの情報が初期化されて
作ったボタンからこれだけの情報を取得することも出来る
本当はスタイルもあるからもっと多いけどね

414 :デフォルトの名無しさん:2020/08/23(日) 22:46:04.13 ID:eNcX4Z1l.net
ベクトル化の概念が抜け落ちてるんだろうけど。

説明しろと言われても、自分で勉強しろとしか。

415 :デフォルトの名無しさん:2020/08/23(日) 22:49:28.19 ID:PvvBVKTl.net
関数型言語

button = CreateButton({name: "名前", type: "submit"})
// buttonは連想配列 {name: "名前", type: "submit"}
print(button["name"])


オブジェクト指向

button = CreateButton({name: "名前", type: "submit"})
// buttonはオブジェクト
print(button.name)

こんな感じっすかね?w

416 :デフォルトの名無しさん:2020/08/23(日) 22:53:17.20 ID:eNcX4Z1l.net
ボタンの「作成」と言ってるところにセンスの悪さを感じるというか。

きちんと説明してやろうという気力が失せるんだよな。

どうせコイツじゃわかんねーだろうっていう。

417 :デフォルトの名無しさん:2020/08/23(日) 22:54:20.36 ID:RQFTaUls.net
じゃあボタンの「作成」以外でもいいよ
お前が好きなように言いたいことを言え
お前はまだ何も言ってない

418 :デフォルトの名無しさん:2020/08/23(日) 22:57:18.72 ID:RQFTaUls.net
関数型言語派は、「はぁ〜お前らわかってないんだよな〜」って言うのが目的なので
説明しろといわれたら、説明できなんだよなw
そのパターンばかり

419 :デフォルトの名無しさん:2020/08/23(日) 23:00:00.42 ID:HeDyBrKq.net
そもそもの前提からして意味分かんない
何がどうなることを目指してるの?
お互いに

420 :デフォルトの名無しさん:2020/08/23(日) 23:01:52.95 ID:RQFTaUls.net
プログラミング言語の目的なんて
目的は動くものを(できるだけ簡潔に)作ることに決まってるだろ

421 :デフォルトの名無しさん:2020/08/23(日) 23:06:10 ID:RQFTaUls.net
俺今丁度、環境変数を扱うコード書いてるんだけどさ、

1. 環境変数を設定する
2. (確認のために)設定した環境変数を表示する
3. 環境変数を残したまま他のプログラムを実行する

これを関数型言語で書いてみて

422 :デフォルトの名無しさん:2020/08/23(日) 23:06:58 ID:RQFTaUls.net
これすごく簡単なことだと思うんだが、こういうのすら関数型言語では実装コードが出ないというねw

423 :デフォルトの名無しさん:2020/08/23(日) 23:10:12 ID:+aN5WY/b.net
このスレの流れは関数型狂信者がしつこくオブジェクト指向では駄目だと
根拠の薄い主張を繰り返し、具体的なことを聞くと煙に巻く
今の所、関数型推しはやべえ奴という印象しかない

424 :デフォルトの名無しさん:2020/08/23(日) 23:11:26 ID:HeDyBrKq.net
>>420
動くもの?
正しく動くものでしょう?
この「正しく」ってのが重要になると思うんだけど

425 :デフォルトの名無しさん:2020/08/23(日) 23:14:04 ID:+aN5WY/b.net
散々引っ張っといてこのざま

426 :デフォルトの名無しさん:2020/08/23(日) 23:14:19 ID:RQFTaUls.net
>>424
言葉遊びして言い訳はいらんよ
さっさとやれ

427 :デフォルトの名無しさん:2020/08/23(日) 23:17:02 ID:RQFTaUls.net
ソフトウェアというのは多数の「状態」をどうやって管理するかってことに尽きるんだが
関数型言語は「状態」が少ない場合はこれでうまくいくという話しかしない

多数の「状態」を管理する方法ではなくて、少数の「状態」を管理する方法しかいわない
多数の「状態」という問題の解決方法ではなく、問題をすり替えてる

428 :デフォルトの名無しさん:2020/08/23(日) 23:18:16 ID:eNcX4Z1l.net
愚かな奴らよ。

429 :デフォルトの名無しさん:2020/08/23(日) 23:23:57.75 ID:HeDyBrKq.net
正しく動くこととオブジェクト指向になんの繋がりがあるの?

430 :デフォルトの名無しさん:2020/08/23(日) 23:26:10.56 ID:RQFTaUls.net
関数型言語にとっては正しく動くことが課題なので・・・
バグばかり

431 :デフォルトの名無しさん:2020/08/23(日) 23:26:16.73 ID:+aN5WY/b.net
まじでろくなやついないな
関数型を嫌う理由として十分だわ

432 :デフォルトの名無しさん:2020/08/23(日) 23:27:32.42 ID:RQFTaUls.net
さあ、まだ関数型言語での実装コードは出ないぞ!

433 :デフォルトの名無しさん:2020/08/23(日) 23:33:01.07 ID:HeDyBrKq.net
>>432
お前もコード見て何がどうなってることを確認したいの?

434 :デフォルトの名無しさん:2020/08/23(日) 23:35:24.15 ID:RQFTaUls.net
>>433
どれくらいの複雑さになるかを確認したい

435 :デフォルトの名無しさん:2020/08/23(日) 23:36:04.55 ID:+aN5WY/b.net
簡単なコードなんだからぐずぐずせず
さっと出したほうが早いのに
言い訳してるってことはエアプか

436 :デフォルトの名無しさん:2020/08/23(日) 23:36:18.75 ID:HeDyBrKq.net
結局、何もかも前提がない

いいソースとはどういうソースを言うの?

っていう単純な前提がないから
全てにおいて結論が出せない
十年以上もコード組んでるくせに
こんなこともわからない時点で
そんなに能力高くないんだよお前ら

437 :デフォルトの名無しさん:2020/08/23(日) 23:36:38.11 ID:HeDyBrKq.net
>>434
複雑さの定義は?

438 :デフォルトの名無しさん:2020/08/23(日) 23:36:52.33 ID:RQFTaUls.net
>>437
コードを見ればわかる

439 :デフォルトの名無しさん:2020/08/23(日) 23:37:20.11 ID:RQFTaUls.net
いい悪いを議論する前に、まずコードを出さないと意味がない
動くコードを出しましょう

440 :デフォルトの名無しさん:2020/08/23(日) 23:37:36.34 ID:+aN5WY/b.net
>いいソースとはどういうソースを言うの?
初心者みたいな質問出たぞ

441 :デフォルトの名無しさん:2020/08/23(日) 23:37:45.06 ID:tmHqRGVP.net
必死で逃げててワロ

442 :デフォルトの名無しさん:2020/08/23(日) 23:38:28.03 ID:HeDyBrKq.net
>>438
だからコードの何を見るん?

443 :デフォルトの名無しさん:2020/08/23(日) 23:39:45.71 ID:RQFTaUls.net
>>442
関数型のコード例

444 :デフォルトの名無しさん:2020/08/23(日) 23:41:36.66 ID:HeDyBrKq.net
もし、コードで判断をするなら全く同じ処理を記述した
方式Aと方式Bの両方が必要になるはずなのにそれも用意しようとせず
片方だけ集めたってしょうがねぇだろバーカ

お前のソースなんてみる必要すらない

445 :デフォルトの名無しさん:2020/08/23(日) 23:42:18 ID:+aN5WY/b.net
public staticくん

446 :デフォルトの名無しさん:2020/08/23(日) 23:43:26 ID:a/7Z84eB.net
関数型言語をなんか勘違いしてない?

447 :デフォルトの名無しさん:2020/08/23(日) 23:43:36 ID:RQFTaUls.net
>>444
> 1. 環境変数を設定する
> 2. (確認のために)設定した環境変数を表示する
> 3. 環境変数を残したまま他のプログラムを実行する
>
> これを関数型言語で書いてみて


ENV["FOO"]=123
print(ENV["FOO"])
system("bar.exe")

448 :デフォルトの名無しさん:2020/08/23(日) 23:43:50 ID:HeDyBrKq.net
そもそもまともな思考ができてねーじゃん
本当にその程度でプログラム組めてるのかよ
恥を知れバーカ

449 :デフォルトの名無しさん:2020/08/23(日) 23:44:56.07 ID:+aN5WY/b.net
>>448 お前がなw

450 :デフォルトの名無しさん:2020/08/23(日) 23:46:21.56 ID:RQFTaUls.net
>>444

>>447で関数型ではない状態を変更するコードを書いた
関数型はまだでないのか?

451 :デフォルトの名無しさん:2020/08/24(月) 00:20:14.32 ID:VfgDhYHP.net
>>413
それら全部状態って呼ぶのかぁ
とりあえず言いたいことは理解した

elmのチュートリアル1ページ目のサンプルコードで
HTMLのボタンも作ってるから見てみるといいよ
https://guide.elm-lang.org/

452 :デフォルトの名無しさん:2020/08/24(月) 01:27:13.84 ID:nvJPtqaW.net
モチツケ
https://i.imgur.com/ZtPP1P0.jpg

453 :デフォルトの名無しさん:2020/08/24(月) 03:43:12.52 ID:ePkGqGTS.net
インスタンスの代わりに、連想配列を受け取って連想配列を返す
それが関数型

状態はメンバ変数の代わりに、連想配列に入っている


連想配列.メソッド(); これがオブジェクト指向で
関数(連想配列); これが関数型

ということでOK?

454 :デフォルトの名無しさん:2020/08/24(月) 14:43:56.73 ID:lWuWtpGZ.net
そもそも、時間の流れがある≒刻一刻と状態が変わる、というパラダイムがある

例えば3Dアクションの全てが四次元プログラミングになる
x,y,z,tの四変数が必要になる

GUIは三次元プログラミングで、x,y,tの三変数が必要になる

未来がどーなるかは分からん、ってのがダイナミック、
一度決めたら未来永劫変わらない、ってのがスタティック

455 :デフォルトの名無しさん:2020/08/24(月) 16:21:03.36 ID:uvJBs23t.net
え?実行中に変えるの?

456 :デフォルトの名無しさん:2020/08/24(月) 17:04:36.25 ID:jN2NYQ9A.net
>>453
違います

457 :デフォルトの名無しさん:2020/08/24(月) 18:30:41 ID:uvJBs23t.net
メリットが全然わからんのよな

458 :デフォルトの名無しさん:2020/08/24(月) 18:34:32 ID:9GBeU53A.net
>>456
違いません。

という反論で十分やなぁ
理由も言わないお前に対してはw

459 :デフォルトの名無しさん:2020/08/24(月) 20:26:10.91 ID:g9Wmq8dv.net
いちいち理由を説明してもらえるのは小学生までやろな

自分で学ばないやつは数十年前にオブジェクト指向理解できなくて既存のパラダイムに囚われてた老害たちと同じ道を辿る

460 :デフォルトの名無しさん:2020/08/24(月) 21:48:58 ID:HcNsafA/.net
関数型とかw

461 :デフォルトの名無しさん:2020/08/24(月) 21:56:58.62 ID:Um3NUpro.net
愚かなり。

462 :デフォルトの名無しさん:2020/08/24(月) 22:09:11 ID:uvJBs23t.net
>>459
俺なんかそれ怪しいと思ってるんだよね
オブジェクト指向ってどこをどう探してもメリットねぇよコレ
何でこんなもん広めたんだ?
俺これのおかげでソフトウェア業界何十年停滞したかわかんねぇぞって思ってる

463 :デフォルトの名無しさん:2020/08/24(月) 22:13:42 ID:Um3NUpro.net
一つのコンピュータ内に複数のプロセッサがある状況になって、俄然関数型が注目されるわけです。

しかし関数型には、数学的思考力が無いと使い方がわかりづらいという欠点があります。

オブジェクト指向でさえパターンを提唱した人たちがいるのです。

世間を侮ってはいけません。
あなたが思うよりずっと低能です。

464 :デフォルトの名無しさん:2020/08/24(月) 23:03:49.96 ID:Um3NUpro.net
コンピュータは電子計算機なので、関数型は非常に素直なアプローチです。

465 :デフォルトの名無しさん:2020/08/25(火) 00:06:02.99 ID:1TkiLLpa.net
>>462
ずーっと昔はグローバル変数丸出しで
モジュール間の結合度が高すぎて、
既存コードの保守が難しくなった。

既存コードの保守をしやすくする為に、
モジュール間の結合度を下げよう、
カプセル化してモジュール間のインタフェイスを
最小限にしようという機運が高まった。
そこで出てきたのがオブジェクト指向。

計算機科学は発展途上だから完璧なものは未だ無いよ。
有るのは「よりマシなもの」だけ。
文句を言うのは自由だけど、賢い人はそれを
チャンスと捉える。

466 :デフォルトの名無しさん:2020/08/25(火) 00:41:02.89 ID:+asFNcyT.net
個人的には関数型に大いに興味があるし、勉強もしてみたいと思っているが、一般的には>>464とは逆の理解の方が一般的なのでは? 
電子計算機であることと関数型のメリットがどう結び付くのかよくわからないが。

467 :デフォルトの名無しさん:2020/08/25(火) 01:03:47.54 ID:OVVmNr3I.net
>>465
オブジェクト指向のビジネス的な成功理由は
メリットがないことで弱点がないってことかな
メリットがあればみんな当然そこを挫きに来るし
もっといいモノを見つけて来るだろう
メリットが無ければそのアプローチで挑むことはできない

そんなくだらないアプローチが通ってしまうほど技術者が劣化してしまっていたことも原因の一つだと思う

資本主義のセーフティが全く働いていない
より良いものを使用者が選択できる選択肢は無く
どこもかしこも全く余裕がなく世界中でMSの提供物を使うしかなかった
そこまで世界が劣化してしまった結果として生まれた悲劇だと思う
二十年?三十年近くプログラミング言語は何も進化しなかった
これは大き過ぎる失策だったと思う

468 :デフォルトの名無しさん:2020/08/25(火) 01:18:33.72 ID:udMwTrr2.net
CでADT書いてみればオブジェクト指向の利便性がわかるよ
オブジェクトはADTの延長線にあるものだから

流行ったのはGUIを実現するにあたっての現実な解だったからだろうね

469 :デフォルトの名無しさん:2020/08/25(火) 01:33:38.55 ID:fuDvWy3W.net
>>459
オブジェクト指向の方が優れているよ
理由はいちいち説明しないよw

470 :デフォルトの名無しさん:2020/08/25(火) 01:34:35.54 ID:fuDvWy3W.net
>>462
お前がオブジェクト指向のメリットが理解できないだけじゃね?
お前自信に問題があるって自覚しよう

471 :デフォルトの名無しさん:2020/08/25(火) 01:36:44.68 ID:fuDvWy3W.net
関数型言語の方が(ある点では)メリットが有るのは事実だが
オブジェクト指向にもメリットは有るわけで
それが理解できないのはセンスがない

オブジェクト指向にはメリットがあるが、関数型言語なら
それを上回るメリットが有るという言い方をするならわかるが
メリット自体がわからないんでしょう?

472 :デフォルトの名無しさん:2020/08/25(火) 02:08:54.58 ID:U8JRnYTu.net
オブジェクト指向のメリットと謳われていたものはすべてデメリットだったんだよ。

暗殺組織が「両親を殺したのはあいつらだ」と言って子供に殺人させるが、本当は両親を殺したのは暗殺組織みたいな。

もっとも邪悪なのは階層化だろうな。

473 :デフォルトの名無しさん:2020/08/25(火) 02:37:14.24 ID:fuDvWy3W.net
> オブジェクト指向のメリットと謳われていたものはすべてデメリットだったんだよ。

じゃあそのメリットというものをすべて言ってみてください
それがデメリットかどうか語るのはそれからですね

474 :デフォルトの名無しさん:2020/08/25(火) 02:46:05 ID:U8JRnYTu.net
Microsoftから関数型OSが出るかもしれんな。

出せなければMicrosoftは終わりだろ。

475 :デフォルトの名無しさん:2020/08/25(火) 03:49:49.16 ID:fuDvWy3W.net
じゃあ俺はMicorosoftどころか、Apple、Googleも含めて
関数型OSなんてのは登場せず、終りもしない方に掛けるわw
少なくとも100年以上安泰だろうな

でお前はMicrosoftはいつまでに終わると思う?
終わると言っては見たものの、すぐには終わりそうもないから
100年後には終わってるはずだーとか言う?w


なんかぐぐってみたらNixOSとかいうのが純関数型OSとか書いてあるの見つけて調べてみたら
たんにパッケージマネージャーが関数型(というより宣言的記述で使えるだけ?)みたいでワロタ
お前が言う関数型OSっていうのもこういう意味?w

https://www.atmarkit.co.jp/news/200902/17/nixos.html
> もう1つ、最近私が気になっている実験的OSは“純関数型”を標榜する「NixOS」だ。
>これもLinux上に構築したシステムで、本来の意味でのOSとは違うのだが、
>ユーザーが利用するシステムが抱えている課題を解決しようとしているという意味では
>OSと呼んでもいいと思う。NixOSの公式ページには純関数型ディストリビューションと書いてある。

476 :デフォルトの名無しさん:2020/08/25(火) 07:10:53.76 ID:DynTdfXH.net
なんで「関数型」が「オブジェクト指向」の対義語になってるのか
「関数」なら分かるけど
「関数型」(宣言型)は「手続型」の対義語だよね(あまりにかけ離れてるので親階層で対義語)
「手続型」の「関数」は「関数指向」と言えばいいのかなw

・手続型(命令型)
 ・コマンド型
 ・関数指向
 ・オブジェクト指向
  ・メッセージ型 ←これも関数指向
  ・クラス型
・宣言型
 ・関数型
 ・構造型(SQL)

しかも「関数型」は反「カプセル化」でもないし
本来はループ処理しなきゃ実現できないものを、むしろ隠蔽しちゃうでしょ
SQLもそうだけど(SQLはループじゃなく並列処理だけど)
値1つ1つの変遷をステップ実行で確認できず、手続脳な人には意味が分かりにくい
「関数型」を希望した人はそれが邪魔だってわけだけど

477 :デフォルトの名無しさん:2020/08/25(火) 07:24:06.19 ID:DynTdfXH.net
OSについては、SQLの発想はありだと思う
既にWMIで一部SQLのようなもので操作できるけど

フォルダやレジストリを全検索すると、物凄い時間かかるじゃん
DBなら一瞬なのに
なのでOS自体がDBでできてればなとは思う
縦横無尽に検索したり更新したりできる
メーカーの中の人も影響関係を瞬時に正確に把握でき、バグ率も下がると思う

システムログに物凄い書式のXML使ってるけど、無駄が多過ぎる
肝心な条件で絞れないし
DB形式の2次元では階層表現できないということなんだろうけど、
2次元でも複数のテーブルに分ければいくらでも多次元にできるし、
検索も速いし、分かりやすいし、二次加工しやすい

Webについては最近はJSONとか?
XMLよりはマシだけど、やはりDB形式より無駄が多い

「関数型OS」とかわけわからんけど、XMLと似た危険な香りがする
なぜ人はDB形式以外に挑戦するのか

478 :デフォルトの名無しさん:2020/08/25(火) 07:56:10.50 ID:qpVxWgT6.net
>>476
オブジェクト指向にとって関数型は対義語じゃないよ
だけど関数型にとってオブジェクト指向は対義語
なぜなら関数型は極めると純粋関数型言語に向かうから

オブジェクト指向にとって関数型は取り入れるもの。便利な部分をつまみ食い
だけど純粋関数型言語にとってオブジェクト指向は純粋関数型言語ではない

479 :デフォルトの名無しさん:2020/08/25(火) 07:57:31.04 ID:qpVxWgT6.net
>>477
> フォルダやレジストリを全検索すると、物凄い時間かかるじゃん
> DBなら一瞬なのに

インデックスが張られてないDBは検索がものすごく遅い
全件検索するから

つまり、速いか遅いかはインデックスがあるかどうかでしかない

480 :デフォルトの名無しさん:2020/08/25(火) 08:01:41.39 ID:qpVxWgT6.net
>>477
どうせあれの話をしてるんだろうけど、
Microsoftから学んだほうが良いよ
ファイル検索をSQLでできるようにしたと
大々的に発表したけど結局搭載するのをやめた

時間がなかったわけじゃない。だって随分と前の話で
本当にやる気があるなら、次期バージョンで搭載にしてたはず

つまりMicrosoftという技術力の高い会社が
「発想は面白かったが実際にやってみたら意味がなかった」
と判断したんだから

481 :デフォルトの名無しさん:2020/08/25(火) 08:04:32.16 ID:DynTdfXH.net
>>479
インデックスなんて大したことないよ
(最近は結構差が出る場合があるけど、わざとじゃないかとw)
DBの速さはデータ形式の単純さ、全行並列処理、ハードディスクの自前管理

482 :デフォルトの名無しさん:2020/08/25(火) 08:08:52.19 ID:DynTdfXH.net
>>480
まあ一般ユーザーは使わんわな
じゃなくて、内部的な設計思想の話

483 :デフォルトの名無しさん:2020/08/25(火) 08:15:35.41 ID:qpVxWgT6.net
>>481
検索はインデックスが全てです

484 :デフォルトの名無しさん:2020/08/25(火) 08:18:46.61 ID:qpVxWgT6.net
Googleの検索がめちゃくちゃ速い理由
https://logmi.jp/business/articles/234684

Googleのコンピューターも膨大な時間と努力を投入して
インデックスを作っていますが、その努力の甲斐があるというものです。
インデックスによって劇的に検索スピードが上がり、毎秒、約40,000件もの検索にGoogleは答えているのです。

485 :デフォルトの名無しさん:2020/08/25(火) 08:38:05.59 ID:d88THs21.net
ここはオブジェクト指向すら理解できない老害の教育の場かな?

486 :デフォルトの名無しさん:2020/08/25(火) 09:03:39.44 ID:+ObH0gCT.net
>>482
>内部的な設計思想

それがWinFSだったんだけど

https://www.itmedia.co.jp/enterprise/articles/0607/18/news010.html

データは複数のデータベース(またはデータストア)に保存され、WinFSはこれらのストアとファイルシステム間でデータの同期を効率よく実行する。
また、連絡先や予定表アイテム、電子メールなど、一般的に使用される類のデータの標準のプロパティスキーマも提供する予定だった。
WinFSが実現されていれば、ファイルの検索や整理機能の向上、および特定の種類のデータ
(連絡先や予定表のイベントなど)の共有を共通スキーマにより簡素化する相互運用性の向上などが期待できた。

487 :デフォルトの名無しさん:2020/08/25(火) 09:32:10.77 ID:1MKRoGus.net
>>486
そして実験的に実装したけど、結局速い検索ならインデックス作るだけでよくね?となったんだよね

488 :デフォルトの名無しさん:2020/08/25(火) 09:33:14.13 ID:1MKRoGus.net
特定のプロパティで検索するのも、プロパティをインデックスすればいいだけだしね

489 :デフォルトの名無しさん:2020/08/25(火) 10:38:19 ID:ILy/WoQ4.net
GUI用の概念を別用途に持ち込んだから今の混乱がある

490 :デフォルトの名無しさん:2020/08/25(火) 10:44:00.33 ID:8u+D4Xfy.net
アップルのデスクトップアイコン?

491 :デフォルトの名無しさん:2020/08/25(火) 10:45:31.68 ID:8F6lcUT7.net
>>478
純粋関数型以外の関数型言語(関数型をベースにしつつオブジェクト指向の機能を付け加えた言語等)も人気があるから、「関数型は極めると純粋関数型に向かう」というのは語弊があるような。
結局今は、純粋なオブジェクト指向を出発点にするにせよ、純粋な関数型を出発点にするにせよ、他方の良い点ををうまく取り込み、バランスを取ることを目指すアプローチが多いんだろう。

492 :デフォルトの名無しさん:2020/08/25(火) 12:06:50 ID:d4ZTtTef.net
手続き型でしょ
関数型とは言わない

493 :デフォルトの名無しさん:2020/08/25(火) 12:46:58.36 ID:4v9mLqYW.net
結局、ドキュメント無くても把握できるにはどうすればいいか。あたりが一般的なメリットで、
それを推し進めると、制約や挙動が保証されるものになり
結果、オブジェクトの不完全さが目立って、
関数型がもてはやされるみたいな。

でも、できる人間なら言語の不完全さは乗り越えていくんだよな。

494 :デフォルトの名無しさん:2020/08/25(火) 13:13:20.85 ID:8F6lcUT7.net
「純粋関数型に非ずんば関数型に非ず」という原理主義的な人は、決して多数派ではないと思うけどなぁ。
自分も関数型言語についての知識はあまりないが、たとえばF#(OCaml)は手続型ではなく、関数型言語として紹介されることの方が圧倒的に多いと思う。

495 :デフォルトの名無しさん:2020/08/25(火) 14:23:14.32 ID:qvclnJmh.net
>>493
ドキュメントなくても〜から関数型に全く話がつながってない
関数型ならドキュメントなくても〜とか言ってるやつは一人もいないだろ

496 :デフォルトの名無しさん:2020/08/25(火) 14:24:37.23 ID:qvclnJmh.net
>>494
結局の所、みんな関数型には限界があるって知ってるんだよね
理論的な限界じゃなくて、理論的には可能なんだろうけど
手間が多くて面倒でとてもやってられなくなる場面が多い

497 :デフォルトの名無しさん:2020/08/25(火) 21:16:52.01 ID:v1cYVdvk.net
メッセージングとは、オブジェクト同士の二人称対話なのだ!

>>155
>オブジェクト指向のコア概念メッセージングがなぜ提唱されたか察するに

928 デフォルトの名無しさん 2018/11/21(水) 18:59:11.61 ID:8Yc2p7H1
>>922
>ナンチャッテメッセージングスタイルになったのは

チンポ.オシッコを出す
チンポ.オシッコを止める

さっきトイレでやってきた。


929 デフォルトの名無しさん 2018/11/21(水) 19:07:17.83 ID:8Yc2p7H1
>>915
>単なる動的なメソッド呼び出しをメッセージと称し、ただしコールするメソッドが見つからない場合だけメッセージを
>ハンドリングできる省コストなナンチャッテメッセージングスタイルに落ち着いた。

×
俺.オシッコを止める 俺.オシッコを出す

俺.チンポに力を入れる 俺.チンポから力を抜く

498 :デフォルトの名無しさん:2020/08/25(火) 21:57:54.05 ID:v1cYVdvk.net
ところで「チンポがシコシコする」という日本語表現は、文法的に正しいのか?

チンポ「を」シコシコするのではなくて、チンポ「が」シコシコする。この場合、「チンポ」は主語となる。

オブジェクト指向で言う「集約」は2種類あって、全体(俺)と部分(チンポ)が繋がっている場合と、
全体(俺)と部分(チンポ)が別々になっている場合とが考えられる。けれども「チンポ」はそれ自体
が独立した生き物であり、所有者の意思とは無関係に、勃起して「シコシコする」。
例えば寝てる時にエロい夢みて朝起きてみたらチンコが勃起して射精してたとか。

違うか?

「胸がドキドキする」は良いが、「チンポがシコシコする」はダメな理由を、50字以内で述べろ!

499 :デフォルトの名無しさん:2020/08/25(火) 22:54:13.29 ID:U8JRnYTu.net
ヒント:随意運動。

9文字。

500 :デフォルトの名無しさん:2020/08/25(火) 22:55:10.13 ID:U8JRnYTu.net
ヒント:下半身は別人格。

裁判で判例があります。

501 :デフォルトの名無しさん:2020/08/26(水) 01:39:53 ID:SGuLbFai.net
ttps://video.twimg.com/ext_tw_video/1296548685300396032/pu/vid/960x720/Tt9Hj_acNH_uHS6Y.mp4?tag=10

502 :デフォルトの名無しさん:2020/08/26(水) 02:05:56.58 ID:4xdL/BMO.net
>>483
そういうペテン師に合わせて最近のバージョンはたまにインデックスが効く罠が仕込んであるのかなw
あるバージョン以降は、妙に遅いことがあって、解析すると、ここにインデックスを貼れと
貼ると、従来の速さに近付く
速くなるわけじゃなく、元に戻るだけw
(バッファオーバーラン防止のためにタイプセーフ対応したとの情報もちらっと見た気がするので、そのせいかもしれない)
にしてもその差はそれほど大きくない

インデックスの威力がメインなら、BULK INSERTや一時テーブルの速さを説明できない
これを使って、1時間の取り込みを数秒に短縮とか、あちこちで改善してきたので
この差はインデックスの有無を遥かに超える差

503 :デフォルトの名無しさん:2020/08/26(水) 02:18:05.05 ID:4xdL/BMO.net
>>486
>既存のツールで有用な結果が得られるのに、わざわざ追加情報を設定して
>ファイルにタグを付ける必要があるだろうかという疑問が生まれることになった。

ああ現実主義でいいんじゃないかな
「発想は面白かったが実際にやってみたら意味がなかった」
ではないよ

>データベース内のテーブルとファイルシステム内のファイルを同期する機能は、SQL Serverの次期バージョンに組み込まれる予定だ。
>汎用OSサービスとなるはずだったものがSQL Serverの1機能として提供されることになる

いきなりスクラッチビルドな高い理想を目指すのではなく、徐々にってことだ
ここでは直近の現実について話してるわけじゃないから

実際Win10でも「Windows へようこそ」をオフにしても出てくるとかw
俺が言ってるのは検索だけじゃなくて、中の人のバグ率や、機能整理の意味もある

504 :デフォルトの名無しさん:2020/08/26(水) 02:25:15 ID:gA2PDNl8.net
>>502
> インデックスの威力がメインなら、BULK INSERTや一時テーブルの速さを説明できない

え?説明できないの?それお前が無知なだけじゃん。

1. インデックスは検索に使うものでインサート時には関係ない
むしろインデックス作成のために逆に時間がかかる
BULK INSERTでは一件ごとにインデックスを貼る処理を行うと時間がかかるので
インデックスは貼らずにデータを挿入し、あとからインデックスをつけるのは常識レベルのテクニック

2. 一時テーブルだからといって速いことにはならないが、それで速くなったとするなら
一時テーブルによってデータ量が減った。複雑なクエリーで無駄にデータを参照しているとそれが減ることがある
一時テーブルによってインデックスを(有効に)使える条件が揃った
などの理由だろう

アナライズとかしたことないだろ?そういう風にデータを参照しているかちゃんと調べろ
常識レベルのことを知らんとかアウトや
お前はなんかやったら速くなったといってるだけで、その理由を調べてもいない

505 :デフォルトの名無しさん:2020/08/26(水) 02:25:32 ID:4xdL/BMO.net
>>484
グーグルとローカルのDBシステムでは規模が違い過ぎるし、「インデックス」の意味もだいぶ違う
いろんな角度からの検索を想定したキーワードを事前に生成し、単純な比較でヒットするようにしてある
逆にそのロジックが邪魔で余計なものがヒットし過ぎるが
言葉を厳密にしても全然絞れない

506 :デフォルトの名無しさん:2020/08/26(水) 02:27:29 ID:gA2PDNl8.net
> グーグルとローカルのDBシステムでは規模が違い過ぎるし、「インデックス」の意味もだいぶ違う

その根拠は?(間違った)主張だけをしても支持は得られない

507 :デフォルトの名無しさん:2020/08/26(水) 02:35:11 ID:4xdL/BMO.net
>>504
>これを使って、1時間の取り込みを数秒に短縮とか、あちこちで改善してきたので

これが見えんのかねw
誰に向かって言ってるのか
「あちこちで」だ
さらに言うと「確実に」だ
まぐれではない

1.そんなことは知ってるが、ゆえに、インデックスがDBエンジンの速さの理由かね?
 (言っとくが、ファイルコピーより遥かに速い)

2.何を言ってるのか分からんw
 ちなみに説明を省略したが、1時間もかかる要件なので、一時テーブルから本テーブルへの
 INSERT SELECTは、腕の悪いSEには無理な複雑さになることもある
 そのFROM句が一時テーブルなのに速いと言ってるんだよ
 というかその他のストアドでも多用するが、速い

あるいは言い方を変えると、インデックスの効いてない状態での速さでも十分速いと言ってる
普通のシングルタスク処理や、OS関連に比べると、とてつもなく速い
という意味

508 :デフォルトの名無しさん:2020/08/26(水) 02:36:30 ID:4xdL/BMO.net
>>506
根拠はその後段に書いてあるはずだがw
まあ昔の記憶なので、ソースはないよ
雑談なので気楽に

509 :デフォルトの名無しさん:2020/08/26(水) 02:38:40.51 ID:gA2PDNl8.net
>  そのFROM句が一時テーブルなのに速いと言ってるんだよ

だからちゃんとアナライズしてどのようにデータを参照しているか調べましょうって
なにもしてないくせに、やってみたら速かったとか遅かったと素人かよw

510 :デフォルトの名無しさん:2020/08/26(水) 02:40:06 ID:gA2PDNl8.net
> (言っとくが、ファイルコピーより遥かに速い)

他人が検証できる方法とベンチマーク結果よろしく
主張だけしても説得力はない

511 :デフォルトの名無しさん:2020/08/26(水) 02:40:47 ID:gA2PDNl8.net
だいたいインデックスは検索にときに使われるといってるのに
ファイルコピーとか言ってる時点で頭悪いがw

512 :デフォルトの名無しさん:2020/08/26(水) 02:46:21.84 ID:4xdL/BMO.net
>>511
頭悪いな
取込処理がファイルコピーより遥かに速いんだよ
その理由は?
インデックスがないから?アホかw
インデックスがあるよりはない方が速いのは当たり前だが、ファイルコピーより速い理由は?

513 :デフォルトの名無しさん:2020/08/26(水) 02:47:55.44 ID:4xdL/BMO.net
>>510
それを言うならこのアホにだろw

483 名前:デフォルトの名無しさん 投稿日:2020/08/25(火) 08:15:35.41 qpVxWgT6
>>481
検索はインデックスが全てです

514 :デフォルトの名無しさん:2020/08/26(水) 02:48:05.51 ID:gA2PDNl8.net
>>512
まずファイルコピーより速いという証拠をだせと
話はそれからだろ

ウソを検証せずに話をすすめることで
事実であるかのように誤認させるテクニックは俺には通じない

515 :デフォルトの名無しさん:2020/08/26(水) 02:51:23.46 ID:4xdL/BMO.net
>>514
自分でやってみろ

516 :デフォルトの名無しさん:2020/08/26(水) 02:55:06 ID:oEB3gdtA.net
ストアドよりインデックスのほうが速いよってスレが無かったでしょうかね。

517 :デフォルトの名無しさん:2020/08/26(水) 02:57:46.43 ID:4xdL/BMO.net
ありがちなインデックス教を説得するのは本題ではない

イベントログを解析したことあるか?
特にファイル監査
なんだあの大量のゴミ
不信なアクセスにどうやって気付くんだ
物凄い工夫して視認できるバッチ作ったけど

あれを単純なCSVにするだけでも各方面生産性が随分高くなる

518 :デフォルトの名無しさん:2020/08/26(水) 02:57:58.67 ID:gA2PDNl8.net
>>515
やってみるから、お前がやったことをいえ、

1. RDBMS
2. OS、バージョン
3. ファイルサイズ
4. 挿入先テーブルのスキーマ

お前が何も言ってないんだから、出来るわけなねーだろ

519 :デフォルトの名無しさん:2020/08/26(水) 02:58:27.97 ID:gA2PDNl8.net
> イベントログを解析したことあるか?
> 特にファイル監査

データベースの話なののこれだからなぁ
素人じゃんw

520 :デフォルトの名無しさん:2020/08/26(水) 03:01:31 ID:oEB3gdtA.net
> そしたら「ストアドよりインデックスのほうが速いよ」って。(゚Д゚)ハァ?

521 :デフォルトの名無しさん:2020/08/26(水) 03:02:09 ID:4xdL/BMO.net
>>519
ニワカか
「データベースの話」ではない>>477
勝手に変えるな
「関数型OS」とかいう話が多く出てたから、「DB型OSは?」という、OSの話

522 :デフォルトの名無しさん:2020/08/26(水) 03:04:12.27 ID:gA2PDNl8.net
DB型OS?そんなことばどこから出てきたんだw
検索してもないな

523 :デフォルトの名無しさん:2020/08/26(水) 03:04:33.30 ID:4xdL/BMO.net
>>518
1.SQL Server
2.任意
3.数十MB
4.任意

524 :デフォルトの名無しさん:2020/08/26(水) 03:05:47.13 ID:oEB3gdtA.net
私は逆にOS型DBのほうが興味ありますね。

525 :デフォルトの名無しさん:2020/08/26(水) 03:07:11.25 ID:4xdL/BMO.net
>>522
>>477
> OSについては、SQLの発想はありだと思う
(中略)
> なのでOS自体がDBでできてればなとは思う

526 :デフォルトの名無しさん:2020/08/26(水) 03:10:39 ID:oEB3gdtA.net
イマジネーションの欠如が深刻なんですよ。

つまり、石頭です。

昔は頑固おやじに代表されるように、年よりが石頭だったんですが、最近は若者なんですよ。

頑固おやじというものは、経験に基づいて保守的になっていたものですが、若者の石頭は、イマジネーションの欠如によるものです。
教わったものしかわからない、新しいものを創造できない。

527 :デフォルトの名無しさん:2020/08/26(水) 03:11:54 ID:gA2PDNl8.net
OSがデーターベースで出来てるって意味不明w
プロセス管理はどうするんだ?
メモリ管理はどうするんだだ?

528 :デフォルトの名無しさん:2020/08/26(水) 03:13:47 ID:oEB3gdtA.net
プログラマはよく「ggrks」と言いますが、ネットで検索して何がわかりますか?

私の職業では、ネットで検索してわかることなどありません。
出てくるのは宣伝文句だけです。

プログラマは検索してわかるほど簡単なお仕事ですか?
だとしたら、新しいものは生み出せません。

きっと中国人は、検索でわかることなどないと言うでしょう。
だから新しいものはすべて中国からやってくるのです。

529 :デフォルトの名無しさん:2020/08/26(水) 03:17:12.45 ID:oEB3gdtA.net
最近はよく「エビデンスを示せ」なんて言いますよね。
彼らに示して理解できますか?

彼らが欲するのは文献ですが、文献の中身は一切理解できないでしょう。
違いますか?

それでも、文献を編纂する立場の者にでさえ、気軽にエビデンスを示せなどと言います。
あなたに示して何が変わると言うのでしょう?

530 :デフォルトの名無しさん:2020/08/26(水) 03:33:08 ID:oEB3gdtA.net
反論はありませんね。

DB型OSの良さが理解していただけたようで何よりです。

531 :デフォルトの名無しさん:2020/08/26(水) 06:04:43.21 ID:gA2PDNl8.net
まだデータベースのほうが速いって証拠だせないの?
一体どの環境だったらそうなるのかサッサ言えよ
DB型OSの意味もいわないしw
ねぇねぇプロセス管理は?メモリ管理は?

532 :デフォルトの名無しさん:2020/08/26(水) 07:10:05 ID:48xzUiDm.net
精神論ワロタ

533 :デフォルトの名無しさん:2020/08/26(水) 07:32:21 ID:y5BtOBTb.net
>>155
>オブジェクト指向のコア概念メッセージングがなぜ提唱されたか察するに

オブジェクト同士は常に二人称で、「俺」←対話(メッセージング)→「チンポ」。
つまりチンポは独立し自ら考えて行動する別の生き物なのである。

この考え方に至ってからは、オブジェクト指向の理解もすんなり進みました。
上手くオブジェクトを定義して、上手く会話させてやるのがオブジェクト指向
での設計なんだなーと今でも思っています。
https://blog.mah-lab.com/2014/03/18/object-oriented/

チンコの随意筋と不随意筋
http://d.hatena.ne.jp/tottokotokoroten/20130516/1368716650

<俺>
「 部屋の英子がこちらを向いた気配に、彼は勃○した陰○を外から障子に突きたてた。障子は乾いた音をたてて破れ、
それを見た英子は読んでいた本を力一杯障子にぶつけたのだ。本は見事、的に当って畳に落ちた。 」
<チンポ>
「 その瞬間、竜哉は体中が引き締まるような快感を感じた。彼は今、リングで感じるあのギラギラした、
抵抗される人間の喜びを味わったのだ。 」

まさに独立した人格を有したチンポという、もう一人の俺がそこに現れるのである!

【藤子・F・不二雄】「みきおとミキオ」現在と未来、憧れの入れ替わり生活!
https://www.google.com/amp/s/middle-edge.jp/articles/0izbO.amp

534 :デフォルトの名無しさん:2020/08/26(水) 07:54:58 ID:WbeMdUBd.net
DB ベースOSは、BeOSなど失敗の歴史。Windowsでもその計画は頓挫してる。

535 :デフォルトの名無しさん:2020/08/26(水) 08:00:09 ID:gA2PDNl8.net
頓挫と言うか試してみて良くなかったってことよね

536 :デフォルトの名無しさん:2020/08/26(水) 09:09:25.88 ID:3xqKZ5M9.net
ファイルシステムのデータ構造はB-Tree
B-TreeはDBのインデックスに使われるデータ構造
OSもDBも性能的には似たようなものじゃないかな
ファイル名にデータを格納するIsseiという伝説の検索システムを思い出した、DBより効率が良いとうたって叩かれていたなあ

537 :デフォルトの名無しさん:2020/08/26(水) 09:47:45.40 ID:sEb98ISo.net
>>497
洋式トイレに座ってオシッコを出したり止めたりする時、チンポがどうなっているかを確かめる必要無い。
つまりカプセル化とはオブジェクトの独立性であり、チンポはそれ自体が独立した生き物なのであると。

538 :デフォルトの名無しさん:2020/08/26(水) 09:53:35 ID:sEb98ISo.net
オブジェクト指向とは、「繋がっているけれども独立している」という意味である!

オシッコを出したり止めたりする時のチンポは繋がっているが、勃起する時のチンポは独立している!

違うか?

>>18
>オブジェクト思考って何?
>誰か説明して

では「チンポがシコシコする」という日本語表現は、文法的に正しいのか?

チンポ「を」シコシコするのではなくて、チンポ「が」シコシコする。この場合、「チンポ」は主語となる。

オブジェクト指向で言う「集約」は2種類あって、全体(俺)と部分(チンポ)が繋がっている場合と、
全体(俺)と部分(チンポ)が別々になっている場合とが考えられる。けれども「チンポ」はそれ自体
が独立した生き物であり、所有者の意思とは無関係に、勃起して「シコシコする」。
例えば寝てる時にエロい夢みて朝起きてみたらチンコが勃起して射精してたとか。

違うか?

「胸がドキドキする」は良いが、「チンポがシコシコする」はダメな理由を、50字以内で述べろ!

539 :デフォルトの名無しさん:2020/08/26(水) 10:01:20 ID:GbuOebwM.net
ちんぽがしこしこ、そんな言語表現あるのか?

クリントンの「不適切な関係」
https://eigo-kobako.blog.so-net.ne.jp/2008-06-21

不適切な関係、そんな言語表現あるのか?

クリントン大統領も、チンポがしこしこしてしまったのか?

ちんぽがしこしこしてしまったのが、不適切な関係なのか?

540 :デフォルトの名無しさん:2020/08/26(水) 10:02:48 ID:NYX2/iU2.net
// おしっこルーチン
俺.パンツを脱ぐ()
while (俺.オシッコ残量 != 0) {
俺.オシッコ残量 -= 俺.チンポ.オシッコを出す()
}
do {
俺.チンポフリフリする()
} while(count < MAX && 俺.残尿感())
俺.パンツを履く()

541 :デフォルトの名無しさん:2020/08/26(水) 10:34:17 ID:NYX2/iU2.net
問題はチンポがオシッコ残量を知らないことだ

542 :デフォルトの名無しさん:2020/08/26(水) 10:47:15 ID:4GZ9k+0t.net
>>540
>俺.チンポフリフリする()

「フリフリ」しているのは、腰であってチンポでは無いぞ?

腰をフリフリすると、慣性の法則で腰とは逆方向にチンポが動くということ。違うか?

543 :デフォルトの名無しさん:2020/08/26(水) 11:16:35.08 ID:goOahd89.net
>>536
>ファイルシステムのデータ構造はB-Tree

その比較はDBのレコード数分だけ1ディレクトリ内にファイルを作成して
それぞれの性能を比較することが前提になるんだけど
意味のある性能比較じゃないよね

544 :デフォルトの名無しさん:2020/08/26(水) 11:21:37.10 ID:rqf33yds.net
データベースに1GBものISOや動画を入れるのは遅い
まあ普通馬鹿げていてやらんがね

545 :デフォルトの名無しさん:2020/08/26(水) 12:22:26.28 ID:DZmLrOoQ.net
「オブジェクト指向」について解説!

>>88
>こういう認識の齟齬を生みやすいこと自体が
>オブジェクト指向の欠陥
>まず分かりにくい思想があって
>その思想の解釈が人によってバラバラで

オブジェクト指向とは、繋がっているけれども独立しているということ。
例えばチンポは自分の体の一部であっても、チンポは自ら考え自分の意志で勃起してシコシコする。

546 :デフォルトの名無しさん:2020/08/26(水) 12:26:25.27 ID:DZmLrOoQ.net
>>491
>純粋関数型以外の関数型言語(関数型をベースにしつつオブジェクト指向の機能を付け加えた言語等)も人気

オシッコの時のチンポは関数型、勃起や射精のときのチンポはオブジェクト指向、違うか?

547 :デフォルトの名無しさん:2020/08/26(水) 12:31:11.46 ID:nY6YdJgd.net
>>476
> ・オブジェクト指向
>  ・メッセージ型 ←これも関数指向

オブジェクト指向のメッセージングは「関数指向」ということだが、オシッコはチンポの役割で、
オシッコを出したり止めたりするのはチンポ、チンポに力を入れたり力を抜いたりするのは俺。

548 :デフォルトの名無しさん:2020/08/26(水) 12:35:44.35 ID:nY6YdJgd.net
>>105
>そもそもオブジェクト内に状態を持つこと、

チンポは随意筋であり不随意筋である!

>内部状態を操作すること自体がシステムがめんどくさくなったり
>不具合の原因なんだから、そんなこと自体極力やめた
>方がいい。という考え方。

ならばオシッコのチンポと勃起のチンポは別々に分けて考えることが大切だな!

511 デフォルトの名無しさん 2018/10/29(月) 23:32:40.68 ID:LL+W6ENh
随意筋←implements─チンポ─implements→不随意筋

549 :デフォルトの名無しさん:2020/08/26(水) 12:40:14.09 ID:RaglZ+rk.net
40歳童貞「さーて今日も5ちゃんねるで、オシッコ!チンポ!しこしこ!書き込みっと」

こんな感じなんだろうなw

550 :デフォルトの名無しさん:2020/08/26(水) 12:41:41.42 ID:nY6YdJgd.net
『シコシコ』という擬音はどうでもよい。問題は、

自我    チンポ
↑      ↑   チンポ=自我
チンポ   自我

オブジェクト指向では、この三種類が考えられるということだ。
>チンポ=自我
散歩している時、自分もチンポも所在地は同一である。

https://i.imgur.com/j3uTk1K.jpg

夏目くんの場合は、チンポが自我を圧倒し、体が自然に滝川さんの股間に近づいていったのだ。

『笑ってごまかすな!!』

と言われても、夏目くんは何と言えば良かったのだろう?

    チンポ≫自我

『チンポが自我を超えてしまった』を簡略化して、チンポがシコシコする!

チンポがシコシコしていると(チンポが自我を超越していると)、息もハァハァになる。
チンポがシコシコしている(チンポが自我を超越している)と、顔もアヘ顔になる。
つまりその顔は『チンポの一部』つまりチンポの皮と同じということ。

博士号の肩書きがあっても、STAP細胞のそれは間違いであり科学者として失格。
チンポと自我の関係について、それが間違いということなら、俺も科学者を自称するのを止めよう。
しかしながらあの夏目くんは、笑ってごまかす以外に何と申し上げたら良かったのか。

551 :デフォルトの名無しさん:2020/08/26(水) 12:43:57.08 ID:nY6YdJgd.net
>>549
「オブジェクト指向」について、他にもっと解りやすい説明が有るというなら、ここに書いてくれよ!

552 :デフォルトの名無しさん:2020/08/26(水) 12:59:22 ID:CC12ZgHh.net
>>551
俺が言ってるのは40にもなって
オシッコとかチンポとか、恥ずかしくないのかってことなんだがw

553 :デフォルトの名無しさん:2020/08/26(水) 13:08:08 ID:3xqKZ5M9.net
>>543
そういうことなの?
僕はファイルシステム作ったことないし調べたことないから知らないけど
B-Treeはファイルシステムでファイル管理にだけ使われてるの? ディレクトリの管理は別であるってわけ?
ディレクトリの検索はファイルの検索よりも遅いの? どうなってるの?

554 :デフォルトの名無しさん:2020/08/26(水) 13:48:42.79 ID:xeUirg9t.net
>>552
>俺が言ってるのは40にもなって
>オシッコとかチンポとか、恥ずかしくないのかってことなんだがw

ならそういうあんたが、オブジェクト指向について解りやすく示せ!

555 :デフォルトの名無しさん:2020/08/26(水) 13:55:09.22 ID:3xqKZ5M9.net
カプセル化で困るときってトラブったときだよね
この内部のメソッド呼び出せたら調査やリカバリが簡単なのにって思うことはときどきある
副作用がないメソッドは原則公開でも良いかもわからんね
副作用がないようにメソッドを作る技術も大事

556 :デフォルトの名無しさん:2020/08/26(水) 14:00:02.90 ID:CC12ZgHh.net
>>555
もう少し具体的な例を挙げられる(マジレスすると無理だと思ってるw)

内部のメソッドが呼び出せないことで調査ができない場合を聞いてます。
答えられますか?

557 :デフォルトの名無しさん:2020/08/26(水) 14:04:56.62 ID:48xzUiDm.net
流石にそのくらい思い付けよ...

558 :デフォルトの名無しさん:2020/08/26(水) 14:07:56.01 ID:CC12ZgHh.net
いろんなことを思いつくことができる俺がないと言ってます。
反論があるなら受け付けますよ?

559 :デフォルトの名無しさん:2020/08/26(水) 14:08:16.42 ID:NYX2/iU2.net
副作用ないならそもそもインスタンス化可能なクラスにする必要もない(?)
必要あってクラス化してるなら副作用抑えるといっても限界があるんじゃね

560 :デフォルトの名無しさん:2020/08/26(水) 15:12:25 ID:goOahd89.net
>>553
ディレクトリは直下のファイル名と内部IDとのマッピングリストをコンテンツに持つファイル
親ディレクトリから見れば他のファイルと同じ

NTFSだとMaster File Table(MFT)っていう固定長のデータ構造に
ファイル/ディレクトリごとに1レコードの情報が管理されていて
ファイルのレコードを見ればDiskのどこにアクセスすればのかがわかる

/foo/bar.txt にアクセスしたいなら
MFTのルートディレクトリのレコードにアクセスして
ルートディレクトリのインデックスからfooという名前のエントリを探してfooの内部IDを取得する
それを元にMFTのfooのレコードにアクセスしてそのインデックスからbar.txtの内部IDを取得
MFTのbar.txtのレコードにアクセスしてbar.txtの中身が保存されてるDiskの位置を把握して
そこからデータを読み込む

B-Treeはディレクトリの中に多くのファイルがあっても
O(log n)で検索(や追加や削除)ができるようにするため

561 :デフォルトの名無しさん:2020/08/26(水) 15:54:15.18 ID:+lvOcjDi.net
>>531
触ったこともないようだなw
DBサーバーはサーバーゆえ、セッション管理は当たり前
メモリだけでなく一時テーブルも他セッションから見えない
アクセス権の設定もOSよりフレキシブルかつ堅牢
扱うものがファイルじゃなく重要な大量データなので、そこらへんはOSよりむしろ高性能

562 :デフォルトの名無しさん:2020/08/26(水) 16:00:46.94 ID:+lvOcjDi.net
そもそも「オブジェクト指向」言いたがるのは開発系にはいない
使ってはいても
むしろ腕がいいほど言わない
言いたがるのは手配師やPMなどの「営業系」
または本格的に開発しない「保守系」

563 :デフォルトの名無しさん:2020/08/26(水) 16:11:18.17 ID:pQkCIJWG.net
>>562
>そもそも「オブジェクト指向」言いたがるのは開発系にはいない

チンポは随意筋であると同時に不随意筋である!

564 :デフォルトの名無しさん:2020/08/26(水) 16:16:41.70 ID:GjEoDtBH.net
アラン・ケイ? SmallTalkってカプセル化てんこ盛りじゃなかったっけ? 自己増殖していくんだから、カプセル化しなかったらまずいべ。

565 :デフォルトの名無しさん:2020/08/26(水) 16:16:49.73 ID:3xqKZ5M9.net
>>560
超詳しいですね、ありがとうございます!

566 :デフォルトの名無しさん:2020/08/26(水) 16:24:12.37 ID:+lvOcjDi.net
>>543
面白い点だね

若い頃、ディレクトリ構造のようなマスタを発想したことがあった
階層が動的だと物凄く重くなる

泥臭いが有限、固定であることが速さの秘訣
型も可変長より固定長の方が速いのと同じ

DB内部では可変長も固定長のように扱うからファイルもメモリも容量がデカい
容量を犠牲に速度を上げてる
容量はさておき、固定の速さを利用する設計思想も「DB型OS」には重要

「DB型OS」では、「A¥B¥C」まで一気に「パス」という名の列に入ってるのか
「A」「B」「C」が「フォルダ1」「フォルダ2」「フォルダ3」という3列に入ってるのか
少なくとも、XMLのような階層表現や、リレーションで動的に無制限に階層を持つ構造にはしない方がいい
「フォルダ1」「フォルダ2」「フォルダ3」は泥臭いが、その方が速度も速く、実は可用性も高い

567 :デフォルトの名無しさん:2020/08/26(水) 16:25:50.43 ID:8+Mp20b2.net
>>134
>カプセル化とはなにか?超わかりやすく解説します!

俺が寝ている時も俺の知らない時に、パンツの中でチンポが勝手に夢精してましたということだな。
つまりオブジェクトは独立であり、チンポは独立した生き物であり、独立したオブジェクトカプセルなのだと。

568 :デフォルトの名無しさん:2020/08/26(水) 16:28:13 ID:4B4pOhxB.net
>>541
オシッコ残量はチンポではなくて膀胱の働きだからな。それは膀胱からのメッセージングによる。

569 :デフォルトの名無しさん:2020/08/26(水) 16:30:47 ID:3xqKZ5M9.net
へーここは勉強になるスレッドですね

570 :デフォルトの名無しさん:2020/08/26(水) 16:33:12 ID:+lvOcjDi.net
デルファイがクラス型オブジェクト指向だと知らんような素人が
「オブジェクト指向じゃないと駄目なんです!」とか力説するもの(某リクルートの姉ちゃん)

もっと言うと、「クラス型オブジェクト指向」でなく「オブジェクト指向」と言うならば、VBAだってそうだよw
VBAでも「クラス」を宣言できるので、「クラス型オブジェクト指向」としか言いようがないのだが、
継承機能がないので、百歩譲って「クラス型オブジェクト指向」からは除外する約束でもいいが

571 :デフォルトの名無しさん:2020/08/26(水) 16:48:44 ID:+lvOcjDi.net
ところでWindowsがオブジェクト指向なのかというと、設計思想はそうだと言い難い
それは別スレに書いたが、およそ「デスクトップにオブジェクトを置く」感覚ではない
それはMac

オブジェクト指向はいろんな角度で串刺しにできる機能(ポリモーフィズム)を持つが、
それは「串刺しにされても我が道を行く」というオブジェクトの主体性を意味するものであって、
できるからってごちゃごちゃ串刺しすると、物感がなくなる

572 :デフォルトの名無しさん:2020/08/26(水) 16:56:24.61 ID:+lvOcjDi.net
Macが始めた、なんでもクリック、長押し、ドラッグ&ドロップで表現するのはたしかに串刺しだが
物感を強調するための串刺し

だがWindowsはこれを真似するにあたり、「右クリック」を導入した
物を「右クリック」するとはなんぞや
ここにコマンド思想がある
それは些細なことだが、スタートメニュー、レジストリ、AppDataなど、物感からの乖離が多い

573 :デフォルトの名無しさん:2020/08/26(水) 18:04:34.49 ID:CC12ZgHh.net
>>561

ねぇねぇプロセス管理は?
→お前「セッション管理は〜」

レスしたのに質問に答えられない時点で、お前の負けだ(笑)

574 :デフォルトの名無しさん:2020/08/26(水) 18:06:55.27 ID:CC12ZgHh.net
>>571
> ところでWindowsがオブジェクト指向なのかというと
オブジェクト指向だね

例えばウインドウがそう。実はWindowsは
ボタンやインプットボックスなどあらゆるコンポーネントが
ウインドウとして作られていて、ウインドウハンドルを持っている

基本のウインドウがあってそれを拡張して
コンポーネントが作られてる
もちろん自分で拡張することも可能

575 :デフォルトの名無しさん:2020/08/26(水) 18:21:13.49 ID:oEB3gdtA.net
一般人は、数学空間に現実の問題を写像して解きます。
直接計算できるようになるからです。

アウアウアーは、現実空間に数学の問題でさえ写像しようとします。
これがオブジェクト指向です。
当然直接計算できません。

天才は、数学空間に写像された問題を計算機に解かせようとします。
これが関数型です。

576 :デフォルトの名無しさん:2020/08/26(水) 18:24:32.95 ID:oEB3gdtA.net
オブジェクト指向の功績は、アウアウアーでも理解できるモデルを提供したことです。

オブジェクト志向の罪は、一般人をアウアウアーのレベルで作業させることです。

577 :デフォルトの名無しさん:2020/08/26(水) 18:41:31.09 ID:CC12ZgHh.net
このようにオブジェクト指向いう「技術」の問題と「人」の問題を
わざとごちゃまぜにするやつに話を聞いてはいけません

578 :デフォルトの名無しさん:2020/08/26(水) 18:58:26 ID:F43MuBwc.net
インタフェイスと実装を区別せずに議論してるような気がするが、スレの趣旨にあっていないような気がするので他所でやって欲しいと思いました。

579 :デフォルトの名無しさん:2020/08/26(水) 19:23:43.10 ID:Pf4G7zlI.net
>>577
〈このようにオブジェクト指向いう「技術」の問題と「人」の問題を

チンポは繋がっているけど独立している!

580 :デフォルトの名無しさん:2020/08/26(水) 20:23:35 ID:4zct0Nww.net
>>572
今やMacも右クリックありきだけどな

581 :デフォルトの名無しさん:2020/08/26(水) 20:56:51.93 ID:Pf4G7zlI.net
>>405
>スタートアップである弊社が全員ほぼ未経験でRuby on RailsをScalaに移行した理由、

Rubyとかの所謂「オブジェクト指向言語プログラミング」がここ十年くらいで落ち目なのは、
オブジェクト指向の何たるかを理解しないプログラマーが、オブジェクト指向言語プログラミングと称して、
使い道の無いコードを沢山書いたからだと思うぞ。要らない書類ばかり増えると整理が大変。

582 :デフォルトの名無しさん:2020/08/26(水) 21:03:47.96 ID:Pf4G7zlI.net
オブジェクト指向とは何かが分からないのに、オブジェクト指向プログラミング言語だと言ったりすると、
何だかこの人頭がイイみたいな錯覚を抱かせてしまう。
パソコンが苦手な人から見れば、パソコンが使えて書類を沢山作る人は頭がイイと錯覚してしまう。

トヨタ式「整理整頓」使わない書類は1日、名刺は1年で処分
https://president.jp/articles/-/16215

どんなに見た目がキレイに書けていても、使い道の無い書類は百害あって一利無し!

583 :デフォルトの名無しさん:2020/08/26(水) 21:10:57.96 ID:O4WMLh95.net
まーた人の話にすり替えてるw

584 :デフォルトの名無しさん:2020/08/26(水) 21:17:20.18 ID:Pf4G7zlI.net
>>583
チンポは独立した生き物だが?

585 :デフォルトの名無しさん:2020/08/26(水) 21:18:07.21 ID:O4WMLh95.net
オブジェクト指向の話をしろと言ってる

586 :デフォルトの名無しさん:2020/08/26(水) 22:08:44.78 ID:7syk/8cI.net
オブジェクト指向とは何か、関数型とは何か
端的に一言で言える人はいないのか

587 :デフォルトの名無しさん:2020/08/26(水) 22:16:39.17 ID:Ss3hGbOq.net
何となくイメージはあるけど、例えば多重継承はオブジェクト指向かと言われると多重継承が無くてもオブジェクト指向は成立しうるよなとか思ってしまうし、
結構人によってイメージの持ち方に幅があるような気がするなあ。

教科書的な定義とか解釈とかは進化が止まって化石になってから出来上がるような気がするし。

588 :デフォルトの名無しさん:2020/08/26(水) 22:25:16.49 ID:3xqKZ5M9.net
>>586
オブジェクト指向とはオブジェクトを物事の中心に据えること
関数型とは引数によって結果が決まる数学的な関数を物事の中心に据えること

589 :デフォルトの名無しさん:2020/08/26(水) 22:29:30.73 ID:NYX2/iU2.net
プログラムを構成する各オブジェクトは
言わば人間を構成する各臓器
心臓も肝臓もその詳細を知らず命令せずとも
責務を果たしている

590 :デフォルトの名無しさん:2020/08/26(水) 22:32:52.45 ID:O4WMLh95.net
>>587
前にどこかに書いたが、オブジェクト指向=多重継承とかいう話ではなくて
オブジェクト指向を行うのに便利な多重継承などの機能を集めたものが
オブジェクト指向言語なんだよ

多重継承はオブジェクト指向か?という疑問は
for文は手続き型に必要か?なくてもwhileやloopで代用できると言ってるようなもん

多重継承はオブジェクト指向を行うのに便利な機能の1つ
機能の1つでしかないから、なくても成立するのは当たり前

591 :デフォルトの名無しさん:2020/08/26(水) 23:49:22 ID:Ss3hGbOq.net
オブジェクト指向の功罪の「罪」の部分って、
多重継承が原因じゃないかなと個人的には思う。
作るときは便利なんでついつい使っちゃうけど、
メンテナンスするのに非常にしんどくなる。

592 :デフォルトの名無しさん:2020/08/27(木) 00:29:41 ID:Av3pnrM3.net
>>589
>心臓も肝臓もその詳細を知らず命令せずとも

人間の体のように個々のオブジェクトの有機的な相互作用によってシステム全体が構築されている場合
ある入力(食べ物/薬/ストレス/運動など)に対してどういう出力が得られるか
どういう副作用が発生しうるかを把握するのが困難

オブジェクト指向で作られたシステムも同じで
オブジェクト間にどういう相互作用があって、どういう風に副作用が連鎖していくかがわかりにくくなりがち
そうならないようにする対策の一つとして関数型の考え方が取り入れられてる

593 :デフォルトの名無しさん:2020/08/27(木) 01:22:50.36 ID:aggnfjOi.net
>>591
多重継承はついつい使っちゃうもんじゃないですねぇ
最終手段として使えれば便利とは思うけど
いつ使うんですかそんなもの
あなた本当に使ってますか?
てきとーなこといってオブジェクト指向ディスってるようにしか見えません

594 :デフォルトの名無しさん:2020/08/27(木) 01:31:43.23 ID:JwVMaeMo.net
型の多重継承ならJavaでもよく使うけど

595 :デフォルトの名無しさん:2020/08/27(木) 02:11:04.59 ID:hkH5l7An.net
例えば動物クラスを継承して、犬クラスを作るなら自然だけど
動物クラスを継承した猫クラスがあるとして、ペットショップクラスを犬クラスと猫クラスの多重継承で作れないの?というのが初心者
極端すぎるけどこの場合はペットショップクラス内に動物クラスのインスタンスを管理するように作るべきだと思う

596 :デフォルトの名無しさん:2020/08/27(木) 03:26:47 ID:k1UmMy2p.net
>>595
自然かどうかはドメイン次第
そもそもペットショップクラスが必要なアプリってどういうものを想定したの?

597 :デフォルトの名無しさん:2020/08/27(木) 03:36:47.97 ID:0TX63Eqy.net
ライオンクラスを頂点に、底辺は羊では。

598 :デフォルトの名無しさん:2020/08/27(木) 04:29:11 ID:qjXIX307.net
動物とか架空の例ばかりで、
実際に多重継承を使った実例をいわないのが
お前使ってないでしょっていう理由なんだわw

599 :デフォルトの名無しさん:2020/08/27(木) 04:29:54 ID:qjXIX307.net
あれだな。多重継承をディスるためにわざわざ多重継承が
使えそうな「例」を持ち出してる感100%だ

600 :デフォルトの名無しさん:2020/08/27(木) 10:26:32.28 ID:wrfFiWTH.net
そのクラスに属するメソッドをいい意味でも悪い意味でも結合させてしまうわけで
馬鹿は使うなってことになるわけだよ。

601 :デフォルトの名無しさん:2020/08/27(木) 11:48:30.05 ID:s9fS5Msc.net
バカが作ると、とりあえず動くかもしれないけど
動作効率や保守性悪くなりがち
となるのは言語・パラダイムを問わず起こり得ること

602 :デフォルトの名無しさん:2020/08/27(木) 11:50:15.78 ID:Q9F08mvx.net
そう。「バカが使うと〜」と言い出すと何にでも当てはまるので
「人」と「技術」の話は分けて考えろといってる

603 :デフォルトの名無しさん:2020/08/27(木) 12:13:20.64 ID:esPfZquD.net
本来の意味での多重継承は現在では使われて無い
メソッド集や関数集を本体にドッキングさせたいときに使ってる
Javaに実装の書けるインタフェイスが出来たのもその為
Rubyのmix-inはそれ

つまり、ただの構造体にどうやって関数を足すかが、C++での現在の多重継承

604 :デフォルトの名無しさん:2020/08/27(木) 12:16:36.33 ID:XNd4fe+/.net
>>603
>本来の意味での多重継承は現在では使われて無い

随意筋  不随意筋
  ↖   ↗
   チンポ

605 :デフォルトの名無しさん:2020/08/27(木) 12:23:27 ID:R7AbwnBd.net
>>586
結局はどっちも宣言的プログラミングをする為の手段と言う認識。
手続き型言語のままで宣言的プログラミングをしようとしてオブジェクト指向プログラミングが出来たんじゃないかな。

でも、関数やメソッドにするべき処理は無数(無限)にあるので全ての処理をメソッド呼び出しやメソッドチェーンで記述する事は不可能。
結果としてどんなにクラスやメソッドが増えても全てを宣言的に書けず、どこかに必ず手続き的な記述が必要。

関数型言語は基本的な記述からして宣言的なので全部を宣言的に書ける。
ただ、状態を持たないと言うことはなんでも一から計算するので手続き型言語より遅い処理がある。
(例えば文字列の長さはオブジェクト指向プログラミングでは文字列オブジェクトそのものが生成された時点で文字数を内部に持っているが、関数型言語は必ず数える処理が入る)

606 :デフォルトの名無しさん:2020/08/27(木) 12:27:06.54 ID:9DS3XVCn.net
>>605
バカかよ
win32apiだってウィンドウハンドル渡してるだろ

607 :デフォルトの名無しさん:2020/08/27(木) 12:40:23 ID:R7AbwnBd.net
>>606

GUIは副産物であって目的じゃないよ?

608 :デフォルトの名無しさん:2020/08/27(木) 13:11:06.08 ID:s9fS5Msc.net
>>606
バカはお前だって何度も言ってるだろ

609 :デフォルトの名無しさん:2020/08/27(木) 13:15:44.72 ID:9DS3XVCn.net
状態を持たないから全部1から計算とかプログラマやめろってレベルじゃねーぞチンパン

610 :デフォルトの名無しさん:2020/08/27(木) 13:40:18.77 ID:wrfFiWTH.net
>>602
人と技術は結びついてるんだから仕方ないだろ。
気にしないでいいなら変数名なんて全部1最小文字数でよいし、全部グローバルにしても
人が克服すりゃいいって話になる。

611 :デフォルトの名無しさん:2020/08/27(木) 13:42:21.22 ID:Q9F08mvx.net
> 人と技術は結びついてるんだから仕方ないだろ。

明確にすればいいだけ

つまり、技術的には○○の方が優れているが
うちの人材は技術力が低いので優れた技術を使えない
と認めた上で、○○を使わないっていうのはいいんだよ


〇〇は技術的にだめという嘘をつかなければいい
技術力が低いと認めればいいだけ

612 :デフォルトの名無しさん:2020/08/27(木) 13:44:15.13 ID:Q9F08mvx.net


× ローカル変数?ありゃだめだ?意味がわからない
グローバル変数のほうがいい

技術のせいにしてるからNG


○ ローカル変数のほうが良いようだが俺には使いこなせない。
俺の技術力が低いからグローバル変数を使っている。

人の問題だと認めてるからOK

613 :デフォルトの名無しさん:2020/08/27(木) 14:40:38.75 ID:qx1+2YSb.net
チンポ挿入するの大好き

614 :デフォルトの名無しさん:2020/08/27(木) 15:27:15.58 ID:iBh5BPF2.net
>>589
本人が知らないうちに膵臓ガンが出来てましたというか自覚症状が無いのも、オブジェクトカプセルだから。

615 :デフォルトの名無しさん:2020/08/27(木) 15:38:46.33 ID:/TJ+6+BI.net
>>604
多重継承がなぜ必要かというと、オブジェクトの上位概念は時と場合によぅて変わる時があるからだ。
例えばオシッコのチンポは随意筋で、射精のチンポは不随意筋である。

616 :デフォルトの名無しさん:2020/08/27(木) 15:57:08 ID:s9fS5Msc.net
has-aの関係とis-aの関係で
継承かコンポジションか判断するのが基本だと思うけど
随意筋とか不随意筋はチンポからしたらhas-aの関係なのか
is-aの関係なのか どっちだ?!

617 :デフォルトの名無しさん:2020/08/27(木) 16:00:15.44 ID:lxQOOhz0.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が電気カミソリを持っていたので、エンティティ「Fredがひげそり中(FredWhileShaving)」
には電気の部品が含まれていると考えた。したがって、CycはFredがひげをそっている間、
Fredはそれでも人間なのかと尋ねた。

『深層学習』
著者:
Ian Goodfellow, イアングッドフェロー,
Yoshua Bengio, ヨシュアベンジオ,
Aaron Courville, アーロンカービル

618 :デフォルトの名無しさん:2020/08/27(木) 16:22:44.00 ID:5/hfp35I.net
>>533
医学的にチンポは不随意筋だけど、心臓のように常に恒常的に動いているわけではないし、
オシッコを出したり止めたりは随意筋として動かすことも出来てしまう。

>>616
自分の体の一部としてのコンポジションであるのと同時に、自分の意志とは無関係に勃起する継承クラス。
繋がっているコンポジションであり、かつ独立した主体として振る舞う。

619 :デフォルトの名無しさん:2020/08/27(木) 16:27:02.84 ID:5/hfp35I.net
>>539
クリントン大統領といえどもチンポは独立主体であり、かつチンポがシコシコしてしまうと、
チンポは大統領権限をも超えてチンポがホワイトハウスを支配してしまう。

620 :デフォルトの名無しさん:2020/08/27(木) 16:44:10.57 ID:eFA7BsAf.net
>>539
>クリントンの「不適切な関係」

チンポがシコシコしてしまったのは、大統領に悪意があったわけではないが、所有者責任は免れない。
飼い犬が歩行人に噛み付いたら、飼い主に管理者責任が生じるというのと同じ。

621 :デフォルトの名無しさん:2020/08/27(木) 16:46:23.50 ID:eFA7BsAf.net
>>550
夏目くんは何も悪いことはしていないセクハラではない、チンポが勝手にシコシコしまっただけ。

622 :デフォルトの名無しさん:2020/08/27(木) 18:21:41 ID:wrfFiWTH.net
>>612
グローバル変数なら一行で済むとか言えば技術的にグローバル変数のが優れてることになるが?
グローバル変数を管理できないお前の技術がないといわれたらどうすんの?
少なくともCPUからしたらそうだが。
技術的ってのがそれこそ人間の認識能力の前提によってるってことに全く気付かない馬鹿なのかな?

623 :デフォルトの名無しさん:2020/08/27(木) 18:25:09 ID:Q9F08mvx.net
>>622
頭悪そうw

ようするにね、優秀な人(Googleレベルでいいよ)が
優れた技術だって言っていれば、技術は優れてるってこと

その技術が使えない人がいたなら、それは技術じゃなくて
人間の問題だってこと

624 :デフォルトの名無しさん:2020/08/27(木) 18:56:54.22 ID:Av3pnrM3.net
技術が優れてるかどうかの判断基準や観点の違いでしょ
その基準の一つに頭悪い人でも使いやすいかどうかというのがあっても何もおかしくない

物事を一面的にしか捉えられない人はソフトウェアの仕事には向かない

625 :デフォルトの名無しさん:2020/08/27(木) 19:15:28.22 ID:JwVMaeMo.net
>>605
関数型プログラミングで使われるデータ構造は
状態を持たないわけじゃなくて状態が不変なだけだと思うよ
状態を変えるときはオブジェクトを作り直す感じ

文字列のオブジェクトは関数型言語じゃなくても不変なのが一般的だと思うよ

626 :デフォルトの名無しさん:2020/08/27(木) 19:21:54.69 ID:LjKzxOF2.net
>>624
>技術が優れてるかどうかの判断基準や観点の違いでしょ

他所で広く使われているか、という指標はどうだろうか?

使われるコードは良いコード、使われないコードは悪いコード。デファクトスタンダードという言葉もある。

627 :デフォルトの名無しさん:2020/08/27(木) 19:38:47.84 ID:OAHLXlr3.net
多重継承は曖昧だというが、自然言語処理はその曖昧さが大切になる。チンポは随意筋であり不随意筋である。

最終的に,クラス階層は最上位クラスを含めた
最大8 階層から構成され,「伝統的な日本の絵画」
に属する用語に対応する 55 クラスと解説文中か
ら抽出した139 クラスが配置された。ただし,そ
のうち 32 クラスが複数の上位クラスをもつとい
う多重継承が示された。例えば,「ngyc:絵巻物」
は「ngyc:伝統的な日本の絵画」と,「ngyc:表具の
形式」の下位クラスである「ngyc:巻子」の 2 つの
クラスを継承する(図 2)。こうした多重継承は,
本質属性をもつ基本概念と機能を表すロール概念
を分離することで,基本概念による属性継承に限
った階層関係に変更するという考え方もあり 10),
「ngyc:伝統的な日本の絵画」がロール概念で,
「ngyc:表具の形式」が基本概念と捉えることもで
きる。しかし,本研究ではテキストからの情報抽
出に即して配置し,多重継承を許容した階層を導
き出した。
http://www.mslis.jp/am2019yoko/05_kobayashi.pdf

628 :デフォルトの名無しさん:2020/08/27(木) 19:51:25 ID:11nNbPii.net
数人月の仕事なら何だって良いさ
時間貰えばコードの隅から隅まで読んで把握出来る

みずほのサグラダ・ファミリアがグローバル変数で完成するならそういう話をしてよ

629 :デフォルトの名無しさん:2020/08/27(木) 19:51:41 ID:OAHLXlr3.net
令和のコペルニクス
https://youtu.be/7DbdPKWhrpY

室町時代のアミダくじは円形であること、ベンゼン環の六角構造、赤青緑の三色ダイオードを考えてみた。

ソースコード
https://drive.google.com/file/d/1hsFT2F4AMgUv1JHqy0si_7Yj7q7TyHnR/view

630 :デフォルトの名無しさん:2020/08/27(木) 20:00:22 ID:OAHLXlr3.net
カプセル化とはオブジェクトの独立性でありオブジェクトカプセルのことだ!

>>64
>設計的にはイベントというかメッセージ以外のアクセスを許さないためのカプセル化だろ?

洋式便器に座ってオシッコを出したり止めたりするのに、チンポがどうなっているかを確かめる必要無いだろ?

928 デフォルトの名無しさん 2018/11/21(水) 18:59:11.61 ID:8Yc2p7H1
>>922
>ナンチャッテメッセージングスタイルになったのは

チンポ.オシッコを出す
チンポ.オシッコを止める

さっきトイレでやってきた。


929 デフォルトの名無しさん 2018/11/21(水) 19:07:17.83 ID:8Yc2p7H1
>>915
>単なる動的なメソッド呼び出しをメッセージと称し、ただしコールするメソッドが見つからない場合だけメッセージを
>ハンドリングできる省コストなナンチャッテメッセージングスタイルに落ち着いた。

×
俺.オシッコを止める 俺.オシッコを出す

俺.チンポに力を入れる 俺.チンポから力を抜く

631 :デフォルトの名無しさん:2020/08/27(木) 20:10:35 ID:LUaIeiWj.net
    _w           、...   ョ  ┌┐     ィ     ′  
    ̄+     ヘe、   j「.  .¬气¬''..~''~    ,.ルw、.ーu、す     
  ^^"~~l|~~^'''       ォ′   .,. l| ┐      .√ j|  _~+,.、. 
 .   .,/.      ょ_/    、j「 {  `¬..   〃 .、l|    、  
 ..  ~^.               ~  `          ~^      
 .  ;.                 ョ         __      
 .  j|       ~ラ¬¬+     |.        ̄.   ̄..    
 .  オ                 |..   ォ        ,、  
    k、 ,j〃.   L_.  _ェ    ~'――'~.   ^^^^^^ ̄´    
      ̄′       ̄ ̄ 

632 :デフォルトの名無しさん:2020/08/27(木) 20:16:01 ID:YMQIhwLV.net
>例えば寝てる時にエロい夢みて朝起きてみたらチンコが勃起して射精してたとか。

当然ながら起きているときも、チンポがシコシコする!

 風呂から出て体一杯に水を浴びながら竜哉は、この時始めて英子に対する心を決めた。裸の上半身にタオルをかけ、
離れに上ると彼は障子の外から声を掛けた。
「英子さん」
 部屋の英子がこちらを向いた気配に、彼は勃○した陰○を外から障子に突きたてた。障子は乾いた音をたてて破れ、
それを見た英子は読んでいた本を力一杯障子にぶつけたのだ。本は見事、的に当って畳に落ちた。
 その瞬間、竜哉は体中が引き締まるような快感を感じた。彼は今、リングで感じるあのギラギラした、
抵抗される人間の喜びを味わったのだ。

●これが衝撃の「障子破り」シーンだ! (石原慎太郎 『太陽の季節』 (新潮文庫) より)

>その瞬間、竜哉は体中が引き締まるような快感を感じた

チンポがシコシコする≠勃起、つまりそれはただチンポが勃起するのではなくて、
「体中が引き締まるような快感を感じた」ということなのである!!

633 :デフォルトの名無しさん:2020/08/27(木) 20:38:21.72 ID:Q9F08mvx.net
>>624
> その基準の一つに頭悪い人でも使いやすいかどうかというのがあっても何もおかしくない

それが本当に 頭悪い人 "でも" 使いやすいのであれば
頭が良い人でも使いやすいんだよ

頭が良くなるにつれて、使いづらくなるものは
それは技術ではなく人の問題になってる

634 :デフォルトの名無しさん:2020/08/27(木) 20:52:06.48 ID:m77ghP+M.net
>>623
>優秀な人(Googleレベルでいいよ)が優れた技術だって言っていれば

問『なぜ、人を殺してはいけないのか?』
答『この社会の法律でそういうことになっているから』
問『トランプ大統領は原爆素晴らしいと言ってるぞ?』
答『アメリカ大統領に日本の法律は通じない』

635 :デフォルトの名無しさん:2020/08/27(木) 20:56:18.38 ID:Q9F08mvx.net
>>634
関係ない話ですね。
技術の話をしましょう

636 :デフォルトの名無しさん:2020/08/27(木) 21:12:15 ID:m77ghP+M.net
優れた技術とやらが常に新しいシステムのことだとすれば、

>>611
>うちの人材は技術力が低いので優れた技術を使えない

Windows 7の2023年までの延長サポート、あらゆる企業が購入可能に Microsoftが方針転換
https://www.itmedia.co.jp/news/spv/1910/03/news091.html

古いシステムを使っている企業は、技術力低いということになるのか?

637 :デフォルトの名無しさん:2020/08/27(木) 21:17:37 ID:Q9F08mvx.net
優れた技術が常に新しいシステムなんて言ってませんね
言ってない話を前提にしてるので
レスするだけ無駄ですね

638 :デフォルトの名無しさん:2020/08/27(木) 21:24:22 ID:m77ghP+M.net
>>635
偉い人が言うことだから正しいってのはお里が知れてるってことなんだが?

639 :デフォルトの名無しさん:2020/08/27(木) 21:25:39 ID:Q9F08mvx.net
>>638
はい、それも言ってませんね
なんでいちいちデマ流すんですか?
こうやって俺がバラすから効果ないですよ?

偉い人じゃなくて、専門家の言うことだから正しい

640 :デフォルトの名無しさん:2020/08/27(木) 21:29:09.27 ID:m77ghP+M.net
>>637
優れた技術とやらが、例えばナチスドイツの軍事技術だとすれば非常に馬鹿げていると思うぞ。
ソビエトのバグラチオン作戦でナチの精鋭は壊滅、ジェット機やミサイル兵器は役に立たなかった。

641 :デフォルトの名無しさん:2020/08/27(木) 21:29:47.44 ID:Q9F08mvx.net
> 優れた技術とやらが、例えばナチスドイツの軍事技術だとすれば
それもいってませんねw
まいどまいど印象操作

642 :デフォルトの名無しさん:2020/08/27(木) 21:34:17 ID:m77ghP+M.net
>>639
>専門家の言うことだから正しい

STAP細胞論文の責任著者の一人である理化学研究所の笹井芳樹氏が8月5日、死亡した。52歳だった。
神戸市の先端医療センターの関連施設の階段5階の踊り場で、ひも状のもので首を吊っていたという。
遺書らしきものが見つかっており、兵庫県警では自殺を図ったとみている。
https://m.huffingtonpost.jp/2014/08/04/sasaiyoshiki-attempt-suicide_n_5649588.html

新井紀子教授のAIやコンピュータに関する知識は素人に毛が生えた程度
新井紀子教授の『AI vs. 教科書が読めない子どもたち』という本が大変売れているようです。
私も本を購入し精読させていただきました。
一言で感想を言うと、新井紀子教授のAI技術に関する知識はせいぜいAI関連ニュースに詳しい人レベルであり、
そのベースであるコンピュータに関する知識もほぼ素人だということがわかりました。
https://mywarstory.tokyo/inconvenient-truth/

643 :デフォルトの名無しさん:2020/08/27(木) 21:54:59.56 ID:s9fS5Msc.net
素人はおとなしくしてろ

644 :デフォルトの名無しさん:2020/08/28(金) 00:01:24.91 ID:OgWlouZ2.net
藻前ラ
モチツケ
https://video.twimg.com/ext_tw_video/1250511304349057024/pu/vid/720x836/64-ID9EPd8HNn5x1.mp4?tag=10

645 :デフォルトの名無しさん:2020/08/28(金) 00:16:44.09 ID:30PWE3IP.net
https://video.twimg.com/ext_tw_video/1226889263557554182/pu/vid/634x476/_I02tX673jAgsrK2.mp4?tag=10

646 :デフォルトの名無しさん:2020/08/28(金) 00:25:15.08 ID:an13tW42.net
https://ero-giftter.com/wp-content/uploads/contents/0565/030.gif

647 :デフォルトの名無しさん:2020/08/28(金) 01:23:51.12 ID:I2GFa1tZ.net
>>642
え?それがなにか?w

648 :デフォルトの名無しさん:2020/08/28(金) 10:41:00.53 ID:i6Fmhhr5.net
24 名無しさん@ゴーゴーゴーゴー! (JP 0H82-LX7o [153.145.207.163]) 2019/11/23(土) 16:54:55.03 ID:l9637O/lH
https://i.imgur.com/1VuRIrP.jpg

649 :デフォルトの名無しさん:2020/08/28(金) 11:18:02.52 ID:YjugbQV3.net
>>586
あんま難しく考えなくて良いと思う。
ただの解釈の違い。
オブジェクト指向は手続き型言語にグローバル変数を減らす為に、グローバル変数とそれ必要とする複数の関数をさらに包み込む物を用意した。
関数型言語は関数の引数や、関数の中でのみ変数を書き換えられると言う制約でグローバル変数の危険性を回避した。

手続き型言語(Python)

def fib( n):
temp = 0
a = 0
b = 1
for i in range( n):
temp = a
a = b
b += temp
return a

Haskell

fib n = fib’ n 0 1  
where
fib’ 0 a _ = a
fib’ n a b = fib’ (n–1) b (b + a)

 

650 :デフォルトの名無しさん:2020/08/28(金) 11:31:44 ID:YjugbQV3.net
オブジェクト指向と関数型のどっちがどうと言うのは知らんけど、Haskellと言うか圏論の考え方は面白いとは思うよ。
視野を広げる意味でもHaskellは学んで損は無いと思う。

入出力も圏論的にはキーボードそのものを変数の様な物と捉える。
値が入ってくる方向が違うと言う意味では虚数と実数の関係に似ている。

readLn >>= \x -> (2 * x)

f x = (2 * x)

カリー化するとより似てる。

readLn >>= (2*)

f = (2*)

また、変数も引数の無い関数と捉えられる。
main関数はmain変数と言う見方も出来るし、x = 2は常に2を返す関数xとも捉えられる。

651 :デフォルトの名無しさん:2020/08/28(金) 11:39:16 ID:YjugbQV3.net
x readLn >>= \x -> (2 * x)
o readLn >>= \x -> print (2 * x)

x readLn >>= (2*)
o readLn >>= print.(2*)

652 :デフォルトの名無しさん:2020/08/28(金) 12:23:30.81 ID:PrwED61V.net
カプセル化が悪いんじゃなくてせっかくのカプセル化をぶち壊すのが悪いんだ

653 :デフォルトの名無しさん:2020/08/28(金) 12:35:06.15 ID:RBhGMmXK.net
「内部には高電圧部があり感電する危険がありますから
サービスエンジニア以外は分解改造してはいけません」

654 :デフォルトの名無しさん:2020/08/28(金) 14:52:09.13 ID:k/wySbW5.net
>>653
ソースコード公開されていたからって素人が改造したらだめだよな
特にセキュリティ部分とか

655 :デフォルトの名無しさん:2020/08/28(金) 16:44:01.34 ID:BawoiMjj.net
詫びソースコード

アイミョン
[KS108-054]
テーマ:冒険者の広場・DQXショップ2020/02/17 16:22
今月になってから急にシステム障害が多発しており、運営としては説明責任を果たすべきと考えます。

https://hiroba.dqx.jp/sc/news/category/3/

不具合を出した個所とその修正箇所の両方を「詫びソースコード」として開示するのです。
ソースコードも企業の重要な著作物ですが、だからこそ開示して詫びることが大切です。
それと同時にシステムの不具合がなぜ多発しているのかを、プレイヤーも一緒に考えるのです。
バンダイナムコゲームスの『ドラゴンボールZ ドッカンバトル』を見習うべきです。


https://i.imgur.com/QHVwmj5.jpg

656 :デフォルトの名無しさん:2020/08/28(金) 16:49:45.88 ID:BawoiMjj.net
>>586
>オブジェクト指向とは何か、関数型とは何か

勃起するときのチンポはオブジェクト指向、オシッコする時のチンポは関数型。
自らの意志で勃起し射精する独立型と、オシッコを出したり止めたりの制御型とを区別することが大切。

657 :デフォルトの名無しさん:2020/08/28(金) 17:15:51 ID:H48t2s60.net
カプセル化って悪いことなのか?
俺にとってはメリットしかないと思ってるのだが。
>>2のような例はカプセル化が問題なのではなくて、設計の問題だろう。
必要なデータにアクセスできないような設計になっているのが悪い。

知られてはイケナイ情報は隠蔽すべきだろう。
カプセル化を否定するということは、自動販売機に向かって
「いくら銭が貯まってるのか見せろ」などと言ってるようなもん。
パソコンの電源ユニットも勝手に分解できないように封印がされてるし、
女の子のパンティーも隠蔽されている。

658 :デフォルトの名無しさん:2020/08/28(金) 17:18:13 ID:BawoiMjj.net
>>589
人体を扱う医学分野とか自然言語処理とかでは、ますますオブジェクト指向が大切になってくるよな。
機械的に統計取るだけならグローバル変数でもいいけど、人間科学生態科学は独立性を抜きには考えられない。

659 :デフォルトの名無しさん:2020/08/28(金) 17:29:34.40 ID:BawoiMjj.net
オブジェクト指向とは、Rubyのような所謂オブジェクト指向プログラミング言語のことではない!

つまりオブジェクト指向とは、俺の股間に付いているモノに他ならない!

660 :デフォルトの名無しさん:2020/08/28(金) 18:01:30 ID:qvGvuXDB.net
いくら熱心に勉強しても
チンポの事しか話せないなら意味がないな
誰もいないスレに1人で連投してスレを汚すんじゃない

661 :デフォルトの名無しさん:2020/08/28(金) 18:15:41 ID:1ynI1oSD.net
>>660
ならオブジェクト指向とは何かを、自分の言葉で簡潔に述べてみろ!

662 :デフォルトの名無しさん:2020/08/28(金) 18:27:24 ID:k/wySbW5.net
大規模システムを小さい多数のコンポーネントに分割することで
管理しやすくし、複数人での並行開発を行えるようにする技術かな

663 :デフォルトの名無しさん:2020/08/28(金) 18:53:44.07 ID:BnzPgwao.net
>>662
では「オブジェクトの多重継承」とは何か? そして多重継承はなぜ必要なのか?

664 :デフォルトの名無しさん:2020/08/28(金) 18:57:04.23 ID:k/wySbW5.net
>>633
> では「オブジェクトの多重継承」とは何か? 
2つのオブジェクトを継承(実装を伴うもの)したいときに使うもの

> そして多重継承はなぜ必要なのか?
オブジェクト指向が提供する技術はどれも必須ではない
技術は必要かどうかではなく、何かを実現したい時(必要な時)に使うもの
言葉自体がおかしい

665 :デフォルトの名無しさん:2020/08/28(金) 20:27:52.86 ID:XFujtf5p.net
オブジェクト指向がコンポーネント技術の需要から始まったことは周知のとおりだが、コンポーネント化のアイデアそのものが誤りだった可能性もあるな。

666 :デフォルトの名無しさん:2020/08/28(金) 20:29:24.21 ID:k/wySbW5.net
>>665
お前の意見は中身が無いので

コンポーネント化のアイデアは正しかった可能性もある
というふうに、簡単に言い返すことが出来る

667 :デフォルトの名無しさん:2020/08/28(金) 20:32:35.48 ID:XFujtf5p.net
>>666
可能性があると言うより、正しいと信じて邁進してきた。

ところがどうも間違ってるような気がするんだよな。

668 :デフォルトの名無しさん:2020/08/28(金) 20:34:17.13 ID:k/wySbW5.net
>>667
あの、意見はないの?
ないんだよね

669 :デフォルトの名無しさん:2020/08/28(金) 20:37:52.62 ID:XFujtf5p.net
オブジェクト指向の限界は皆が感じていて、これから学ぼうとする初心者たちがオブジェクト指向が良いものだと言ってる状況では?

間違っていた可能性があると言うだけで、ほとんどの人には十分だと思う。

670 :デフォルトの名無しさん:2020/08/28(金) 20:41:02.14 ID:k/wySbW5.net
なにが十分なのわからないが?

例えば推理もの小説でその人が犯人だという証拠があがってる中、
ヘボ探偵が、その人犯人じゃない可能性がある!と言った所で
その後に理由をいわなければ、何の意味もないことぐらいわかるでしょw

671 :デフォルトの名無しさん:2020/08/28(金) 20:44:48.47 ID:Qq63pedZ.net
麻酔針犯人プッシュ!
コナン(ボイスチェンジャー)「私が犯人デス!」

コレ

672 :デフォルトの名無しさん:2020/08/28(金) 20:46:07.59 ID:JFdvcY0m.net
だからオブジェクト指向も理解できてない素人を真面目に相手にするなって

673 :デフォルトの名無しさん:2020/08/28(金) 20:48:37.42 ID:XFujtf5p.net
推理ものだと思うのはこれからオブジェクト指向を学ぶ初心者でしょ。

オブジェクト指向を使いこなしてきた人にとっては合意の取れた事実だから。

オブジェクト指向をこれから学ぼうとする初心者が話に加わろうとする気持ちはわからんでもないが、おまえにはまだ早いという人が居るのも無理からぬ話。

674 :デフォルトの名無しさん:2020/08/28(金) 20:49:36.03 ID:k/wySbW5.net
> おまえにはまだ早いという人が

また人の話にすり替えたw

675 :デフォルトの名無しさん:2020/08/28(金) 20:52:52.49 ID:XFujtf5p.net
STLが非常に参考になる。

もちろん、これからの時代にSTLレベルでは話にならない。

思考の出発点として素晴らしい。

676 :デフォルトの名無しさん:2020/08/28(金) 21:05:56.68 ID:JFdvcY0m.net
STLってなんだよ
Standard Template Languageか?
最近おぼえた単語を言いたくてしょうがないって感じだなw

677 :デフォルトの名無しさん:2020/08/28(金) 21:06:16.07 ID:XFujtf5p.net
コンポーネントというのは、バベルの塔だったんじゃないかと思ってな。

678 :デフォルトの名無しさん:2020/08/28(金) 21:06:55.78 ID:JFdvcY0m.net
Language ✗
Library ○

679 :デフォルトの名無しさん:2020/08/28(金) 21:07:43.45 ID:JFdvcY0m.net
お前にはScratchで十分だ!

680 :デフォルトの名無しさん:2020/08/28(金) 21:08:35.98 ID:JFdvcY0m.net
コンポーネントって単語も最近覚えたんだね
よかったでちゅね〜

681 :デフォルトの名無しさん:2020/08/28(金) 21:41:15.03 ID:npmi1CGp.net
>>672
>だからオブジェクト指向も理解できてない素人を

ならば「チンポがシコシコする」という日本語表現は、文法的に正しいのか?

チンポ「を」シコシコするのではなくて、チンポ「が」シコシコする。この場合、「チンポ」は主語となる。

オブジェクト指向で言う「集約」は2種類あって、全体(俺)と部分(チンポ)が繋がっている場合と、
全体(俺)と部分(チンポ)が別々になっている場合とが考えられる。けれども「チンポ」はそれ自体
が独立した生き物であり、所有者の意思とは無関係に、勃起して「シコシコする」。
例えば寝てる時にエロい夢みて朝起きてみたらチンコが勃起して射精してたとか。

違うか?

「胸がドキドキする」は良いが、「チンポがシコシコする」はダメな理由を、50字以内で述べろ!

682 :デフォルトの名無しさん:2020/08/28(金) 21:51:25.23 ID:npmi1CGp.net
例えば具体的にいかなる形で「分割」するかだが、

>>662
>大規模システムを小さい多数のコンポーネントに分割することで

まず自分とチンポを分割すること。チンポは独立した生き物で、チンポは自分の意志で勃起してシコシコする。

683 :デフォルトの名無しさん:2020/08/28(金) 23:17:35.99 ID:XFujtf5p.net
「画面上に4個のボタンがある」

ボタンのように見せかけてるだけで、ボタンじゃないんだよ。

だから、ボタンとして分割することはできない。

684 :デフォルトの名無しさん:2020/08/29(土) 00:36:34 ID:SgECYZiQ.net
コンポーネントに分割することで管理しやすくするというだけなら、関数型や非オブジェクト指向の手続型でも共通のような。
コンポーネント化の単位として、オブジェクトを選択したことの優位性如何というのがポイントになってくるのでは。

685 :デフォルトの名無しさん:2020/08/29(土) 00:45:30 ID:g18FcF9h.net
やはり関数型OSが本命だろうな。

686 :デフォルトの名無しさん:2020/08/29(土) 03:45:42 ID:g18FcF9h.net
4個のON/OFFボタンは4ビットで表せる。
HDグラフィックスは3MB程度。
ということは、4ビット入力して3MB出力するような関数があれば良いと考える。
ここが出発点じゃないか?

687 :デフォルトの名無しさん:2020/08/29(土) 08:41:46.22 ID:oUMAS3pz.net
>>685
関数型がなんなのかわかってれば、そもそもそんなこと言えんわ。

688 :デフォルトの名無しさん:2020/08/29(土) 10:42:20 ID:+QUdJXvJ.net
C++のSTLはLispの超進化バージョンだから関数型への回帰に見える

要するに汎用的な関数を作りたいんだろう
テンプレートを使った万能な関数を作りたいワケだ

C++というかプログラミング言語の狙いはそこ(万能な関数)にある
例えばmax関数一つ作るだけで、どんな型でも最大値を出せる……てのが理想だ

689 :デフォルトの名無しさん:2020/08/29(土) 15:54:18.98 ID:MNNuNAQw.net
ジェネリック知らないのかな?

Lispは動的言語だからSTLとの比較で進化も退化もない

690 :デフォルトの名無しさん:2020/08/29(土) 19:30:12.05 ID:07o8HjE4.net
関数型が出せなければ、Windowsも終わるだろうな。

691 :デフォルトの名無しさん:2020/08/29(土) 19:39:16 ID:urowXmVA.net
>>686
64ビットのCPUなんですけど

692 :デフォルトの名無しさん:2020/08/29(土) 19:41:13 ID:0Qp+2/1q.net
Haskellでコンパイラ作ったけど処理が遅かったからモナド使って
完成したものは手続き型言語で書いたものと変わらなかったみたいな話をみたことがある
関数型でOSは厳しいのじゃないかな
関数型は銀の弾丸ではないよ

693 :デフォルトの名無しさん:2020/08/29(土) 20:00:12.92 ID:07o8HjE4.net
>>691
自然言語処理だと5万次元ベクトルとか普通にあるし。
何も不思議な話じゃない。

オブジェクト指向に毒されて、その殻の外を考えられなくなってるのでは?
殻を破れ。

694 :デフォルトの名無しさん:2020/08/29(土) 20:05:55.38 ID:urowXmVA.net
処理単位という物理的な概念がないのか

695 :デフォルトの名無しさん:2020/08/29(土) 20:11:02.81 ID:gmR1chaS.net
冒頭の繰り返しになりますが、オントロジーは「情報の意味を定義するための概念」であり、その適用範囲は
広義なものです。更にオントロジーだけではなく、LDやRDFといった周辺技術の関連性を理解してないと
学習初期で混乱することになります。本記事がこれからオントロジーを学ぼうとする方の一助になれば幸いです。
https://qiita.com/mininobu/items/bce0e0ad97ed17e0aff2

696 :デフォルトの名無しさん:2020/08/29(土) 20:23:16.35 ID:07o8HjE4.net
中国の味の素と言えば李錦記。
オイスターソースを発明した会社だ。

697 :デフォルトの名無しさん:2020/08/29(土) 21:15:39 ID:i3irdbE0.net
カプセル化ってstaticの事じゃないの? そう習ったような気が、、、 愚かなの?

698 :デフォルトの名無しさん:2020/08/29(土) 22:45:50 ID:07o8HjE4.net
殻を破れ。

699 :デフォルトの名無しさん:2020/08/29(土) 22:51:35 ID:EjjA84a9.net
頭がおかしい

700 :デフォルトの名無しさん:2020/08/29(土) 22:58:46 ID:EjjA84a9.net
C++ってガチのマルチパラダイムだよね
手続き型 オブジェクト指向
そしてテンプレートメタプログラミングは関数型

701 :デフォルトの名無しさん:2020/08/29(土) 23:21:22 ID:yWtTTOog.net
>>700
老害ですね

702 :デフォルトの名無しさん:2020/08/29(土) 23:28:20 ID:07o8HjE4.net
関数型プロセッサが必要かもな。

703 :デフォルトの名無しさん:2020/08/30(日) 08:47:47.58 ID:zRn3rglz.net
>>692
Haskellが遅いのは遅延評価だからだよ。(速度より表現力を取った)
モナドは関係無いし、モナドで解決するならとっくにHaskellは速くなってる。

モナドは順序の関係無い数学の世界(純粋関数型言語の世界)で逐次処理を再現する仕組み。
(重さの無い量子に重さを生み出すヒッグス粒子の様なもの)

HaskellでOSが作りにくいのは遅いのもだけど、Haskellのランタイムが大きいから。
C++が一定以上の規模じゃ無いと組み込みで使えないのと同じ。
Cみたいにランタイムが小さく無いとメモリに入りきらない。
C++よりランタイムが大きい上に遅いHaskellでOS作ろうと思うのは、余程の物好きだろう。

704 :デフォルトの名無しさん:2020/08/30(日) 08:55:55.45 ID:AzgFk2g1.net
関数型プロセッサはSFだろう
無限の再帰に耐えれるCPUだがそんなものが出来るとは思えない

705 :デフォルトの名無しさん:2020/08/30(日) 09:04:55.80 ID:zRn3rglz.net
スタックプロセッサ(だっけ?)とかLispに最適化したCPUが昔無かったっけ?
数の暴力でx86に潰されたけど。

706 :デフォルトの名無しさん:2020/08/30(日) 09:10:58 ID:zRn3rglz.net
関数OSの可能性が有るとすれば量子コンピュータかな。
純粋関数型言語はアーキテクチャに依存しないので、今でも紙と鉛筆で実行出来るし、理論上は文法そのまま量子コンピュータで動かせる。

まあ、今までの歴史振り返ればCなりをベースにした新言語を作って対応しそうだが。

707 :デフォルトの名無しさん:2020/08/30(日) 09:19:35.78 ID:g5q4aE3p.net
それらの総称として、オイスタープロジェクトと呼ぶことにします。

708 :デフォルトの名無しさん:2020/08/30(日) 09:26:18.65 ID:AzgFk2g1.net
いや、スタックプロセッサでは無限のスタックを用意すると数学的に正しい再帰が実現できる

709 :デフォルトの名無しさん:2020/08/30(日) 09:31:31.63 ID:i3Iv6gG3.net
文脈によって意味が変わる自然言語処理においては「多重継承」が大切。

状況によって、チンポは随意筋にも不随意筋にもなるし、自分自身にもなるし部下にも上司にもなる。

>>539
クリントンとチンポの関係は、部下と上司の関係が逆転してしまった例。

710 :デフォルトの名無しさん:2020/08/30(日) 09:35:57.52 ID:g5q4aE3p.net
文系の人がプログラミングできるようにとの配慮からオブジェクト指向を推進してきたわけですが、理系には関数型のほうが思考しやすいと思います。
というのも、数式そのままに理解していけるからです。

711 :デフォルトの名無しさん:2020/08/30(日) 09:38:35.51 ID:i3Iv6gG3.net
・多重継承
ものごとには唯一の本質があるとする存在論にお
いては多重継承が忌避されるかもしれない。しかし
現在の GUO では本質に関する議論を保留してお
り、多 重 継 承 を許 容 している。例 えば《人 間 》は
Agent と EnergyBearer を継 承 し、《パソコン》も
System と EnergyBearer、Artifact を継承する。また、
Agent は System を継承している(図 1)。
http://www.jaist.ac.jp/ks/labs/kbs-lab/sig-swo/papers/SIG-SWO-A602/SIG-SWO-A602-04.pdf

712 :デフォルトの名無しさん:2020/08/30(日) 09:41:09.24 ID:i3Iv6gG3.net
オシッコするときのチンポは制御、

>>710
>理系には関数型のほうが思考しやすいと思います。

勃起するときのチンポは自律ね!

>数式そのままに理解していけるからです

ならばチンポが勃起する事象を「数式」で示せ!

713 :デフォルトの名無しさん:2020/08/30(日) 09:54:21 ID:g5q4aE3p.net
殻を破れ。

714 :デフォルトの名無しさん:2020/08/30(日) 10:02:03 ID:zRn3rglz.net
>>710
How(どの様に =手続き)では無く、 What(それは何 =構造)で考えろも一緒に教えれば文系にも関数型言語は優しいと思うんだけどな。

lengthとはリストの中の値の個数分1を足した合計を返す関数である。
(要素1個1個を表すxは捨てて1を足すので_で使わない事を明記)

length [] = 0
length (_:xs) = 1 + length xs


リストの中の値の個数分1を足した合計なので、リスト内包表記でこうも書ける。

length xs = sum [ 1 | _ <- xs]

715 :デフォルトの名無しさん:2020/08/30(日) 10:10:57 ID:g5q4aE3p.net
オイスタープロジェクトでは、皆さんのご意見をお待ちしております。

716 :デフォルトの名無しさん:2020/08/30(日) 10:13:00.06 ID:i3Iv6gG3.net
「言葉の意味をどう定義するか」で、「概念ツリー」と「Has-aツリー」の話をしました。
どちらも、心のモデルを構成するものです。
「概念ツリー」とは、単語の意味の概念関係をツリーで表現したモデルです。
たとえば、「建物」概念の下には、「病院」「学校」「家」といった建物の下位概念が属します。
「学校」概念は、「小学校」や「中学校」、「大学」「東京大学」などの単語を持ちます。
このように、概念ツリーは、下位なほど具体的であり、上位なほど、抽象度が高くなります。
「Has-aツリー」は、「AはBを持つ」という関係を表したものです。
たとえば、
「建物」は「ドア」、「窓」を持つ。
「学校」は、「先生」、「生徒」を持つ。
「病院」は、「医者」、「患者」、「看護師」を持つ。
といったデータモデルになっています。
「心のモデル」が、「概念ツリー」と「Has-aツリー」を持っていたとします。
そこから、このモデルに合致する単語をランダムに選び、文として出力させます。
たとえば、「建物は窓を持つ」といった風に。
特に、問題ないですよね。
こうやって、AIが出力する文を人間が判断していくわけです。
上位概念が持つものは、下位概念も持つので、
「学校は窓を持つ」
「小学校は窓を持つ」
といった文も出力されます。
https://robomind.co.jp/sizengengosyorihenoteigen4/

>>616
心のモデルの基礎はやはりチンポ!

717 :デフォルトの名無しさん:2020/08/30(日) 10:15:58.81 ID:g5q4aE3p.net
>>716
全く違う。
キミは間違っている。

718 :デフォルトの名無しさん:2020/08/30(日) 10:20:20.87 ID:zRn3rglz.net
そう言う意味じゃオブジェクト指向プログラミングも部品を組み合わせる様にプログラミングして行くので考え方としてはWhatだ。
でもクラスが用意されてない部分になると途端にHowになる。
そして>>605で書いた通りオブジェクト指向プログラミングではHow部分を駆逐出来ない。

719 :デフォルトの名無しさん:2020/08/30(日) 11:13:19.74 ID:i3Iv6gG3.net
オブジェクト指向プログラミング言語とオブジェクト指向は違う!

>>718
>オブジェクト指向プログラミングも部品を組み合わせる様にプログラミングして行くので

オブジェクト指向とは、繋がっているけれども独立しているという意味で、俺の股間に付いているモノだ!

720 :デフォルトの名無しさん:2020/08/30(日) 11:24:47 ID:i3Iv6gG3.net
オブジェクト指向とは、決してプログラミングの手法ではない!

>>718
>オブジェクト指向プログラミングも部品を組み合わせる様にプログラミングして行くので

オブジェクト指向とはまさに俺の股間に付いているのであって、それはプログラミングとは無関係である!

721 :デフォルトの名無しさん:2020/08/30(日) 12:07:11.69 ID:7OtexdeL.net
>>540
オシッコするときのチンポは「関数型」ね!

722 :デフォルトの名無しさん:2020/08/30(日) 12:39:27.27 ID:j2JU6h3h.net
https://ja.wikipedia.org/wiki/関数型言語#関数型プログラミングの例
VBAで書くとこういうことですな

手続き型
Function fibona(num As Integer) As Integer
 Dim x As Integer, y As Integer, tmp As Integer
 x = 1: y = 1
 For i = 2 To num
  tmp = x: x = y: y = y + tmp
 Next
 fibona = y
End Function

関数型
Function fibona2(num As Integer) As Integer
 If num < 2 Then fibona2 = 1 Else fibona2 = fibona2(num - 2) + fibona2(num - 1)
End Function

なるほど、「フィボナッチ数列は前2個を再帰的に足す」という要件が、下の方が見えやすいね
この場合は上の方が呪文
ただ下は要件は見えやすいが、なんとなくであって、動作に確証は持ちにくいわな

しかし引数が10の時、上は9ループだけど下は177回!
それ専用の言語はうまくコンパイルするのかな

723 :デフォルトの名無しさん:2020/08/30(日) 12:46:58.39 ID:j2JU6h3h.net
フィボナッチはたぶんSQLでは書けんね
SQLは全行同時処理するところに速さの秘訣があるので、逐次処理や再帰処理はその利点を生かせない
(T−SQLには制御文もあるので書くことは書けるが)

724 :デフォルトの名無しさん:2020/08/30(日) 12:49:20.46 ID:BWuiy1TR.net
最低限SOLIDくらい理解してから語ってくれよ。。

725 :デフォルトの名無しさん:2020/08/30(日) 12:54:15.74 ID:yxkdlNNK.net
>>723
CTEとか使えば標準でもできるよ

726 :デフォルトの名無しさん:2020/08/30(日) 12:59:10.56 ID:j2JU6h3h.net
Function fibona(num As Integer) As Integer
 Dim i As Integer, x1 As Integer, x2 As Integer
 x1 = 1: x2 = 1
 For i = 2 To num
  fibona = x1 + x2
  x1 = x2
  x2 = fibona
 Next
End Function
(さっきのは i の宣言が抜けてた)

こう書けば「前の2個を足す」という意味が分かりやすいのでは?
何言語を使おうとセンスの問題だったり

727 :デフォルトの名無しさん:2020/08/30(日) 13:07:28.54 ID:j2JU6h3h.net
>>725
言われてググって思い出したが、昔ちらっと使ってみたことあったようななかったようなw
WITHって覚えてるな
遅いからやめたんだっけかな

728 :デフォルトの名無しさん:2020/08/30(日) 13:25:08.04 ID:i3Iv6gG3.net
>>717
クリントン大統領もチンポがしこしこしてしまったのだが?

729 :デフォルトの名無しさん:2020/08/30(日) 13:41:34.87 ID:i3Iv6gG3.net
メッセージングとは「対話」ね!

>>155
>オブジェクト指向のコア概念メッセージングがなぜ提唱されたか察するに

オブジェクトは必ずオブジェクト同士の「対話」を伴う、これがメッセージングだ!

928 デフォルトの名無しさん 2018/11/21(水) 18:59:11.61 ID:8Yc2p7H1
>>922
>ナンチャッテメッセージングスタイルになったのは

チンポ.オシッコを出す
チンポ.オシッコを止める

さっきトイレでやってきた。


929 デフォルトの名無しさん 2018/11/21(水) 19:07:17.83 ID:8Yc2p7H1
>>915
>単なる動的なメソッド呼び出しをメッセージと称し、ただしコールするメソッドが見つからない場合だけメッセージを
>ハンドリングできる省コストなナンチャッテメッセージングスタイルに落ち着いた。

×
俺.オシッコを止める 俺.オシッコを出す

俺.チンポに力を入れる 俺.チンポから力を抜く

730 :デフォルトの名無しさん:2020/08/30(日) 13:45:23.95 ID:i3Iv6gG3.net
>>550
女子のブルマ姿に勃起してチンポがしこしこしてしまわないよう、あらかじめオナニーしとくことが大切。
それからチンポがしこしこしてしまった場合でも、急いでトイレに駆け込んでオナニーしておくことが大切。
オシッコが出るのか精液が出るのかは、本人にしかわからないことで「カプセル化」されている。

731 :デフォルトの名無しさん:2020/08/30(日) 14:10:38.58 ID:i3Iv6gG3.net
言葉の意味を追求しない統計的機械翻訳は、2010年のIBMワトソンでおしまい。

>現在の GUO では本質に関する議論を保留しており、多重継承を許容している。

自然言語のロゴスを徹底的に追求するには、オブジェクトの多重継承は必須!

732 :デフォルトの名無しさん:2020/08/30(日) 14:14:03.24 ID:j2JU6h3h.net
とはいえ、これを with でどうやって書くのか、ちょっと思いつかん
(これは2個ずつ処理してるので変数でやった方がいい処理だが)

select n, f =1 into #n
from (
select n =1
union select n =2
) n;

while (select max(n) from #n)<=10
begin

insert #n
select n.n, f =isnull(n1.f+n2.f,1)
from (select n =max(n)+1 from #n) n
left join #n n1 on n1.n=n.n-1
left join #n n2 on n2.n=n.n-2
order by n.n desc;

end;
go_end:

select * from #n;
drop table #n;

733 :デフォルトの名無しさん:2020/08/30(日) 14:15:27.47 ID:j2JU6h3h.net
あれ、
order by n.n desc;  ←これは余計

734 :デフォルトの名無しさん:2020/08/30(日) 14:17:32.56 ID:i3Iv6gG3.net
チンポがオシッコ出したり止めたり勃起したり射精したりするのは古今東西共通であり、

>>552
>俺が言ってるのは40にもなって
>オシッコとかチンポとか、恥ずかしくないのかってことなんだがw

恥ずかしがらずに「チンポがシコシコする」という新しい表現を受け入れることが大切!

「帽子」と言ってもいろんな帽子があるが、「チンポ」は一人につき一つであり、一対一の対話が可能!

735 :デフォルトの名無しさん:2020/08/30(日) 14:22:00.66 ID:i3Iv6gG3.net
クリントン大統領もチンポがシコシコしてしまったのであり、

>オントロジーは「情報の意味を定義するための概念」であり

官能小説はいくらでもあるし、アダルト映画もいくらでもある。チンポがシコシコという表現があれば、
アニメからホワイトハウスまであらゆるオントロジーを作成出来るはずだ!

736 :デフォルトの名無しさん:2020/08/30(日) 14:29:52.73 ID:i3Iv6gG3.net
>オントロジーは「情報の意味を定義するための概念」であり

977 デフォルトの名無しさん 2018/09/17(月) 07:24:42.74 ID:C7pw6n1T
自然言語処理の知識はゼロなのでわからないです。面白いアイデアだと思うので、Twitterの自然言語処理が専門の方々に聞いてみては?
https://peing.net/ja/q/417c9e29-35de-4c95-8323-afd6a50fcbc7

コンピューターのための自然言語理解シミュレ
ーターというのは可能ですか?

例えば第二次大戦の推移について、言葉ではな
くて動画で理解する方法もあります。
言葉で説明するよりもマインクラフトのような
創作ゲーム表現に変えたほうが分かりやすいで
す。
けれども自分が読み漁った人工知能や自然言語
処理の本にはそうしたアプローチは見つからな
かったです。
言語はただの記号の羅列で機械は現実世界を全
く知らない。でもそういうことなら、
テレビゲームのような仮想世界をインプットし
て、自然言語で操作したらいいと思います。
というか自然言語入力でときめきメモリアルみ
たいなゲームをやってみたいてす。

737 :デフォルトの名無しさん:2020/08/30(日) 23:16:48.18 ID:j2JU6h3h.net
よくよく考えると、フィボナッチで「定義」通りにやってるのは手続き型
なので10回の指定で9回計算し、途中経過を出力するとフィボナッチ数列になってる

関数型は最後のフィボナッチ数は出てくるが、177回も計算し、途中経過は意味不明な数字になってる
数列で欲しい場合、この関数を10回使うか、手続き型の別の関数を用意することになる

738 :デフォルトの名無しさん:2020/08/31(月) 00:07:31 ID:RyTJNMW1.net
>>737
ループと同じにするならこうかと

Function Fibo(n, a, b)
 If n = 1 Then
  Fibo = b
  Exit Function
 End If

 Fibo = Fibo(n - 1, b, a + b)
End Function

739 :デフォルトの名無しさん:2020/08/31(月) 00:15:22 ID:RyTJNMW1.net
ループの実装であっても
「関数は同じ引数を与えられた場合、同じ値を返す」
を満たすから参照透過性があると考えて
関数型プログラミングとみなしてもよいと僕は思います

740 :デフォルトの名無しさん:2020/08/31(月) 01:34:59 ID:abwkhqHt.net
>>738
おお、これは
wiki は「関数っぽさ」の説明のためであって、ほんとはこうなのかな

共通テーブルは自己参照が1個しか書けないから、2個前が参照できず、
そのように前の加算結果も最新行に保持するしかないなと、思ったところで断念w

declare @n int =0;
select n =@n into #n;
while @n<10 begin set @n =@n+1; insert #n select @n; end;
--↑整数マスタがあるとして

with nn(n, f, f1) as (
select n, f =1, f1 =0 from #n where n>=2 and n<=10
union all
select n.n, f =n1.f1, f1 =n1.f+n1.f1
from #n n inner join nn n1 on n1.n=n.n-1
)
select sum(f)+1 from nn;

drop table #n;

最後の+1が逃げっぽいけどw
共通テーブルは1個の上に外部結合も許可されず(できたとろこでスマートになるかは不明)

しかし同じ発想のようで、そっちは途中経過が綺麗な数列
こっちは意味不明な45レコード
その上、意味不明度が上がるのでやめた方がいいなw

741 :デフォルトの名無しさん:2020/08/31(月) 01:56:42.46 ID:abwkhqHt.net
共通テーブルのサンプルを見ると、20年前の若気の至りを思い出すな
リレーショナルだから、2列のキーのみで可変階層がスマートじゃないかと
できるからって工事の積算なんかに使うと、えらいことになる
20年前と今ではPCの性能違うだろうけど

現実には階層を固定で持っても十数列で済んだり、なんなら255列用意しても大したことない
泥臭くてもその方が圧倒的に速く、再利用性も高いのが現実

742 :デフォルトの名無しさん:2020/08/31(月) 09:44:30.49 ID:wxThvNjw.net
構造化プログラミングの再帰処理で階乗やディレクトリ探索しか例がない理由を考えたことあるのか。
逆に、分岐条件や判定が複雑に入り混じったいわゆる手続きを関数型で実現する例が少ない理由を考えたことがあるのか。

関数バカは死ね。

743 :デフォルトの名無しさん:2020/08/31(月) 09:55:23.77 ID:zAiif6l8.net
> 構造化プログラミングの再帰処理で階乗やディレクトリ探索しか例がない理由を考えたことあるのか。

再帰処理をしたことがない人でも知っているものだからだよ

> 逆に、分岐条件や判定が複雑に入り混じったいわゆる手続きを関数型で実現する例が

例として持ち出す時、手続き型でも分岐条件や判定が複雑に入り混じったっものは使わないよ


理由はこれでいいと思うけど、
なんで関数バカは死ねって最後に捨て台詞はいたの?

744 :デフォルトの名無しさん:2020/08/31(月) 11:08:51.82 ID:f7jpNd8/.net
>>722
単純な再帰だと関数型言語でもスタック消費するけど、モナドのインスタンスになってる再帰関数や、末尾再帰はループにコンパイルされる。
(リストはモナドのインスタンスなので、リストを受け取ってリストを返す関数は再帰でもループになる。IOな関数も同じく)

手続き型言語でもC/C++とJavaScriptは末尾再帰のループ化は対応してる。

745 :デフォルトの名無しさん:2020/08/31(月) 11:19:36.36 ID:ZrRJaCUf.net
愚かな・・・なんて愚かな・・・

※戦場のピアニスト

746 :デフォルトの名無しさん:2020/08/31(月) 11:30:50.52 ID:f7jpNd8/.net
>>742

条件分岐や判定が複雑に入り混じった様なのは、むしろ関数型言語や論理型言語の得意分野だけど・・・。
今まで関数型言語が苦手と言うか、純粋さを捨てていた手続きってのは

putStrLn str
print n

みたいな戻り値が無い関数(voidな関数や戻り値を普段は使わない関数)が続く様な処理や入出力。
これを順番を保証するのが難しかった。

そこを圏論でプログラム丸ごと関数の様なものとして順番を保証しつつ参照透明性を確保する事で大きな意味での(個人的に純粋とは言わない気もするが)純粋関数型言語を実現した。

putStrLn str >>= \_ -> print n

上の糖衣構文

putStrLn str >> print n

do形式で手続き型言語っぽく(手続き型言語っぽいとはいえ、しっかり関数型言語なので一つの巨大な式に還元される)

do
putStrLn str
print n

747 :デフォルトの名無しさん:2020/08/31(月) 13:40:25 ID:ZrRJaCUf.net
これからの時代、多態性よりポリリズムのほうが重要。

748 :デフォルトの名無しさん:2020/08/31(月) 14:31:14.55 ID:3l02ZOhc.net
何回繰り返すんだ…

749 :デフォルトの名無しさん:2020/08/31(月) 15:35:42.21 ID:+mVf3WVi.net
x,y,zをpos2d,zで持つことはないよねって100万回復唱しろ

750 :デフォルトの名無しさん:2020/08/31(月) 17:14:59.79 ID:PbFnPWGE.net
ネタスレのようだが

カプセル化は問題無い
隠蔽化が問題有る

751 :デフォルトの名無しさん:2020/08/31(月) 18:06:13.87 ID:+mVf3WVi.net
単純に実行しないとインターフェースから先に飛ぶことができないのも読みにくい
更にそこから先の処理の可能性がインターフェースを持つクラス全部とかこれまた読みにくい
更にそのクラスのインスタンスの違いについても追わなきゃいけなくて結果としてゴミクズ

752 :デフォルトの名無しさん:2020/08/31(月) 18:45:27.41 ID:Tn5kdrj1.net
カプセル化はいまいちメリットわからんよね
スコープの話なのに徹底できてない点がカプセル化の是非が定まらない原因

753 :デフォルトの名無しさん:2020/08/31(月) 18:49:04.49 ID:+mVf3WVi.net
カプセル化したくせにSetterとかGetter作ってるやつ見ると

「オメェ、ここおかしんじゃねーのか?」

って言いたくなる
アクセスをイベントに限定したいのか?
誰でもいつでもアクセスしたいのかスタンスをハッキリさせろよw

754 :デフォルトの名無しさん:2020/08/31(月) 19:30:45 ID:EhjC94Lv.net
>>747
なにをいまさら

755 :デフォルトの名無しさん:2020/08/31(月) 20:27:11.07 ID:JFSQLtY4.net
>>753
setterとgetterを準備するぐらいならいさぎよく
publicにした方が「私は」いいと思うけどな

756 :デフォルトの名無しさん:2020/08/31(月) 20:59:45.24 ID:I/LqRe2u.net
そうですか

757 :デフォルトの名無しさん:2020/08/31(月) 21:33:12.45 ID:+mVf3WVi.net
>>755
作るソース全部そんな感じの奴がいて邪魔くせぇ

wpfのINotifyPropertyChangedってさ関係ないイベントでも発火して制御できないよね
はじめはsetter、getterでやってたけどあかんわ
発火したいときとそうでないときと手動で分けられないとあかんわ
なんかこれ系のついでに何やらやっちゃおうシステムって開発終盤になると全部ゴミだな

758 :デフォルトの名無しさん:2020/08/31(月) 21:44:33.69 ID:wxThvNjw.net
>>753
Java web appだと、lombock入れてカプセル化壊すのが当たり前になっちまった。
スマホアプリとか組み込み系とかでしっかりコーディングすればいいと諦めてる。

実際、Web アプリ界隈はバカばっかだし。割り切りも大切。

759 :デフォルトの名無しさん:2020/08/31(月) 21:48:45.10 ID:SA/5RSYf.net
>>758
https://codezine.jp/article/detail/7274

>  Javaは言語仕様上の制約により、ボイラープレートコード(自明だが省略できないお決まりのコード断片)が
> いくつかあります。例えば、メンバ変数を読み書きするだけのgetterメソッドやsetterメソッドがこれにあたります。
> Lombokを使えば、これらJava特有の冗長なコードを、見やすく簡潔なものにすることができます。
>
>  LombokではEclipseのような自動生成ではなく、アノテーションを付与することにより
> ボイラープレートコードを実装したのと同じ効果を得ることができます。

単にプロパティをアノテーションで書けるってだけだよね?
これのどこがカプセル化破壊になるの?

760 :デフォルトの名無しさん:2020/08/31(月) 23:12:59.79 ID:KpYRvIVn.net
エラーチェックをしたいときはsetter

761 :デフォルトの名無しさん:2020/09/01(火) 00:02:49 ID:TdzDL303.net
もしかして
貧血ドメインモデル

762 :デフォルトの名無しさん:2020/09/01(火) 00:41:56.64 ID:EzjTWAdj.net
>>760
それ、エラーチェックをしたいときはpublicメソッド呼び出しと
言ってるのと同じことだけど、何の関係があるの?

763 :デフォルトの名無しさん:2020/09/01(火) 00:52:29 ID:PZXbhIm5.net
JavaBeansではセッタとメソッドは別の概念
セッタを通じて状態にアクセスすることでオブジェクトは
よりスマートになる

764 :デフォルトの名無しさん:2020/09/01(火) 00:54:01.92 ID:PZXbhIm5.net
一周回ってアクセサが再評価される段階に入った

765 :デフォルトの名無しさん:2020/09/01(火) 02:05:29.12 ID:ETu8a3Hk.net
>>763
なんねーよ
バカジャネーノ
ブッコロ

766 :デフォルトの名無しさん:2020/09/01(火) 02:06:41.53 ID:ETu8a3Hk.net
何がカプセル化だよ
settergetter使うなら丸出しと変わんねーよ

767 :デフォルトの名無しさん:2020/09/01(火) 02:27:10.74 ID:/xk9LnpH.net
これからの時代、多態性よりポリフェノールのほうが重要。

768 :デフォルトの名無しさん:2020/09/01(火) 04:55:11.55 ID:Z9W01AEm.net
下駄 雪駄

769 :デフォルトの名無しさん:2020/09/01(火) 09:15:18.95 ID:G32wsX1x.net
>>766
そんなわけないやろ。

770 :デフォルトの名無しさん:2020/09/01(火) 09:26:14.90 ID:PZXbhIm5.net
>>766
おいお前それはないよ

771 :デフォルトの名無しさん:2020/09/01(火) 10:03:35.97 ID:EzjTWAdj.net
>>766
お前もしかしたら全てのメンバ変数に
setter/gette作ってんのか?
お前が丸出しにしてるだけだろw

772 :デフォルトの名無しさん:2020/09/01(火) 10:13:31.32 ID:FqTPqd+i.net
これこそ露出狂という奴だなw

773 :デフォルトの名無しさん:2020/09/01(火) 11:42:47 ID:G32wsX1x.net
今時、意図せずフィールド丸出しはない

774 :デフォルトの名無しさん:2020/09/01(火) 11:53:13.42 ID:4pPofKRH.net
>>771
は?そもそもオブジェクト指向とか言うクソ使ってねーわ

775 :デフォルトの名無しさん:2020/09/01(火) 12:14:48.18 ID:lpkaZteT.net
>>774
オブジェクト指向は既に俺の股間に付いているのだから、オブジェクト指向プログラミング言語は要らない!

776 :デフォルトの名無しさん:2020/09/01(火) 12:27:07.84 ID:wBGQmF0I.net
だから適切なインターフェイス作成ができないなら素直に関数にしとけと。。
馬鹿に限って自分のクラス設計に自信持ってんだよな。。

777 :デフォルトの名無しさん:2020/09/01(火) 12:50:13.91 ID:/xk9LnpH.net
CSSはJavascriptで実装されただけあって、仕様も混沌としてるな。
動的確保前提の設計なので、いちいちイラっとする。

778 :デフォルトの名無しさん:2020/09/01(火) 12:52:31.23 ID:1Eq9ttpo.net
ハァ?

779 :デフォルトの名無しさん:2020/09/01(火) 12:59:45.89 ID:/xk9LnpH.net
教科書は「後で説明するので今はそういうものだと思ってください」というのは無い。
前から順番に読んでいくと、説明なく出てくるものが無いのである。

仕様を書くときは、教科書のように書くことを徹底する。
するとどうなるか?
相互参照が無くなるのである。
相互参照が無くなれば、変数の大きさは一意に決まる。
つまり不要不急の動的確保が無くなるのである。

これがC/C++の掟である。

780 :デフォルトの名無しさん:2020/09/01(火) 13:15:28.27 ID:Z9W01AEm.net
今まで見たもっともひどいクラス設計は?

781 :デフォルトの名無しさん:2020/09/01(火) 13:22:15.49 ID:EzjTWAdj.net
>>779
1+1=2なんです。今はそういうものだと思ってください。
って最初からやってるぞw

782 :デフォルトの名無しさん:2020/09/01(火) 13:26:52.52 ID:/xk9LnpH.net
Javaのようなお猿さん言語はプリミティブ以外はすべて参照、つまり動的に確保される。
だからいつでもどこでも動的でいいのだなどと思わないでほしい。
あなた方はお猿さん。
そしてお猿さん用言語を使っている。
しかし、世の中には人間もいることを忘れないでほしい。

人間はもっと効率の良い設計を求めるものだ。

783 :デフォルトの名無しさん:2020/09/01(火) 13:31:17.95 ID:EzjTWAdj.net
Javaのような人間用言語はプリミティブ以外はすべて参照、つまり動的に確保される。

というふうに入れ替えても問題ないんじゃね?w

784 :デフォルトの名無しさん:2020/09/01(火) 13:35:01.05 ID:/xk9LnpH.net
入れ替えた場合、C/C++は天才用言語になるからダメだ。

785 :デフォルトの名無しさん:2020/09/01(火) 14:09:37.70 ID:FqTPqd+i.net
>>779
小学生の教科書からやり直せ

786 :デフォルトの名無しさん:2020/09/01(火) 14:12:06.91 ID:ETu8a3Hk.net
脳筋プログラマばっかりだな

787 :デフォルトの名無しさん:2020/09/01(火) 15:05:15.80 ID:OC0cfHje.net
>>780
MFC

788 :デフォルトの名無しさん:2020/09/01(火) 15:29:52.72 ID:fuWow3G5.net
>>781
高校までの教科書は大学入ったら全部役に立たないよなω

789 :デフォルトの名無しさん:2020/09/01(火) 15:31:01.61 ID:fuWow3G5.net
>>787
あれはただのwrapper以下だからなー

790 :デフォルトの名無しさん:2020/09/01(火) 15:51:55.50 ID:/xk9LnpH.net
MFCは30年前のライブラリだからな。
よくまあここまで生き残ったわ。

791 :デフォルトの名無しさん:2020/09/01(火) 16:28:44.96 ID:fuWow3G5.net
同じ時期かそれより前にあった OWL の方が10000倍マシだった

792 :デフォルトの名無しさん:2020/09/01(火) 20:39:35.27 ID:QR4OvP6I.net
御子を捨てよ、良いな?

793 :デフォルトの名無しさん:2020/09/01(火) 21:24:37.44 ID:eOhMfKjO.net
Delphi最強

794 :デフォルトの名無しさん:2020/09/01(火) 21:52:46 ID:NYV7WRkk.net
>>779
Javaの教科書には

class Test {
public static void main(argv[]) {
System.out.println("Hello");
}

とりあえずこれで動きます。「あとで説明するので今はそういうものだと思ってください」
と堂々と書いてあるぞ。

795 ::2020/09/01(火) 22:55:07.49 ID:RK7Kdsp4.net
>>794
× public static void main(argv[]) {
○ public static void main(String[] argv) {

796 :デフォルトの名無しさん:2020/09/01(火) 23:46:39.13 ID:cXm81OcM.net
プロパティは、可変階層と同じく若気の興味本位系ではあるが
ベテランになってからも、いくつか使ったことはある

設定時処理のカプセル化
カプセル化と言っても隠したいわけじゃなく、設定する時に絶対にこの処理を通す、という便利機能
「発火」は未経験だが、下手な作りだとなり得る構造だね
ちゃんとできてたとしても、よほどの事情がない限り、普通の関数で書いた方がシンプルで理解もしやすいと思う

なぜ使ったのか、過去ソースを見てみたら、なるほどw
SET時だけでなくGET時にも複雑な処理があるものがあり、これをそれぞれ関数で書くと、関数名が2倍に増える
少なくとも関数名の数を半分にする効能はある
言ってみれば1つの関数に2つの内部関数がある構造なので

797 :デフォルトの名無しさん:2020/09/02(水) 00:29:23.85 ID:KTyhBksd.net
ベテランねー

798 :デフォルトの名無しさん:2020/09/02(水) 01:31:27.80 ID:J/rUgEv/.net
関数でもできるな
引数が未設定ならGET動作に切り替わると
実際そういう関数も作る
プロパティだと逆に2個になってしまう言語の場合

799 :デフォルトの名無しさん:2020/09/02(水) 01:58:36.95 ID:HgpWbw0i.net
藻前ラ、モチツケ
https://i.imgur.com/DJzoN7F.jpg

800 :デフォルトの名無しさん:2020/09/02(水) 08:33:16.30 ID:yy35G5fq.net
>>759
Lombok調べてきました感がw

お前が実務経験ないアマチュアってことはよくわかったから口出さないでくれ。

801 :デフォルトの名無しさん:2020/09/02(水) 09:26:13.66 ID:9/rkp9iy.net
単純なValueオブジェクトはCとかだと
struct Color {
int r, g, b;
};
Color color;
int red = color.r;
みたいに書けるところをわざわざgetter/setter毎回作るの?
アホらしくない?

802 :デフォルトの名無しさん:2020/09/02(水) 10:33:19.59 ID:ifuz91bD.net
>>800
何も言い返さないのかよw

803 :デフォルトの名無しさん:2020/09/02(水) 10:36:53 ID:lZ/LLDT1.net
>>801
Valueオブジェクトって何か知ってる?

804 :デフォルトの名無しさん:2020/09/02(水) 11:10:55.31 ID:Hwtp1D+h.net
オブジェクト指向はフレームワーク実装者が意識すべきもの
フレームワーク利用者はその枠でただベタにアプリ実装すればよい

プロパティはフレームワーク実装側から見ると自分自身に対しては何も利益がないけど
フレームワーク利用者の行動をコントロールできるという点で利益がある

805 :デフォルトの名無しさん:2020/09/02(水) 12:01:34.43 ID:9/rkp9iy.net
ValueオブジェクトってDDD関連で出てくる単語だったのね
その意味では知らなかったけど、そんなこと聞きたいんじゃない

806 :デフォルトの名無しさん:2020/09/02(水) 12:08:34.16 ID:64Ct0prY.net
>>801
必要なら作っていいし、必要ないならCみたいに書けばいい

807 :デフォルトの名無しさん:2020/09/02(水) 12:21:27.36 ID:9/rkp9iy.net
ホントかなぁJava触ってるやつらは
getter/setter使わず単にpublicフィールドにしたら
文句行ってきそうなイメージだったけど

808 :デフォルトの名無しさん:2020/09/02(水) 12:33:16.41 ID:KTyhBksd.net
ValueObjectはReadOnlyが基本だからfinalにして変数をpublicにします

809 :デフォルトの名無しさん:2020/09/02(水) 13:30:42.14 ID:FrAP3fk+.net
オブジェクト指向に対する愚痴を延々と続ける人には主に2つのタイプがある。

1つはその人にとってオブジェクト指向が新しいパラダイムでありそれを受け入れる事が出来なかった老害タイプ。

もう1つはJavaを通してしかオブジェクト指向を理解しようとしないJava屋の土方タイプ。

両方の属性を持ったタイプが最もタチが悪い。

810 :デフォルトの名無しさん:2020/09/02(水) 13:31:38.92 ID:6n47TPOy.net
>>809
そもそも誰もメリット説明できてないけどねw

811 :デフォルトの名無しさん:2020/09/02(水) 13:53:16.93 ID:HxHRAGOQ.net
>>810
メリットがわからないなら使わなければいいだけ

812 :デフォルトの名無しさん:2020/09/02(水) 13:56:40.83 ID:6n47TPOy.net
メリットのつもりだけどちっともメリットになってないやつがいるよな
不必要な階層化が明らかにバグ増やしてるやつ

やめとけって

813 :デフォルトの名無しさん:2020/09/02(水) 14:23:36.56 ID:b48j9NlC.net
>>779
ホントか?

https://ezoeryou.github.io/cpp-intro/

コレのHelloWorldには「コードの詳細な意味はさておくとして」とあるぞ

814 :デフォルトの名無しさん:2020/09/02(水) 17:14:55.68 ID:KTyhBksd.net
C++のこれダサくない?
std::cout << "hello" ;

<<これダサくない?

イキりマンが設計したとしか思えない

815 :デフォルトの名無しさん:2020/09/02(水) 17:53:01.12 ID:6n47TPOy.net
>>814
俺もクソだと思う

816 :デフォルトの名無しさん:2020/09/02(水) 17:57:46.65 ID:PicHUi2j.net
明らかに (hoge)printf の方が使い易い

817 :デフォルトの名無しさん:2020/09/02(水) 18:23:05.03 ID:oyfP4D/d.net
C++でそれ使った事無かったなw
何故かhello worldではそのコードが書かれている事が多いけどw

818 :デフォルトの名無しさん:2020/09/02(水) 18:31:49.16 ID:X9xcF9vI.net
std::cout << "hello" << std::endl;

819 :デフォルトの名無しさん:2020/09/02(水) 19:19:30.10 ID:9/rkp9iy.net
ダサいけどprintfのセキュリティ的な問題がないから使っておる

820 :デフォルトの名無しさん:2020/09/02(水) 21:24:37.75 ID:Hwtp1D+h.net
>>814
普段からLinuxを使ってないとその発想にならないと思う
PHPのほうが自然

821 :デフォルトの名無しさん:2020/09/02(水) 21:42:32.36 ID:/nOWjplL.net
>>809
「オブジェクト指向を妄信する人への揶揄」が「オブジェクト指向に対する愚痴」に見えている可能性

822 :デフォルトの名無しさん:2020/09/02(水) 21:44:17.02 ID:vGE3/anR.net
>>821
>「オブジェクト指向を妄信する人への揶揄」が

ならば「チンポがシコシコする」という日本語表現は、文法的に正しいのか?

チンポ「を」シコシコするのではなくて、チンポ「が」シコシコする。この場合、「チンポ」は主語となる。

オブジェクト指向で言う「集約」は2種類あって、全体(俺)と部分(チンポ)が繋がっている場合と、
全体(俺)と部分(チンポ)が別々になっている場合とが考えられる。けれども「チンポ」はそれ自体
が独立した生き物であり、所有者の意思とは無関係に、勃起して「シコシコする」。
例えば寝てる時にエロい夢みて朝起きてみたらチンコが勃起して射精してたとか。

違うか?

「胸がドキドキする」は良いが、「チンポがシコシコする」はダメな理由を、50字以内で述べろ!

823 :デフォルトの名無しさん:2020/09/02(水) 21:46:22.75 ID:vGE3/anR.net
>>809
>1つはその人にとってオブジェクト指向が新しいパラダイムであり

俺の股間に付いているモノは「オブジェクト指向」とは違うのか?

824 :デフォルトの名無しさん:2020/09/02(水) 21:51:21.43 ID:C0O9Iab7.net
>>804
フレームワーク作成者の
身の保身のために
無意味な作業何度もさせられるんか?

フレームワークだけやないで
大抵の既存クラスがそんなもんや

825 :デフォルトの名無しさん:2020/09/02(水) 21:51:33.18 ID:iHJfSlZg.net
>>811
老害のドカタに使わないという選択肢があると思うか?

選ぶ自由がない環境でしか生きられない上にリアルで相手にされないから5chで愚痴を言い続ける。

低脳低スキルを他者のせいにするメンタリティのやつには何言っても無駄よ。建設的議論にはなりえない。

826 :デフォルトの名無しさん:2020/09/02(水) 22:01:00.56 ID:vGE3/anR.net
>>810
「チンポがシコシコする」という日本語は、何かオカシイか?

827 :デフォルトの名無しさん:2020/09/03(木) 00:55:17 ID:oPPXaQOW.net
>>825
イキってクソコード撒き散らす害悪よりかはマシだけどな。
お前のクソスキルはどうでもいいからとりあえず関数かけ馬鹿。

828 :デフォルトの名無しさん:2020/09/03(木) 01:19:00.75 ID:UIrbSeQG.net
藻前ラ、モチツケ
https://i.imgur.com/2QRRE2u.jpg

829 :デフォルトの名無しさん:2020/09/03(木) 11:50:45 ID:DK3Ul6vK.net
誰?
タイトルは?

830 :デフォルトの名無しさん:2020/09/03(木) 12:14:39 ID:HRrMH9TX.net
>>829
必死だな(藁

831 :デフォルトの名無しさん:2020/09/03(木) 14:28:11.70 ID:GKTly5Nv.net
SubjectとObjectの違い

832 :デフォルトの名無しさん:2020/09/03(木) 17:30:23.79 ID:9nAKzDdi.net
結局これ人間性の問題なのよ。

カプセル化を容認するような人間は、犯罪も容認するし、なにも守れない。

833 :デフォルトの名無しさん:2020/09/03(木) 17:31:02.51 ID:ZSeh1kM5.net
>>814
それがかっこよかったんだよ。

834 :デフォルトの名無しさん:2020/09/03(木) 17:31:54.36 ID:ZSeh1kM5.net
型安全なprintfですんだ話し

835 :デフォルトの名無しさん:2020/09/03(木) 18:52:57.27 ID:D+Mzdye0.net
僕はオチンチニストです

836 :デフォルトの名無しさん:2020/09/03(木) 21:35:19 ID:9nAKzDdi.net
オポンティーヌと言えば、あわしろいくやを連想してしまうな。

837 :デフォルトの名無しさん:2020/09/03(木) 23:15:25.43 ID:/DfmFXGp.net
オブジェクト指向否定する前に小学校の国語からやりなおせカス

838 :デフォルトの名無しさん:2020/09/03(木) 23:26:55 ID:s/nu4dlU.net
>>837
オブジェクト指向は俺の股間に付いているからな!

839 :デフォルトの名無しさん:2020/09/03(木) 23:44:41 ID:HRrMH9TX.net
ズンドコベロンチョは至高!
ズンドコベロンチョ否定する前に小学校の国語からやりなおせカス

何にでも使える。

840 :デフォルトの名無しさん:2020/09/04(金) 01:10:13.14 ID:gbrpP/bR.net
https://video.twimg.com/ext_tw_video/1293154574795067398/pu/vid/1280x720/8c4iCDgG8QEnD1Y9.mp4

841 :デフォルトの名無しさん:2020/09/04(金) 17:25:27.12 ID:i4uc+bjy.net
オブジェクト指向は設計を間違えるときついことが起こる。
C++みたいな純ではないのはその辺り、コードがわかりにくくなるだけでなんとか対応できる。

842 :デフォルトの名無しさん:2020/09/04(金) 17:52:24.10 ID:/hJPKHew.net
関数型言語は設計を間違えるときついことが起こる。

そして正しい設計の話は一切でない
ボタンを作るにはどうすればいいんだ?

843 :デフォルトの名無しさん:2020/09/04(金) 18:14:27 ID:0wfgbo8M.net
>>842
GUI Toolkitしだいだと思うよ
F#ならnew Buttonで作れる

844 :デフォルトの名無しさん:2020/09/04(金) 18:23:09 ID:zzSWw99B.net
>>839
「ズンドコベロンチョ」は、俺の股間に付いている!

845 :デフォルトの名無しさん:2020/09/04(金) 18:26:08.59 ID:/hJPKHew.net
>>843
> F#ならnew Buttonで作れる
そりゃオブジェクト指向の機能を使ってるからな

846 :デフォルトの名無しさん:2020/09/04(金) 18:27:32.23 ID:0wfgbo8M.net
>>845
関数型言語ではオブジェクト指向の機能を使います

847 :デフォルトの名無しさん:2020/09/04(金) 18:33:51.31 ID:/hJPKHew.net
>>846
単に「オブジェクト指向の機能を使います」で十分でしょw

848 :デフォルトの名無しさん:2020/09/04(金) 18:35:52.20 ID:0wfgbo8M.net
>>847
何の話ですか?

849 :デフォルトの名無しさん:2020/09/04(金) 18:37:23.97 ID:/hJPKHew.net
>>848
どの言語でもオブジェクト指向を使うという話です。

850 :デフォルトの名無しさん:2020/09/04(金) 18:39:00.61 ID:0wfgbo8M.net
>>849
つまり関数型言語ではオブジェクト指向の機能を使うってことですね

851 :デフォルトの名無しさん:2020/09/04(金) 18:40:16.94 ID:0wfgbo8M.net
関数型言語は「どの言語」に含まれます

852 :デフォルトの名無しさん:2020/09/04(金) 18:41:18.57 ID:0wfgbo8M.net
> ボタンを作るにはどうすればいいんだ?
関数型言語だからといって悩む必要などないのです
ボタンはnew Buttonで作れます

853 :デフォルトの名無しさん:2020/09/04(金) 18:42:55.29 ID:67e8l95x.net
>>850
「関数型を名乗っている言語でも」っていうのが正確ですね
なので純粋な関数型では不可能なんです。

854 :デフォルトの名無しさん:2020/09/04(金) 18:43:21.23 ID:67e8l95x.net
>>852
さっきも書いたように、それはオブジェクト指向の機能です。

855 :デフォルトの名無しさん:2020/09/04(金) 18:44:27.17 ID:67e8l95x.net
F#はオブジェクト指向言語+関数型言語
オブジェクト指向言語に関数型を取り入れた言語なんです。
純粋な関数型ではないんです。

856 :デフォルトの名無しさん:2020/09/04(金) 18:46:57.81 ID:0wfgbo8M.net
>>853
ボタンの機能にはGUI Toolkitが必要です
HaskellでGtkを使う例
https://www.stackbuilders.com/tutorials/haskell/gui-application/

857 :デフォルトの名無しさん:2020/09/04(金) 18:48:03.77 ID:0wfgbo8M.net
>>854
関数型言語ではオブジェクト指向の機能を使います

858 :デフォルトの名無しさん:2020/09/04(金) 18:52:10.66 ID:67e8l95x.net
結局の所、有用なものはすべてオブジェクト指向なんです。

859 :デフォルトの名無しさん:2020/09/04(金) 18:55:33.07 ID:0wfgbo8M.net
関数型言語も有用なのでオブジェクト指向と言って良いでしょう

860 :デフォルトの名無しさん:2020/09/04(金) 18:57:15.82 ID:0wfgbo8M.net
オブジェクト指向関数型言語を省略したものが関数型言語なのでしょうね
オブジェクトを作れない、オブジェクトを操作できない関数型言語は存在しません

861 :デフォルトの名無しさん:2020/09/04(金) 19:44:45.33 ID:0q9nxY6X.net
>>849
オブジェクト指向は俺の股間に付いている!

862 :デフォルトの名無しさん:2020/09/04(金) 22:01:21 ID:7/5Xc9M6.net
>>657
どうにかして、そのパンティーに俺のおちんちんを突っ込みたい。

863 :デフォルトの名無しさん:2020/09/05(土) 01:24:48.25 ID:Tue1Ajzg.net
https://video.twimg.com/ext_tw_video/1256123469747703808/pu/vid/392x360/Vrjt4lsyRUbuGK8R.mp4?tag=10

864 :デフォルトの名無しさん:2020/09/05(土) 02:33:11 ID:7d8HPhGj.net
それも有用なのでオブジェクト指向と言って良いでしょう
結局、都合の良いことはすべてオブジェクト指向なんです

865 :デフォルトの名無しさん:2020/09/05(土) 02:35:09 ID:Rig+HVkc.net
オブジェクト指向の考え方が現れる以前も
有用なものは実はオブジェクト指向を使っていたんです

866 :デフォルトの名無しさん:2020/09/05(土) 02:36:47 ID:yxLRF7gq.net
そもそも関数型はオブジェクト指向の考え方から生まれた概念だったんです

867 :デフォルトの名無しさん:2020/09/05(土) 02:39:27 ID:LysGX1WG.net
>>865
さすがあなたは分かっていらっしゃる
信じるものは救われる   かも
ザーメン

868 :デフォルトの名無しさん:2020/09/05(土) 02:43:18 ID:8p8cEJTs.net
それは真理に対する冒涜です
オブジェクト指向は幻想だったのです

869 :デフォルトの名無しさん:2020/09/05(土) 02:44:53.71 ID:Z6T2tUbK.net
都市伝説、インチキ、ナンチャッテ工学モドキだったのです
でも、それを言っちゃー、お仕舞よ

870 :デフォルトの名無しさん:2020/09/05(土) 02:58:46.45 ID:reBScYEy.net
https://www.youtube.com/watch?v=40W_hc_q8XU&hd=1

871 :デフォルトの名無しさん:2020/09/05(土) 03:04:42.31 ID:reBScYEy.net
https://www.youtube.com/watch?v=K-JtRGYbC8w&feature=youtu.be

872 :デフォルトの名無しさん:2020/09/05(土) 09:07:55.71 ID:D1vNohy2.net
>>854
オシッコする時は制御型、勃起する時は自律型。

873 :デフォルトの名無しさん:2020/09/05(土) 10:44:21 ID:pH42N7I+.net
>>872
あらあら、隠蔽してるわね
これがカプセル化かしら

874 :デフォルトの名無しさん:2020/09/05(土) 11:09:12.76 ID:8SDdoWCb.net
>>814
思想的にはSICPに書いてるストリームそのものだ
ttps://sicp.iijlab.net/fulltext/x350.html

875 :デフォルトの名無しさん:2020/09/05(土) 11:40:32.92 ID:HNHK9ynw.net
SICPの思想ってダサいんですね

876 :デフォルトの名無しさん:2020/09/05(土) 14:30:58.08 ID:OV3VFUME.net
なんでマキマはパワー殺したんや?

パワーちゃんを返せ!!(´;ω;`)ブワッ

877 :デフォルトの名無しさん:2020/09/06(日) 00:18:58 ID:EHj/0lhS.net
結局の所クローズドソース、外部ライブラリ全否定でしかないな
OS、ドライバ、アプリすべてを自分で作れが結論になってしまう歪んだ主張

878 :デフォルトの名無しさん:2020/09/06(日) 02:07:24.98 ID:cRkvTnxS.net
状態を持つかどうか

879 :デフォルトの名無しさん:2020/09/06(日) 04:06:37.81 ID:YGBdC9vb.net
関数型で、状態を持たせなければいい!じゃなくて
関数型で状態をどうやってもたせるかって話をしてくれ
状態っていうのはなくすのは不可能なものなんだ

880 :デフォルトの名無しさん:2020/09/06(日) 05:18:42 ID:SNogxihD.net
>>879
レコード作るだけじゃん

881 :デフォルトの名無しさん:2020/09/06(日) 05:53:21 ID:YGBdC9vb.net
>>880
関数型言語一般の用語で言ってくれませんか?

882 :デフォルトの名無しさん:2020/09/06(日) 06:01:14.89 ID:SNogxihD.net
>>881
ググってみ

883 :デフォルトの名無しさん:2020/09/06(日) 07:07:15.01 ID:YGBdC9vb.net
ググったけど、F#専用の用語だった

884 :デフォルトの名無しさん:2020/09/06(日) 10:33:46.44 ID:SNogxihD.net
ハスケルでも使うわハゲ

885 :デフォルトの名無しさん:2020/09/06(日) 10:36:37.41 ID:SNogxihD.net
関数型にわかのうえに検索力も無い
関数型に憧れてるだけのアホ

886 :デフォルトの名無しさん:2020/09/06(日) 10:42:40 ID:JCtY/Fts.net
関数型言語の「関数型」は
関数を変数として扱える=関数型という変数の型を持っている
ということを表していて、
関数型言語を単純に定義すれば、関数型を持っている言語
ということでいいの?

887 :デフォルトの名無しさん:2020/09/06(日) 11:03:01 ID:5MBR0P77.net
参照透過性があってメモ化が可能で状態の無いピュアな関数だけだから関数型だ

888 :デフォルトの名無しさん:2020/09/06(日) 11:18:28.00 ID:JCtY/Fts.net
>>887
それは関数型言語ないしは関数型言語によるプログラミングの理想形であって
関数型の定義というか要件ではないように思える

定義、要件、理想、本質、それによってもたらされた機能…
そういうのがごちゃ混ぜになって話がまとまらなくなってる気がする

889 :デフォルトの名無しさん:2020/09/06(日) 11:57:32.78 ID:SNogxihD.net
>>886
〜型言語の「型」はdata typeの訳語ではなくて
ある特徴を持っているという意味だよ

最新型ノートパソコンの「型」と同じ働き

890 :デフォルトの名無しさん:2020/09/06(日) 12:21:24 ID:gGwX7R3F.net
>>880
レコードってタプルやコレクションと同列のただのデータ型じゃね?

891 :デフォルトの名無しさん:2020/09/06(日) 12:25:15.66 ID:nDvuYYqI.net
関数型プログラミングがわからない、
でも勉強したくないし、チュートリアル数ページすら読まない

こういう輩を相手に何言っても無駄
理解出来ないだけでなく、理解しようという気がないから

892 :デフォルトの名無しさん:2020/09/06(日) 12:28:26.25 ID:SNogxihD.net
>>890
C言語でいうところの構造体だね

893 :デフォルトの名無しさん:2020/09/06(日) 12:32:39.91 ID:n2EZq4Ad.net
privateがなくてpublicしかない構造体
内部データを持てない構造体

894 :デフォルトの名無しさん:2020/09/06(日) 12:46:56.99 ID:gGwX7R3F.net
>>892
じゃあレコードでなければならない理由はないんだよな。

895 :デフォルトの名無しさん:2020/09/06(日) 12:58:13.53 ID:SNogxihD.net
>>894
なにが?

896 :デフォルトの名無しさん:2020/09/06(日) 13:03:09.55 ID:gGwX7R3F.net
>>880が。

897 :デフォルトの名無しさん:2020/09/06(日) 13:04:50.70 ID:SNogxihD.net
>>896
ないんじゃね、レコードしかないとは>>880さんは言ってないし

898 :デフォルトの名無しさん:2020/09/06(日) 13:23:08 ID:cRkvTnxS.net
関数へのポインタが使えるCは関数型言語

899 :デフォルトの名無しさん:2020/09/06(日) 13:36:39 ID:F+CgsiXq.net
ポインタ含む参照型がある言語は関数型ではない
関数型は参照型禁止、値型しか無い

900 :デフォルトの名無しさん:2020/09/06(日) 13:40:27 ID:gGwX7R3F.net
>>897
つまり>>880は「値作るだけじゃん」と読み替えても同じということ?

901 :デフォルトの名無しさん:2020/09/06(日) 13:43:40 ID:SNogxihD.net
状態が不変なら参照型も値型も扱い方は同じ
値のコピーを取る値型よりも参照型の方が効率的

902 :デフォルトの名無しさん:2020/09/06(日) 13:44:34 ID:SNogxihD.net
>>900
違うんじゃね、>>880さんはレコードと言ってる
レコードと値は別のもの

903 :デフォルトの名無しさん:2020/09/06(日) 14:03:17.00 ID:NTBgE1bF.net
関数型で状態管理するのは別にそんな複雑な話でもなくて、状態を戻り値にした関数作るだけだぞ。
コネクション管理だったりreduxの作りだったりで見かけたりはする。
別にいいとも悪いとも思わんが。

904 :デフォルトの名無しさん:2020/09/06(日) 14:05:16.32 ID:rO2fthBs.net
問題はその状態がpublicだから誰でも見れちゃうという所

905 :デフォルトの名無しさん:2020/09/06(日) 14:08:22.94 ID:NTBgE1bF.net
>>904
いやそれがパブリックかどうかを気にするようなスコープで使ってることのが問題

906 :デフォルトの名無しさん:2020/09/06(日) 14:09:37.52 ID:gGwX7R3F.net
>>902
>>880はレコード型の値を作ることを言っているかと思ったんだが?

907 :デフォルトの名無しさん:2020/09/06(日) 14:16:55.47 ID:SNogxihD.net
>>906
>>880さんが言ってるのは「レコード作るだけじゃん」ってことだよ
読み直してごらん、それ以外のことを言ってない

>>906さんが「値作るだけじゃん」と言ったのであって
>>880さんはそんなこと言ってません

908 :デフォルトの名無しさん:2020/09/06(日) 14:33:58.57 ID:gGwX7R3F.net
>>880で作るといっていた「レコード」がレコード型の値のことでなければ何だったんだろうか。
まさかレコード型の方か?

909 :デフォルトの名無しさん:2020/09/06(日) 14:36:14.18 ID:SNogxihD.net
>>908
レコードを作ると言ってるんだからレコードのことに決まってます

910 :デフォルトの名無しさん:2020/09/06(日) 14:38:21.85 ID:SNogxihD.net
マリオ「ドラキュラはにんにくが嫌いだ」
ルイージ「にんにくは野菜だからドラキュラはにんにくという野菜が嫌いなんだ」
ルイージ「ドラキュラは野菜が嫌いだとマリオが言っていたので
  僕はとっておきのにんじんをドラキュラに投げつけてやるんです」

911 :デフォルトの名無しさん:2020/09/06(日) 14:54:38.53 ID:gGwX7R3F.net
値でも型でもない「レコード」というと、はて…?
まさかデータベースとか円盤とかではあるまいが。

912 :デフォルトの名無しさん:2020/09/06(日) 14:57:16.66 ID:SNogxihD.net
>>911
レコードは関数やオブジェクト、参照、ポインタって可能性もありますね
DBは正式にはタプルかな、CSVではフィールドの集まりと定義されてる

913 :デフォルトの名無しさん:2020/09/06(日) 14:58:50.00 ID:SNogxihD.net
いずれにしても>>880さんは「レコード作るだけじゃん」と言っておられるのだから
レコードを作るだけなんだなあと受け取るのが正しい理解

914 :デフォルトの名無しさん:2020/09/06(日) 14:59:33.93 ID:SNogxihD.net
マリオ「ドラキュラはにんにくが嫌いだ」
正しいルイージ「ドラキュラはにんにくが嫌いなんだなあ」

915 :デフォルトの名無しさん:2020/09/06(日) 15:09:57.16 ID:NTBgE1bF.net
おまえらはご飯論法とか藁人形論法ってやつから勉強しなおしだな

916 :デフォルトの名無しさん:2020/09/06(日) 15:11:11.31 ID:gGwX7R3F.net
>>913
つまり>>880は適当なことを言っていたので煙に巻こうとしていると。

917 :デフォルトの名無しさん:2020/09/06(日) 15:13:56.70 ID:SNogxihD.net
>>916
>>880さんは正しいこと言ってると思いますよ

918 :デフォルトの名無しさん:2020/09/06(日) 15:22:52 ID:SNogxihD.net
ダルビッシュ → すごい
日本人 → すごい

レコード → 状態
値 → 状態

この論理展開が正しいと思ってる人はいるっぽい

919 :デフォルトの名無しさん:2020/09/08(火) 11:27:04.86 ID:M9fpICKB.net
>>879

>649-651に書いてる。

920 :デフォルトの名無しさん:2020/09/08(火) 13:03:50.09 ID:dd3/c9tT.net
Haskellも当初はstreamで、それが何かしらの不都合が合ってmonadにしたんだろ

921 :デフォルトの名無しさん:2020/09/08(火) 16:00:21.90 ID:7o8rcsWh.net
>>919
書いてない。10個ぐらいの状態を保存するコードを書いてくれ

922 :デフォルトの名無しさん:2020/09/08(火) 16:11:26.42 ID:98huypqy.net
>>921
引数を10個+αにしたり、10個の値の入ったリストなりタプルなりを渡す末尾再帰にすれば良いだけですが・・・。

もしくは>911の様な理解でも良い。
同様な物としてGUI部品そのもの(が確保してるメモリ領域)に保持させる。
Haskellから見れば外部から値を受け取って、外部に値を返すだけの「関数の様に振る舞う物(圏論で言う射)」になる。

923 :デフォルトの名無しさん:2020/09/08(火) 16:28:58.38 ID:r41CjiKh.net
状態を変えずに10個の状態を保存する例
https://paiza.io/projects/Bnk3OVs0L5TawdxlD4MHbw

924 :デフォルトの名無しさん:2020/09/08(火) 20:38:03 ID:7o8rcsWh.net
> 引数を10個+αにしたり、10個の値の入ったリストなりタプルなりを渡す末尾再帰にすれば良いだけですが・・・。

その延長だとHTMLのボタンとかだと
引数が30個とかそれ以上になるんでしょうねw

925 :デフォルトの名無しさん:2020/09/08(火) 22:02:06.87 ID:jZ8u+myy.net
>>924
チュートリアル1ページくらい読めってw
https://guide.elm-lang.org/

button [ onClick Decrement ] [ text "-" ]

buttonに渡してるのはattributeのlistと子要素となるHTMLのlistの2つだけ
HTMLを理解してればこれで十分って分かるよね?

926 :デフォルトの名無しさん:2020/09/09(水) 11:00:16 ID:3XOrsz21.net
>>924
そう言うのんはHaskellの外側だから、ライブラリの初期化関数に読み込ませて、必要な関数に対応させるだけだお。

純粋関数型言語だから状態を持てないんじゃ無くて、状態をHaskellの外に置くのか、関数の引数にして引き回すのかの違いだけ。
副作用が無いとか、状態が無いとかは捉え方の問題で、状態も持つし副作用も有る。
参照透明性が崩れないのが普通の言語との違い。

927 :デフォルトの名無しさん:2020/09/11(金) 12:24:48.69 ID:RHaf2uZH.net
キンタマはチンポに含まれるか否かだが、オシッコするときは含まないが射精するときは含む。

928 :デフォルトの名無しさん:2020/09/11(金) 17:27:46.63 ID:NYYME8Ut.net
ハスケラーはまずモナドのわかり易い説明をここでしないとチン子さんとか納得しないんじゃないか

929 :デフォルトの名無しさん:2020/09/11(金) 17:43:18.98 ID:+vDFdDgu.net
モナドは入れ物から取り出して、なんかして、また入れ物に戻す動作。
そんな動作に付けられた名前がモナド。

930 :デフォルトの名無しさん:2020/09/11(金) 18:36:34.58 ID:f71Kzwl/.net
では穴を掘ってまた埋める動作に付けられた名前は?

931 :デフォルトの名無しさん:2020/09/11(金) 20:38:25.73 ID:mVOjSWLc.net
死の家の記録?

932 :デフォルトの名無しさん:2020/09/12(土) 01:37:20.53 ID:QNK+KyLB.net
https://video.twimg.com/ext_tw_video/1302046042913873920/pu/vid/1280x720/N8oOVAS-fmlhoZDn.mp4

933 :デフォルトの名無しさん:2020/09/12(土) 14:18:08.44 ID:sCUhPtXX.net
>>930
その動作もモナドで表現出来る。
失敗する可能性のある処理に使うMaybe型もモナドなので、何も埋まってない穴を掘って何も埋まってない穴を埋め戻すのはNothing を受け取ってNothingを返すのと同じ。
(Nothing(答えが存在しない) がMaybe型の空っぽに相当する表現)

Nothing >>= f = Nothing

空っぽになったら無条件で空っぽを返すので、戻り値を捨てて新しい値を作らない限り、何度掘ってもNothing。


Nothing >>= f >>= f = Nothing

934 :デフォルトの名無しさん:2020/09/12(土) 14:38:29.60 ID:sCUhPtXX.net
500円貯金をMaybe型で、fが500円入れる。gがx円取り出す。

Just 500 >>= f >>= f >>= g 1500

f x = Just (x + 500)

g x y | x >= y = Nothing
g x y = Just (y - x)

Out:
Nothing


Just 500 >>= f >>= f >>= g 500

f x = Just (x + 500)

g x y | x >= y = Nothing
g x y = Just (y - x)

Out:
Just 1000

935 :デフォルトの名無しさん:2020/09/12(土) 16:08:34.35 ID:bxqUAjH/.net
やっぱりhaskell出張スレになったか

936 :デフォルトの名無しさん:2020/09/13(日) 10:20:25.96 ID:faTCmF/o.net
繋がっているけれども独立している、単語と文章と文脈は、繋がっているけれどもそれぞれ独立している。
チンポは自分と繋がっているけれども独立している。

937 :デフォルトの名無しさん:2020/09/13(日) 21:59:48.77 ID:EskaTVcj.net
データベースというグローバル変数

938 :デフォルトの名無しさん:2020/09/13(日) 22:13:23.88 ID:lu6eiMc4.net
管理しきれればグローバル変数だろうがなんだろうがいいんだ

939 :デフォルトの名無しさん:2020/09/13(日) 22:20:22.63 ID:C9gyjUSw.net
>>937
テスト用のDBに切り替えられるようなコードにしとけよ。

940 :デフォルトの名無しさん:2020/09/13(日) 22:36:45.09 ID:BuLbEsQM.net
>>937
データベースに頼る統計的機械翻訳はオシマイ、自然言語処理はオブジェクト指向で。
繋がっているけれども独立している、オシッコするときのチンポは制御型、勃起するときのチンポは自律型。

941 :デフォルトの名無しさん:2020/09/14(月) 00:48:24.64 ID:LBeWsbwt.net
>>937
それは単にデータベースのデータの管理とデータベース製品の使い方を知らないだけ

942 :デフォルトの名無しさん:2020/09/14(月) 02:30:40.99 ID:BcrTLwn4.net
>>936
チンポと言えば、あわしろいくや。

943 :デフォルトの名無しさん:2020/09/14(月) 09:05:52.30 ID:rs21NGsW.net
>>938
規模の拡大に伴って急激に管理しきれなくなるから問題なんだよ

944 :デフォルトの名無しさん:2020/09/14(月) 09:34:57.86 ID:zOSHXyy4.net
Excelに記述する方法で2万件程度なら行けるよ

945 :デフォルトの名無しさん:2020/09/14(月) 09:37:57.62 ID:zOSHXyy4.net
お前らアホはオブジェクト指向言語で階層構造にしちまうから
いざ、データベースヘ入れるぞってときにあたふたし始めて
作業にかかると大変な労力を使うことになる
っていうか今どきデータベースへ入れるかもしれないってところに頭がまわらないやつって使えなくね?

946 :デフォルトの名無しさん:2020/09/14(月) 09:49:35.40 ID:ka5M5GfA.net
>>945
データベースに入れることとオブジェクト指向は何の関係もないですね

947 :デフォルトの名無しさん:2020/09/14(月) 10:07:06.87 ID:lpza49Cy.net
グローバル変数が過去に問題視された原因は2つ
一つは名前の衝突、もう一つは更新可能な共有変数は利用する箇所が増えるほど扱いが煩雑になること

前者はnamespaceに類するものを使えば解決可能でほとんどの言語でそのアプローチを採用している
後者はできるだけimmutableにする、それができないなら利用箇所を限定して同時実行制御のイディオムを使うことで比較的容易に管理可能になる

データベースで考えると
前者はserver.database.schema.table.row.columnといった形でnamespace的に整理可能なので問題にならない
後者は可能な限りimmutableにできるかどうかや、mutableなら利用箇所を限定できるかどうかに依存しているので
開発者のアーキテクチャ設計能力が一定水準以下の場合のみ問題になってくる

948 :デフォルトの名無しさん:2020/09/14(月) 12:15:42.69 ID:U+GPJWx0.net
>>947
>一つは名前の衝突、もう一つは更新可能な共有変数は利用する箇所が増えるほど扱いが煩雑になること

「チンポ」は独立した生き物として考えないと、何故チンポは勃起したり射精したりするのかわからなくなる。

949 :デフォルトの名無しさん:2020/09/14(月) 13:51:14.61 ID:H3Bos02D.net
神様も設計間違えたかと思うようなダブル用途

950 :デフォルトの名無しさん:2020/09/14(月) 22:39:06.99 ID:hx7e4xfO.net
データベースを使うとカプセル化とは縁遠い作りになることが多い

951 :デフォルトの名無しさん:2020/09/14(月) 22:40:11.02 ID:hx7e4xfO.net
だいたいレコードを入れる構造体1階層で完結する

952 :デフォルトの名無しさん:2020/09/14(月) 23:02:01.08 ID:aDn+sCGd.net
>>950
お前の理屈だと、ファイルを使うとカプセル化とは縁遠い作りになることが多いんだろ?w

953 :デフォルトの名無しさん:2020/09/15(火) 01:45:28.43 ID:Yms7aROo.net
カプセル化の意味を履き違えているのばかりだし、異様にこだわるのはもはやキチガイレベル。

954 :デフォルトの名無しさん:2020/09/15(火) 10:10:35.41 ID:msQN58rY.net
オブジェクト指向に疑念を持って、関数型などにも浮気したが結局オブジェクト指向に戻ってきた
関数型だとインフラストラクチャのコントロール、外部APIコーディネートなどといった「現実の問題」に対象できない
また関数型が優れているとされる理由のエッセンスはイミュータビリティである、ということに気がついたからだ
結局のところオブジェクト指向にイミュータビリティを導入することが正解だった

955 :デフォルトの名無しさん:2020/09/15(火) 11:13:01.56 ID:aoc93pM4.net
全然関係ないこと横文字羅列することで畳み掛けるの流行ってるの?
少なくともそんなとこ考えてるときにオブジェクト指向言語じゃないと実装できませんねとか
意味不明なこと言い出した奴もういらんわ

956 :デフォルトの名無しさん:2020/09/15(火) 11:21:53.53 ID:QOcZ+8t3.net
何かに反論するときに、◯◯って流行ってるの?っていう入り方するのって流行ってるの?

957 :デフォルトの名無しさん:2020/09/15(火) 11:28:14.31 ID:msQN58rY.net
オブジェクト指向でなければならないことはない
関数型ではダメなことは多い
手続き型のほうがうまくこなせることも現実世界には多い
それぞれ得手不得手がある
なのでそれらをいい感じに融合できるオブジェクト指向が正解ってわけ
融合する際にそれらの境界を上手く隔てるためにカプセル化が役に立つ

カプセル化を活用して、インフラストラクチャ、ステートフルリソース、手続き的な処理を隔離する
イミュータブルオブジェクトを導入して関数型の思想のもとで堅牢かつ柔軟なドメインモデルを構築する

このようにオブジェクト指向はなんでもそこそこ上手くできるからバランスがいいんだよ
現実を見据えたパラダイムだと思うよ
原理主義的にならずに旨味だけを享受すればいい

もちろんなんでもできるから使い方を間違えるとひどい目に合う
そこはしっかりと教育していくしかない
どんな道具でも学習は必要だ

958 :デフォルトの名無しさん:2020/09/15(火) 12:11:23.59 ID:DF4Wozgk.net
>>957
>関数型ではダメなことは多い
ダメな例を具体的に書けば自分のダメさがよく分かるよ

>どんな道具でも学習は必要だ
君自身がしっかりと教育されるしかない

959 :デフォルトの名無しさん:2020/09/15(火) 12:21:34.24 ID:gc4PCUOV.net
関数型のクイックソートはクイックじゃねえからなwwwww
wwwww使い物にならねえわwwww

960 :デフォルトの名無しさん:2020/09/15(火) 12:23:00.49 ID:YmrXu57g.net
クイックソートの遅い実装?

961 :デフォルトの名無しさん:2020/09/15(火) 12:45:43.54 ID:dgBsBrcB.net
>>958
挙げてるじゃん
インフラストラクチャ、ステートフルリソース、外部APIコーディネート、などなど
数えたら枚挙に暇がない

関数型は所詮はインメモリの世界でしか通用しない道具だ
しかしインメモリに限れば強力なツールだ

なので関数型が苦手なことが得意な手続き型と組み合わせて使うのが正解
そして関数型と手続き型を密結合することなくうまく調和させるためにOOPのカプセル化や抽象化といった概念が役に立つ

962 :デフォルトの名無しさん:2020/09/15(火) 13:04:11.00 ID:RkqAJNr6.net
>>1
アランケイが提唱したオブジェクト指向と、クラスベースのオブジェクト指向を混同してる時点でな
いつものオブジェクト指向否定信者がスレ立てたんだろ

963 :デフォルトの名無しさん:2020/09/15(火) 13:27:23.20 ID:QOcZ+8t3.net
関数型に適応できる高速なソートのアルゴリズムってあるの?

964 :デフォルトの名無しさん:2020/09/15(火) 14:42:17.61 ID:i/gZOuAl.net
>>961
Erlang は上手くやってるな

965 :デフォルトの名無しさん:2020/09/15(火) 20:20:21.30 ID:X9YPG5on.net
>>961
>インフラストラクチャ、ステートフルリソース、外部APIコーディネート

これが具体的な例なんだねww
にしてもインフラストラクチャてwww

無知を自覚してしっかり教育されるか、無知を認められず老害化するかは君次第

966 :デフォルトの名無しさん:2020/09/15(火) 21:23:52.92 ID:gc4PCUOV.net
何わろてんねん

967 :デフォルトの名無しさん:2020/09/15(火) 22:03:17.38 ID:IfSXNbex.net
「関数型はI/Oが苦手」
「関数型ではカプセル化できない」

と思っちゃってる個人の感想だよね

968 :デフォルトの名無しさん:2020/09/15(火) 22:08:43.90 ID:X8qAKmym.net
次の世代は関数型OSだろな。

969 :デフォルトの名無しさん:2020/09/15(火) 23:38:31.91 ID:Tmf/kgmE.net
>>968
いつまでに関数型OSが実用的に利用できると思う?
100年以内にでると言い切れる自信ないでしょ?w

970 :デフォルトの名無しさん:2020/09/15(火) 23:49:58.45 ID:cvpGF9OU.net
現実世界は副作用の塊なんだよ
関数型は現実問題を解決するには不向き
手続き型やOOPの力によって現実問題とうまく切り離された僅かな隙間であるインメモリ計算処理をうまくこなすことができる
関数型とはただそれだけの存在だ

971 :デフォルトの名無しさん:2020/09/15(火) 23:52:41.89 ID:Tmf/kgmE.net
数学の世界では無限という数値だって扱えるんです
しかしコンピュータでは扱えません

972 :デフォルトの名無しさん:2020/09/16(水) 00:11:09.88 ID:XXyygoNj.net
>>971
∞ + 1 = ?

973 :デフォルトの名無しさん:2020/09/16(水) 00:33:59.70 ID:6QoNdXGN.net
インメモリ計算処理www
なんで理解できてないことをあたかも理解してるかのように語りたがるのかな?

知らない書けない理解してない無知な自分を認めたくないからって"あっちの水は苦い"と喧伝して自分を慰めても何にもならないぞ

974 :デフォルトの名無しさん:2020/09/16(水) 00:47:40.07 ID:XXyygoNj.net
ここにいるhaskellerはレベル低そう

975 :デフォルトの名無しさん:2020/09/16(水) 00:48:27.03 ID:XXyygoNj.net
悔しかったらOS実装してみろ
C言語ならできるぞ手続き型に負けて悔しくないのか

976 :デフォルトの名無しさん:2020/09/16(水) 00:56:03.92 ID:NJW1Qx1P.net
お前が実装したわけじゃあるまいしw
Windows はオブジェクト指向OS

977 :デフォルトの名無しさん:2020/09/16(水) 00:56:44.43 ID:7X1piV6a.net
>>973
ん〜この中身の空っぽなレス
悔しかったら関数型で俺が上げた弱点をどう克服するのか示してみろよ
まあ理解してないことをあたかも理解してるように語る奴には克服方法なんて答えられんだろうけどw

978 :デフォルトの名無しさん:2020/09/16(水) 01:00:28.73 ID:xovTn/QF.net
え?オブジェクト指向言語で解決できてる問題があると言っている?

恐怖を感じるほどのバカだな

979 :デフォルトの名無しさん:2020/09/16(水) 01:01:49.28 ID:XXyygoNj.net
>>976
それはそうやな

980 :デフォルトの名無しさん:2020/09/16(水) 01:03:50.27 ID:xovTn/QF.net
え?win32apiが?

981 :デフォルトの名無しさん:2020/09/16(水) 01:08:46.31 ID:XXyygoNj.net
>>980
わかんない

>>976
そこの君い何がオブジェクト指向なのかね?

982 :デフォルトの名無しさん:2020/09/16(水) 01:10:26.55 ID:XXyygoNj.net
>>978
qmailのソースコード見たことある?
C言語なんだけどオブジェクト指向の極みなんだよ
https://github.com/amery/qmail

オブジェクト指向はqmailを解決したわけですね

983 :デフォルトの名無しさん:2020/09/16(水) 01:22:52.13 ID:XXyygoNj.net
GitのソースコードもC言語なんだけどこれもオブジェクト指向の極み
https://github.com/git/git

コミットやリビジョン、リポジトリといった概念とソースコードが一致するようになってる
オブジェクト指向によるドメイン駆動設計

C言語すごい

984 :デフォルトの名無しさん:2020/09/16(水) 01:23:47.90 ID:/p6a79yr.net
ドメイン駆動って何?

985 :デフォルトの名無しさん:2020/09/16(水) 01:25:58.14 ID:/p6a79yr.net
これぇ?
https://qiita.com/little_hand_s/items/721afcbc555444663247

986 :デフォルトの名無しさん:2020/09/16(水) 01:31:39.87 ID:XXyygoNj.net
>>984
ソフトウェアコードの構造と言語(クラス名、クラスメソッド、クラス変数)がドメインと一致するようにするという考え方
ドメインは、コンピュータプログラムの対象物のこと

987 :デフォルトの名無しさん:2020/09/16(水) 01:34:34.58 ID:XXyygoNj.net
>>985
それえ!

988 :デフォルトの名無しさん:2020/09/16(水) 01:38:40.25 ID:/p6a79yr.net
>>986
おまえさん、ソフトウエア、あんまり作ったことなさそうだな…

989 :デフォルトの名無しさん:2020/09/16(水) 01:42:15.93 ID:XXyygoNj.net
>>988
あんまりどころか僕はソフトウェアを何一つ作ったことがないが
プログラムにすごく詳しいんだ、わからないことがあったら聞いてくれ

990 :デフォルトの名無しさん:2020/09/16(水) 01:43:37.93 ID:XXyygoNj.net
DDDは流行の最先端だから覚えておくと良い

991 :デフォルトの名無しさん:2020/09/16(水) 01:48:57.66 ID:/p6a79yr.net
>>989
正直でよろしい。
そしたらY-cominatorを用いた動的計画法の解法についておよび
ラマヌジャンがノートに残したモジュラ関数を応用した超数近似の収束性とカ・マーカー方への応用を
十実装したプログラムにたいして何か知見があったらその痴性をひけらかして演説書いてチョンマゲ

つか、ど素人はすっこんで定年までROMってろよ、ってかんじ

992 :デフォルトの名無しさん:2020/09/16(水) 01:51:37.85 ID:/p6a79yr.net
>>991
Y-combinator
実装
な。ハート。

しかしオブジェクト指向とかにつて、ホントたまにこういう基地外が湧くのは
宗教的なせいだんだろうか

993 :デフォルトの名無しさん:2020/09/16(水) 01:56:50.65 ID:/p6a79yr.net
>>991
は、適当に思い付きをかいただけだから、
むきになって検索して気の効いたレス書こうとかしてないで、
いい子だからお薬飲んで、おしっこしてネンネしなさいよ

994 :デフォルトの名無しさん:2020/09/16(水) 02:50:38.64 ID:0ZaEBr0v.net
おまえら、とりあえず動くものを作ってから雑談しろよ。

995 :デフォルトの名無しさん:2020/09/16(水) 02:59:52.72 ID:XXyygoNj.net
なんでや?

996 :デフォルトの名無しさん:2020/09/16(水) 03:01:35.60 ID:XXyygoNj.net
天文学者に宇宙行けと言ってるようなもんだろ
優れた頭脳は計算によって世界を知る

997 :デフォルトの名無しさん:2020/09/16(水) 03:02:42.46 ID:XXyygoNj.net
作らざること山のごとし

998 :デフォルトの名無しさん:2020/09/16(水) 07:13:38.52 ID:Mp+zrl2P.net
進捗する毎火の如し

999 :デフォルトの名無しさん:2020/09/16(水) 08:26:28.51 ID:NJW1Qx1P.net
キン肉マンネタ

1000 :デフォルトの名無しさん:2020/09/16(水) 09:05:02.14 ID:ChCLAHZC.net
ソフトウエアを作れない奴が、カプセル化だ、ゲッターセッターだ継承だ多態だ
薀蓄たれて開発者を惑わすのはやめる
足引っ張るだけだ

1001 :2ch.net投稿限界:Over 1000 Thread
2ch.netからのレス数が1000に到達しました。

総レス数 1001
298 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★