■危険性
かつて偏差値の低い学校向けの情報処理系教科書において「カプセル化は大変すばらしいものであり絶対に使うように」と大体的に宣伝された。
一方、カリフォルニア大学バークレー校の有識者を中心とした「インターネットを作った人たち」は「階層化の有害性(RFC 3439)」として「カプセル化は絶対にやめろ」としている。
大雑把にいうと、教科書の上では素晴らしく、開発を始めた最初のうちは良いが、将来的な改修の際に隠蔽されたデータにアクセスできないと解決できない問題が出てきて、非常に高確率でデスマーチに陥るというのである。
オブジェクト指向の発案者であるアラン・ケイもコーディング規約(頭文字にアンダースコアを付けるなどの命名規則)で縛る程度にすることを推奨しており、アラン・ケイが関わったオブジェクト指向プログラミング言語にはどれも「private」などという概念はない。
ソースコードが存在し改修が可能であればカプセル化しても問題ない。ソースコードがあってもライセンス的に改修できない場合や、そもそもバイナリのライブラリしかない場合などは絶望的である。
https://monobook.org/wiki/%E3%82%AB%E3%83%97%E3%82%BB%E3%83%AB%E5%8C%96(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)
カプセル化は愚かな考え
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2020/07/29(水) 17:17:58.13ID:u638n5uE347デフォルトの名無しさん
2020/08/21(金) 21:47:34.18ID:2S3OsUgZ >>343
前から言ってるが、関数型は少数の値型と一つの戻り値で十分な関数としての要件を
満たしているときに便利なもので、そうでないものを無理やり対応させても不便なだけという話
関数型が優位なのは理論上の話で、理論上の話だと数十個の引数でもOKという扱いだから
前から言ってるが、関数型は少数の値型と一つの戻り値で十分な関数としての要件を
満たしているときに便利なもので、そうでないものを無理やり対応させても不便なだけという話
関数型が優位なのは理論上の話で、理論上の話だと数十個の引数でもOKという扱いだから
348デフォルトの名無しさん
2020/08/21(金) 21:48:43.03ID:u4nsg/nb349デフォルトの名無しさん
2020/08/21(金) 21:49:03.22ID:2S3OsUgZ >>346
> 状態と計算を分離する結果、関数型の恩恵にあずかれるなら、分離する方向に行くのが正しいのではないか。
「関数型の恩恵にあずかれるなら」
結局そこ
「関数型の恩恵にあずかれるなら」関数型
「関数型の恩恵にあずかれないなら」オブジェクト指向
適切なものを組み合わせて使うべき
「関数型の恩恵にあずかれない」例の一つがボタン
> 状態と計算を分離する結果、関数型の恩恵にあずかれるなら、分離する方向に行くのが正しいのではないか。
「関数型の恩恵にあずかれるなら」
結局そこ
「関数型の恩恵にあずかれるなら」関数型
「関数型の恩恵にあずかれないなら」オブジェクト指向
適切なものを組み合わせて使うべき
「関数型の恩恵にあずかれない」例の一つがボタン
350デフォルトの名無しさん
2020/08/21(金) 21:52:29.11ID:Q2DXCe4b ボタンこそ、恩恵にあずかれるのでは?
351デフォルトの名無しさん
2020/08/21(金) 21:52:48.76ID:2S3OsUgZ >>348
> オブジェクトの内部状態が変わるのと戻り値だけが変わるのとでは影響範囲が違うだろう。
今話をしてるのは
オブジェクトの内部状態 "すべて" を "一つの" 戻り値にしたとき
影響範囲はオブジェクトの内部状態を変えるのと同じことになってるという話をしてる
例えばボタンのスタイルは前景色、背景色、座標、フォント、余白などいろんなスタイルあるが
オブジェクト指向ではボタンのスタイルとしてオブジェクトの内部状態に組み込んでる
これらの前景色、背景色、座標、フォント、余白などをあわせてスタイルオブジェクトとして
関数からスタイルオブジェクトを返すからテストしやすい!といっても
何がテストしやすいのさっぱりわからない
> オブジェクトの内部状態が変わるのと戻り値だけが変わるのとでは影響範囲が違うだろう。
今話をしてるのは
オブジェクトの内部状態 "すべて" を "一つの" 戻り値にしたとき
影響範囲はオブジェクトの内部状態を変えるのと同じことになってるという話をしてる
例えばボタンのスタイルは前景色、背景色、座標、フォント、余白などいろんなスタイルあるが
オブジェクト指向ではボタンのスタイルとしてオブジェクトの内部状態に組み込んでる
これらの前景色、背景色、座標、フォント、余白などをあわせてスタイルオブジェクトとして
関数からスタイルオブジェクトを返すからテストしやすい!といっても
何がテストしやすいのさっぱりわからない
352デフォルトの名無しさん
2020/08/21(金) 21:54:15.43ID:2S3OsUgZ 色を変える関数を作るとするならば
スタイルオブジェクト = setColor(スタイルオブジェクト, 色)
これが関数型
この時、setColorがどの属性をいじるかなんてコードを見ないとわからない
スタイルオブジェクト = setColor(スタイルオブジェクト, 色)
これが関数型
この時、setColorがどの属性をいじるかなんてコードを見ないとわからない
353デフォルトの名無しさん
2020/08/21(金) 21:56:32.11ID:2S3OsUgZ ボタンのスタイルオブジェクトの場合、関数型ではこうなるのだろうか?
ボタン.スタイル = setColor(ボタン.スタイル, 色)
本質的に関数型に適合しないようなものを
無理やり関数型にしても意味ないよ
ボタン.スタイル = setColor(ボタン.スタイル, 色)
本質的に関数型に適合しないようなものを
無理やり関数型にしても意味ないよ
354デフォルトの名無しさん
2020/08/21(金) 21:59:18.77ID:xkZp2iCS どこに状態持っとくかで状態管理のしやすさが変わるんだよな
あるComponentでそれと関係のない状態変数が無造作に置かれてるよりは
必要な場所からのみアクセスできるようになってるほうがありがたい
必要ない場所でその状態変数について気にしなくていいから
あるComponentでそれと関係のない状態変数が無造作に置かれてるよりは
必要な場所からのみアクセスできるようになってるほうがありがたい
必要ない場所でその状態変数について気にしなくていいから
355デフォルトの名無しさん
2020/08/21(金) 22:01:46.81ID:2S3OsUgZ >>353はドットでつないでるから関数型には見えないw
実際はこうなのだろうか?
ボタン = setStyleColor(ボタン, 色)
ボタンには色以外の複数のスタイル属性や
ボタンの有効無効などの属性を持っている
つまりsetStyleColorという関数は
ボタンという連想配列データの一部分をいじる関数になる
それはオブジェクト指向でボタン.スタイル.setColor(色)の場合に
色というメンバ変数を書き換えてるのと大差ない
実際はこうなのだろうか?
ボタン = setStyleColor(ボタン, 色)
ボタンには色以外の複数のスタイル属性や
ボタンの有効無効などの属性を持っている
つまりsetStyleColorという関数は
ボタンという連想配列データの一部分をいじる関数になる
それはオブジェクト指向でボタン.スタイル.setColor(色)の場合に
色というメンバ変数を書き換えてるのと大差ない
356デフォルトの名無しさん
2020/08/21(金) 22:02:23.83ID:2S3OsUgZ >>354
そうやってできたのがオブジェクト指向やなw
そうやってできたのがオブジェクト指向やなw
357デフォルトの名無しさん
2020/08/21(金) 22:03:35.09ID:xkZp2iCS 結局そこに行き着くw
358デフォルトの名無しさん
2020/08/21(金) 22:08:32.02ID:Q2DXCe4b 関数型Windowsが出せなければ、Windowsは無くなるだろな。
359デフォルトの名無しさん
2020/08/21(金) 22:09:51.39ID:2S3OsUgZ360デフォルトの名無しさん
2020/08/21(金) 22:10:10.19ID:u4nsg/nb361デフォルトの名無しさん
2020/08/21(金) 22:11:42.64ID:2S3OsUgZ 単なる戻り値も永続的に存在するので同じ
362デフォルトの名無しさん
2020/08/21(金) 22:17:04.55ID:Q2DXCe4b 俺はこれはある意味何かが起きると思ってんだよ。
賢い奴ら数名は気が付いているようだが。
今頃オブジェクト最強とか言ってるようでは気づけんだろうけど。
賢い奴ら数名は気が付いているようだが。
今頃オブジェクト最強とか言ってるようでは気づけんだろうけど。
363デフォルトの名無しさん
2020/08/21(金) 22:18:31.62ID:2S3OsUgZ364デフォルトの名無しさん
2020/08/21(金) 22:22:11.20ID:Q2DXCe4b 30年かかると思うよ。
でもWindowsは3年でなくなるだろな。
Windowsが30年かけて地位を築いたように。
関数型ウィンドウも30年かけて地位を築く。
でもWindowsは3年でなくなるだろな。
Windowsが30年かけて地位を築いたように。
関数型ウィンドウも30年かけて地位を築く。
365デフォルトの名無しさん
2020/08/21(金) 22:23:47.42ID:2S3OsUgZ >>364
じゃあお前のスレはここでいいねw
Windows10は当初の2025年で終了でしょうね
https://medaka.5ch.net/test/read.cgi/os/1566090910/
じゃあお前のスレはここでいいねw
Windows10は当初の2025年で終了でしょうね
https://medaka.5ch.net/test/read.cgi/os/1566090910/
366デフォルトの名無しさん
2020/08/21(金) 22:25:37.21ID:2S3OsUgZ 向こうのスレに記録残してきたw
367デフォルトの名無しさん
2020/08/21(金) 22:25:41.16ID:Q2DXCe4b Microsoftは世界最大規模の研究所を持ってるから、Windows Fを出してくる可能性がある。
すでに待機中かもしれん。
すでに待機中かもしれん。
368デフォルトの名無しさん
2020/08/21(金) 22:26:40.34ID:Q2DXCe4b >>365
やはりアマチュアか。
やはりアマチュアか。
369デフォルトの名無しさん
2020/08/21(金) 22:26:55.36ID:2S3OsUgZ370デフォルトの名無しさん
2020/08/21(金) 22:29:14.10ID:Q2DXCe4b371デフォルトの名無しさん
2020/08/21(金) 22:30:16.45ID:Q2DXCe4b このスレにいくつかのアイデアが埋まっている。
気づいたものが次世代ウィンドウシステムを作るのだろう。
それが関数型ウィンドウだ。
気づいたものが次世代ウィンドウシステムを作るのだろう。
それが関数型ウィンドウだ。
372デフォルトの名無しさん
2020/08/21(金) 22:31:37.03ID:2S3OsUgZ >>370
ほらな、かってな予想を立てて、自分の予想に自信がないw
ほらな、かってな予想を立てて、自分の予想に自信がないw
373デフォルトの名無しさん
2020/08/21(金) 22:42:46.86ID:Xt87XuMs 全て不変にすれば、パフォーマンス以外の問題点は解決する
374デフォルトの名無しさん
2020/08/22(土) 00:29:04.18ID:H4y73psn >>318
だから言ってるように、オブジェクト指向は否定してない
オブジェクトの操作を、クラスで書くか、関数で書くかっていう記述方法の違いでしか言ってない
関数はスカラー関数に限ってない
流れがプロパティ保持の話ばかりだけど、その程度ではクラスにする必要ない
クラスの特徴はメソッドと継承
そのメソッドが外に出てるのがスタティック関数
書く場所が違うだけで、機能は同じ
Obj.Close
Close( Obj )
の違い
で、実は後者の方が生産性が高い、ということもあるかもしれんねと(体感)
かといってWinAPLみたいに長い名前の膨大なグローバル関数がずらーっとあると、生産性低い
そこは子クラスでなくても、名前空間で分類するだけでも整理が付くので、工夫次第
さらに外人の「動詞+目的語」じゃなく、「主語+動詞」という命名なら分類ごとに並ぶ
× OpenObj、CloseObj
〇 ObjOpn、ObjClose
(クラスのメソッドなら後者の並びになるが、なら関数名自体もそのセンスでいいじゃんていう)
継承は、いろんなイベントで共通の処理があるフォームのバージョン違いだと、ごっそりソースは減る
でもイベント関数自体を共通にして、中で条件分岐の方が見通しがいいかもしれない
(エクセルでシートイベントに対するブックイベントみたいな)
クラス継承は、継承の様子は掘って掘ってしないと調べがつかないので
だから言ってるように、オブジェクト指向は否定してない
オブジェクトの操作を、クラスで書くか、関数で書くかっていう記述方法の違いでしか言ってない
関数はスカラー関数に限ってない
流れがプロパティ保持の話ばかりだけど、その程度ではクラスにする必要ない
クラスの特徴はメソッドと継承
そのメソッドが外に出てるのがスタティック関数
書く場所が違うだけで、機能は同じ
Obj.Close
Close( Obj )
の違い
で、実は後者の方が生産性が高い、ということもあるかもしれんねと(体感)
かといってWinAPLみたいに長い名前の膨大なグローバル関数がずらーっとあると、生産性低い
そこは子クラスでなくても、名前空間で分類するだけでも整理が付くので、工夫次第
さらに外人の「動詞+目的語」じゃなく、「主語+動詞」という命名なら分類ごとに並ぶ
× OpenObj、CloseObj
〇 ObjOpn、ObjClose
(クラスのメソッドなら後者の並びになるが、なら関数名自体もそのセンスでいいじゃんていう)
継承は、いろんなイベントで共通の処理があるフォームのバージョン違いだと、ごっそりソースは減る
でもイベント関数自体を共通にして、中で条件分岐の方が見通しがいいかもしれない
(エクセルでシートイベントに対するブックイベントみたいな)
クラス継承は、継承の様子は掘って掘ってしないと調べがつかないので
375デフォルトの名無しさん
2020/08/22(土) 00:58:01.96ID:qyHD0ees >>374
>書く場所が違うだけで、機能は同じ
ポリモーフィズムの実現方法が異なるというのが本質的な違い
変更要求に対してコードの修正範囲が変わるのでどちらがいいのかというのは状況による
obj.close()はobjがclosableであればいい
close(obj)はcloseがobjの型をサポートしている必要がある
len([0,1,2,3]), len(“foo”)と[0,1,2].length, “foo”.lengthの違い
namespaceやmoduleのサポートが貧弱な言語だと前者は名前空間を汚染しやすい
>書く場所が違うだけで、機能は同じ
ポリモーフィズムの実現方法が異なるというのが本質的な違い
変更要求に対してコードの修正範囲が変わるのでどちらがいいのかというのは状況による
obj.close()はobjがclosableであればいい
close(obj)はcloseがobjの型をサポートしている必要がある
len([0,1,2,3]), len(“foo”)と[0,1,2].length, “foo”.lengthの違い
namespaceやmoduleのサポートが貧弱な言語だと前者は名前空間を汚染しやすい
376デフォルトの名無しさん
2020/08/22(土) 02:55:48.95ID:H4y73psn >>375
“foo”.length はまたややこしい話で
実装はスタティック関数ってこともある(C#の拡張関数)
これは間違いなく生産性高い
むしろそこからスタティック関数の方が生産性高いのではという発想
改めてメソッドを実装しなくても無限に連鎖できる
“foo”.length.text.length
関数は元々無限にネストできるが
length( text( length("foo") ) )
ただし括弧が見にくい、起点が後ろの方にある、組の引数が遠いとこに分かれる、ので眼精疲労が起きる
“foo”.length はまたややこしい話で
実装はスタティック関数ってこともある(C#の拡張関数)
これは間違いなく生産性高い
むしろそこからスタティック関数の方が生産性高いのではという発想
改めてメソッドを実装しなくても無限に連鎖できる
“foo”.length.text.length
関数は元々無限にネストできるが
length( text( length("foo") ) )
ただし括弧が見にくい、起点が後ろの方にある、組の引数が遠いとこに分かれる、ので眼精疲労が起きる
377デフォルトの名無しさん
2020/08/22(土) 03:06:31.41ID:T+/LMfcE > これは間違いなく生産性高い
それはどうやって計測したのか言ってみ
それはどうやって計測したのか言ってみ
378デフォルトの名無しさん
2020/08/22(土) 03:33:53.88ID:T+/LMfcE 実装がスタティック関数 → スタティック関数は生産性が高い
ならば
実装がスタティック関数ではない → スタティック関数は生産性が低い
ならば
実装がスタティック関数ではない → スタティック関数は生産性が低い
379デフォルトの名無しさん
2020/08/22(土) 05:08:17.36ID:TIWYvQ38 >>338
16年この業界にいる現役だよ。
むしろ、一般人ががプログラム言語なんかに興味持つ方が驚き。
現場で使えない派遣のプログラマーをアマグラマーって馬鹿にしてるけど、アマチュアさんいるんやね。プログラムは好き勝手に書いてた方が楽しいよ。
囲碁とか将棋のプロがアマを見る気持ちがこのスレで分かった気がする。
16年この業界にいる現役だよ。
むしろ、一般人ががプログラム言語なんかに興味持つ方が驚き。
現場で使えない派遣のプログラマーをアマグラマーって馬鹿にしてるけど、アマチュアさんいるんやね。プログラムは好き勝手に書いてた方が楽しいよ。
囲碁とか将棋のプロがアマを見る気持ちがこのスレで分かった気がする。
380デフォルトの名無しさん
2020/08/22(土) 05:09:53.91ID:Q5VkNyRi 若造でワロタ
381デフォルトの名無しさん
2020/08/22(土) 05:25:55.26ID:TIWYvQ38 >>376
おまえ、それ、マルチスレッド処理でも同じこと言えんの?
GUIの話してんのかわからんけど、異なる複数の処理がスタティック関数にアクセスすること考えてないだろ?
なんか、Cでmalloc使わない!って豪語して、スタックオーバーフロー起こしてどうしていいかわからなくなってたPG思い出したわ。
おまえ、それ、マルチスレッド処理でも同じこと言えんの?
GUIの話してんのかわからんけど、異なる複数の処理がスタティック関数にアクセスすること考えてないだろ?
なんか、Cでmalloc使わない!って豪語して、スタックオーバーフロー起こしてどうしていいかわからなくなってたPG思い出したわ。
382デフォルトの名無しさん
2020/08/22(土) 05:26:43.69ID:TIWYvQ38383デフォルトの名無しさん
2020/08/22(土) 05:30:08.48ID:YtG8IJDk そりゃ恥ずかしいと思わないと。
この板は文法やライブラリの使い方を取り扱う板。
プロが欲するのはお客様の情報で、ここにいるべきではないだろ。
この板は文法やライブラリの使い方を取り扱う板。
プロが欲するのはお客様の情報で、ここにいるべきではないだろ。
384デフォルトの名無しさん
2020/08/22(土) 05:54:29.25ID:H4y73psn >>381
某大手メーカー系が何年も直せなかったマルチスレッドで起こしてるバグを小一時間で直してあげたことあるよw
(マルチスレッドで確率的に起きる事故はステップ実行で探せないから、勘が必要)
関数がスタティックかどうかと、処理がぶつかるどうかは無関係
組み込み関数を想像すれば分かるだろw
各スレッドがその関数に渡すインスタンスが別ならぶつからない
同じインスタンスの必要があるならシリアル化するだけ
そっちこそマルチスレッドの扱いが曖昧っぽいなw
某大手メーカー系が何年も直せなかったマルチスレッドで起こしてるバグを小一時間で直してあげたことあるよw
(マルチスレッドで確率的に起きる事故はステップ実行で探せないから、勘が必要)
関数がスタティックかどうかと、処理がぶつかるどうかは無関係
組み込み関数を想像すれば分かるだろw
各スレッドがその関数に渡すインスタンスが別ならぶつからない
同じインスタンスの必要があるならシリアル化するだけ
そっちこそマルチスレッドの扱いが曖昧っぽいなw
385デフォルトの名無しさん
2020/08/22(土) 17:03:26.86ID:fmjqBEq5 >>381
16年間どこの業界で何してきてたの君
16年間どこの業界で何してきてたの君
386デフォルトの名無しさん
2020/08/22(土) 18:46:30.33ID:hdxSNQ+Y >“foo”.length はまたややこしい話で
>実装はスタティック関数ってこともある(C#の拡張関数)
>これは間違いなく生産性高い
>むしろそこからスタティック関数の方が生産性高いのではという発想
このあたり失笑なんだけど
こんなちっちゃい部分にクローズアップして生産性を語られても
>実装はスタティック関数ってこともある(C#の拡張関数)
>これは間違いなく生産性高い
>むしろそこからスタティック関数の方が生産性高いのではという発想
このあたり失笑なんだけど
こんなちっちゃい部分にクローズアップして生産性を語られても
387デフォルトの名無しさん
2020/08/22(土) 18:53:23.88ID:hdxSNQ+Y しかも"foo".length()が実装はスタティック関数なのは
C#が提供してる拡張方法がそうなってるだけで
データと処理を紐づけてるのはオブジェクト指向そのものじゃないか
C#が提供してる拡張方法がそうなってるだけで
データと処理を紐づけてるのはオブジェクト指向そのものじゃないか
388デフォルトの名無しさん
2020/08/23(日) 00:21:55.02ID:eNcX4Z1l オブジェクト指向とはオーバーロードである。
ってことも無いのでは?
ってことも無いのでは?
389デフォルトの名無しさん
2020/08/23(日) 01:11:38.44ID:Gvt1TzeD オブジェクト指向=○○ではなくて、
オブジェクト指向はいろんな課題を解決するための
テクニックを詰め込んだ言語
イコールで何かと結びつくものではない
結びついたらオブジェクト指向という必要がないだろ
オブジェクト指向はいろんな課題を解決するための
テクニックを詰め込んだ言語
イコールで何かと結びつくものではない
結びついたらオブジェクト指向という必要がないだろ
390デフォルトの名無しさん
2020/08/23(日) 01:13:25.91ID:HeDyBrKq >>389
ゴミクズ
ゴミクズ
391デフォルトの名無しさん
2020/08/23(日) 01:15:10.85ID:Gvt1TzeD クリティカルヒットしてしまったっぽいw
392デフォルトの名無しさん
2020/08/23(日) 01:32:09.38ID:+aN5WY/b いや、そもそもオブジェクト指向だろうが関数型だろうが便利ならなんでもいいけど
関数型のほうがすべてにおいて優れてるって言いたいという動機ありきで
都合のいい話をでっち上げてるとしか思えない
全体的に根拠がふわふわしてるんだよ
関数型のほうがすべてにおいて優れてるって言いたいという動機ありきで
都合のいい話をでっち上げてるとしか思えない
全体的に根拠がふわふわしてるんだよ
393デフォルトの名無しさん
2020/08/23(日) 01:49:35.65ID:+aN5WY/b こんなふわふわした論理を積み重ねちゃう感じで
本当にプログラムがかけるのかも疑問
本当にプログラムがかけるのかも疑問
394デフォルトの名無しさん
2020/08/23(日) 01:49:53.43ID:Gvt1TzeD >>392
そのとおり
私は状態がない世界に住んでいる
私の世界では引数と戻り値だけで表現できる
状態がない世界では関数型が一番
こういう理屈
現実はたくさんの状態がある世界
たくさんの状態をどうやって管理するか?が難しい
そこに架空の世界を持ってきたって意味がない
そのとおり
私は状態がない世界に住んでいる
私の世界では引数と戻り値だけで表現できる
状態がない世界では関数型が一番
こういう理屈
現実はたくさんの状態がある世界
たくさんの状態をどうやって管理するか?が難しい
そこに架空の世界を持ってきたって意味がない
395デフォルトの名無しさん
2020/08/23(日) 01:50:15.25ID:rOaea7BL >>386
プログラミングの生産性は地味でちっちゃいことの積み重ね
管理職やアプリコンサルやその他ペテン師は大きいことを言いたがるから、
多大なコストをかけてマイナンバーカードを作っておいて、未だに当たり前のデータ連携ができておらず、相変わらず無駄な申請
もしくは、ついでに出てきたものに対するついでの返信でしかないものを、「クローズアップ」とする解釈の方が大げさ
>>387
その機能は、あるクラスオブジェクト指向言語、が持ってるのだが、コーディングはスタティックなコストで済む
どの言語を選ぶべきかという話ではなく、どんなコーディングをすべきか、という話
または、いい機能なので他の言語にも付けてね、っていう願望
メソッド風に出てくるのは書式の違いであって、本質的に括弧と違わない
スタティックだと言ってるんだから仕様的にも裏切っちゃいけないし
宣言は length( this string s ) で普通の関数と同じく括弧の中に呼び出し元がある(ちょっと気持ち悪いが)
プログラミングの生産性は地味でちっちゃいことの積み重ね
管理職やアプリコンサルやその他ペテン師は大きいことを言いたがるから、
多大なコストをかけてマイナンバーカードを作っておいて、未だに当たり前のデータ連携ができておらず、相変わらず無駄な申請
もしくは、ついでに出てきたものに対するついでの返信でしかないものを、「クローズアップ」とする解釈の方が大げさ
>>387
その機能は、あるクラスオブジェクト指向言語、が持ってるのだが、コーディングはスタティックなコストで済む
どの言語を選ぶべきかという話ではなく、どんなコーディングをすべきか、という話
または、いい機能なので他の言語にも付けてね、っていう願望
メソッド風に出てくるのは書式の違いであって、本質的に括弧と違わない
スタティックだと言ってるんだから仕様的にも裏切っちゃいけないし
宣言は length( this string s ) で普通の関数と同じく括弧の中に呼び出し元がある(ちょっと気持ち悪いが)
396デフォルトの名無しさん
2020/08/23(日) 14:03:19.82ID:OgLdxADB 馬鹿はオブジェクト指向にかぶれるくらいなら関数型にかぶれてる方がまだ扱いが楽。
モジュール分割へたくそなくせにオブジェクト指向にかぶれるとほんま手に負えんモンスターになるから。
モジュール分割へたくそなくせにオブジェクト指向にかぶれるとほんま手に負えんモンスターになるから。
397デフォルトの名無しさん
2020/08/23(日) 14:24:19.29ID:mH2YjVlt398デフォルトの名無しさん
2020/08/23(日) 19:35:46.59ID:FOCNZ4Ko staticが技術的な話なのか。
C++をbetter Cとして使ってくれてればいいよ。
C++使ってんのにどうしてOOPじゃないんだ、とか言わないからさ^^
C++をbetter Cとして使ってくれてればいいよ。
C++使ってんのにどうしてOOPじゃないんだ、とか言わないからさ^^
399デフォルトの名無しさん
2020/08/23(日) 19:39:10.85ID:a/7Z84eB スタティック関数っていってるの多分javaのスタティックメソッドの方だと思うよ
400デフォルトの名無しさん
2020/08/23(日) 19:41:19.27ID:eNcX4Z1l オブジェクト指向から関数型へは、ある程度発想の転換が必要なんだろな。
スレの子たちは転換できてないな。
オブジェクト指向で設計できないから関数型では出来ないというが、そもそもオブジェクト指向の必要が無いのだが。
スレの子たちは転換できてないな。
オブジェクト指向で設計できないから関数型では出来ないというが、そもそもオブジェクト指向の必要が無いのだが。
401デフォルトの名無しさん
2020/08/23(日) 20:08:07.34ID:ij+CyHSL C++をbetter Cとか言う奴は
C++もCも両方ニワカである
C++もCも両方ニワカである
402デフォルトの名無しさん
2020/08/23(日) 20:22:19.98ID:mH2YjVlt >>400
> オブジェクト指向から関数型へは、ある程度発想の転換が必要なんだろな。
必要なのは発想の転換じゃなくて実装サンプルだよ
多数の状態を持つボタンのようなものをどうすればシンプルに実装できるか
その実装サンプルがどこにもないから関数型には無理なんだなってことになってる
> オブジェクト指向から関数型へは、ある程度発想の転換が必要なんだろな。
必要なのは発想の転換じゃなくて実装サンプルだよ
多数の状態を持つボタンのようなものをどうすればシンプルに実装できるか
その実装サンプルがどこにもないから関数型には無理なんだなってことになってる
403デフォルトの名無しさん
2020/08/23(日) 20:25:02.95ID:eq+oHtYe そもそもオブジェクト指向について、関数型について
きちんと説明できる人っているんだろうか
みんな、なんとなくこういうもの、というイメージしか
持てないでいるんじゃなかろうか
きちんと説明できる人っているんだろうか
みんな、なんとなくこういうもの、というイメージしか
持てないでいるんじゃなかろうか
404デフォルトの名無しさん
2020/08/23(日) 21:08:28.39ID:xAXFDUuo >>403
関数型についてはごく小さな例だけをあげて、だから関数型は素晴らしい、といってるのしか見たことないな
自分が書いたのでなくてもいいからだいきぼなプログラムを関数型でうまく書いたという事例があれば見てみたい
関数型についてはごく小さな例だけをあげて、だから関数型は素晴らしい、といってるのしか見たことないな
自分が書いたのでなくてもいいからだいきぼなプログラムを関数型でうまく書いたという事例があれば見てみたい
405デフォルトの名無しさん
2020/08/23(日) 21:12:08.32ID:OV89sKi5 カプセル化だけではなくオブジェクト指向自体が時代遅れ
スタートアップである弊社が全員ほぼ未経験でRuby on RailsをScalaに移行した理由、その効果と苦労点 - Qiita
https://qiita.com/sonken625/items/d5d0f3b8d794e06489bd
スタートアップである弊社が全員ほぼ未経験でRuby on RailsをScalaに移行した理由、その効果と苦労点 - Qiita
https://qiita.com/sonken625/items/d5d0f3b8d794e06489bd
406デフォルトの名無しさん
2020/08/23(日) 21:13:29.31ID:WHl934bN407デフォルトの名無しさん
2020/08/23(日) 21:33:12.94ID:+aN5WY/b >カプセル化だけではなくオブジェクト指向自体が時代遅れ
といいながらScalaを例に出してるけど
「Scala(スカラ、SKAH-lah)はオブジェクト指向言語と関数型言語の特徴を統合した
マルチパラダイムのプログラミング言語である。」by wikipedia
オブジェクト指向も含んでるしもう何が言いたいのか
といいながらScalaを例に出してるけど
「Scala(スカラ、SKAH-lah)はオブジェクト指向言語と関数型言語の特徴を統合した
マルチパラダイムのプログラミング言語である。」by wikipedia
オブジェクト指向も含んでるしもう何が言いたいのか
408デフォルトの名無しさん
2020/08/23(日) 21:36:35.20ID:+aN5WY/b HaskellではMonadで状態というか状態遷移を表現するらしいけど
関数型推しにはそれがどういう実装になるのか例を示してほしいね
関数型推しにはそれがどういう実装になるのか例を示してほしいね
409デフォルトの名無しさん
2020/08/23(日) 21:45:01.92ID:eNcX4Z1l そんな頼み方で教えてもらえると思ってることに驚いた。
410デフォルトの名無しさん
2020/08/23(日) 21:49:05.95ID:+aN5WY/b 関数型の利点を主張する割にここまで具体的な情報が一つもでてきてない
それともエアプだからわからないとか・・・?!
それともエアプだからわからないとか・・・?!
411デフォルトの名無しさん
2020/08/23(日) 21:49:46.52ID:jaDomWgN >>409
愚図々々せずにさっさと教えて欲しいね
愚図々々せずにさっさと教えて欲しいね
412デフォルトの名無しさん
2020/08/23(日) 21:50:06.36ID:+aN5WY/b 無能ほど偉そうなんだよなぁ
413デフォルトの名無しさん
2020/08/23(日) 22:36:25.12ID:PvvBVKTl >>406
要件?HTML(DOM)のボタンでいいよ
https://www.w3schools.com/jsref/dom_obj_button.asp
プロパティ一覧
autofocus
defaultValue
disabled
form
name
type
value
ボタンを作ったら、これだけの情報が初期化されて
作ったボタンからこれだけの情報を取得することも出来る
本当はスタイルもあるからもっと多いけどね
要件?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.13ID:eNcX4Z1l ベクトル化の概念が抜け落ちてるんだろうけど。
説明しろと言われても、自分で勉強しろとしか。
説明しろと言われても、自分で勉強しろとしか。
415デフォルトの名無しさん
2020/08/23(日) 22:49:28.19ID:PvvBVKTl 関数型言語
button = CreateButton({name: "名前", type: "submit"})
// buttonは連想配列 {name: "名前", type: "submit"}
print(button["name"])
オブジェクト指向
button = CreateButton({name: "名前", type: "submit"})
// buttonはオブジェクト
print(button.name)
こんな感じっすかね?w
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.20ID:eNcX4Z1l ボタンの「作成」と言ってるところにセンスの悪さを感じるというか。
きちんと説明してやろうという気力が失せるんだよな。
どうせコイツじゃわかんねーだろうっていう。
きちんと説明してやろうという気力が失せるんだよな。
どうせコイツじゃわかんねーだろうっていう。
417デフォルトの名無しさん
2020/08/23(日) 22:54:20.36ID:RQFTaUls じゃあボタンの「作成」以外でもいいよ
お前が好きなように言いたいことを言え
お前はまだ何も言ってない
お前が好きなように言いたいことを言え
お前はまだ何も言ってない
418デフォルトの名無しさん
2020/08/23(日) 22:57:18.72ID:RQFTaUls 関数型言語派は、「はぁ〜お前らわかってないんだよな〜」って言うのが目的なので
説明しろといわれたら、説明できなんだよなw
そのパターンばかり
説明しろといわれたら、説明できなんだよなw
そのパターンばかり
419デフォルトの名無しさん
2020/08/23(日) 23:00:00.42ID:HeDyBrKq そもそもの前提からして意味分かんない
何がどうなることを目指してるの?
お互いに
何がどうなることを目指してるの?
お互いに
420デフォルトの名無しさん
2020/08/23(日) 23:01:52.95ID:RQFTaUls プログラミング言語の目的なんて
目的は動くものを(できるだけ簡潔に)作ることに決まってるだろ
目的は動くものを(できるだけ簡潔に)作ることに決まってるだろ
421デフォルトの名無しさん
2020/08/23(日) 23:06:10.45ID:RQFTaUls 俺今丁度、環境変数を扱うコード書いてるんだけどさ、
1. 環境変数を設定する
2. (確認のために)設定した環境変数を表示する
3. 環境変数を残したまま他のプログラムを実行する
これを関数型言語で書いてみて
1. 環境変数を設定する
2. (確認のために)設定した環境変数を表示する
3. 環境変数を残したまま他のプログラムを実行する
これを関数型言語で書いてみて
422デフォルトの名無しさん
2020/08/23(日) 23:06:58.49ID:RQFTaUls これすごく簡単なことだと思うんだが、こういうのすら関数型言語では実装コードが出ないというねw
423デフォルトの名無しさん
2020/08/23(日) 23:10:12.46ID:+aN5WY/b このスレの流れは関数型狂信者がしつこくオブジェクト指向では駄目だと
根拠の薄い主張を繰り返し、具体的なことを聞くと煙に巻く
今の所、関数型推しはやべえ奴という印象しかない
根拠の薄い主張を繰り返し、具体的なことを聞くと煙に巻く
今の所、関数型推しはやべえ奴という印象しかない
424デフォルトの名無しさん
2020/08/23(日) 23:11:26.36ID:HeDyBrKq425デフォルトの名無しさん
2020/08/23(日) 23:14:04.02ID:+aN5WY/b 散々引っ張っといてこのざま
426デフォルトの名無しさん
2020/08/23(日) 23:14:19.38ID:RQFTaUls427デフォルトの名無しさん
2020/08/23(日) 23:17:02.46ID:RQFTaUls ソフトウェアというのは多数の「状態」をどうやって管理するかってことに尽きるんだが
関数型言語は「状態」が少ない場合はこれでうまくいくという話しかしない
多数の「状態」を管理する方法ではなくて、少数の「状態」を管理する方法しかいわない
多数の「状態」という問題の解決方法ではなく、問題をすり替えてる
関数型言語は「状態」が少ない場合はこれでうまくいくという話しかしない
多数の「状態」を管理する方法ではなくて、少数の「状態」を管理する方法しかいわない
多数の「状態」という問題の解決方法ではなく、問題をすり替えてる
428デフォルトの名無しさん
2020/08/23(日) 23:18:16.79ID:eNcX4Z1l 愚かな奴らよ。
429デフォルトの名無しさん
2020/08/23(日) 23:23:57.75ID:HeDyBrKq 正しく動くこととオブジェクト指向になんの繋がりがあるの?
430デフォルトの名無しさん
2020/08/23(日) 23:26:10.56ID:RQFTaUls 関数型言語にとっては正しく動くことが課題なので・・・
バグばかり
バグばかり
431デフォルトの名無しさん
2020/08/23(日) 23:26:16.73ID:+aN5WY/b まじでろくなやついないな
関数型を嫌う理由として十分だわ
関数型を嫌う理由として十分だわ
432デフォルトの名無しさん
2020/08/23(日) 23:27:32.42ID:RQFTaUls さあ、まだ関数型言語での実装コードは出ないぞ!
433デフォルトの名無しさん
2020/08/23(日) 23:33:01.07ID:HeDyBrKq >>432
お前もコード見て何がどうなってることを確認したいの?
お前もコード見て何がどうなってることを確認したいの?
434デフォルトの名無しさん
2020/08/23(日) 23:35:24.15ID:RQFTaUls >>433
どれくらいの複雑さになるかを確認したい
どれくらいの複雑さになるかを確認したい
435デフォルトの名無しさん
2020/08/23(日) 23:36:04.55ID:+aN5WY/b 簡単なコードなんだからぐずぐずせず
さっと出したほうが早いのに
言い訳してるってことはエアプか
さっと出したほうが早いのに
言い訳してるってことはエアプか
436デフォルトの名無しさん
2020/08/23(日) 23:36:18.75ID:HeDyBrKq 結局、何もかも前提がない
いいソースとはどういうソースを言うの?
っていう単純な前提がないから
全てにおいて結論が出せない
十年以上もコード組んでるくせに
こんなこともわからない時点で
そんなに能力高くないんだよお前ら
いいソースとはどういうソースを言うの?
っていう単純な前提がないから
全てにおいて結論が出せない
十年以上もコード組んでるくせに
こんなこともわからない時点で
そんなに能力高くないんだよお前ら
437デフォルトの名無しさん
2020/08/23(日) 23:36:38.11ID:HeDyBrKq >>434
複雑さの定義は?
複雑さの定義は?
438デフォルトの名無しさん
2020/08/23(日) 23:36:52.33ID:RQFTaUls >>437
コードを見ればわかる
コードを見ればわかる
439デフォルトの名無しさん
2020/08/23(日) 23:37:20.11ID:RQFTaUls いい悪いを議論する前に、まずコードを出さないと意味がない
動くコードを出しましょう
動くコードを出しましょう
440デフォルトの名無しさん
2020/08/23(日) 23:37:36.34ID:+aN5WY/b >いいソースとはどういうソースを言うの?
初心者みたいな質問出たぞ
初心者みたいな質問出たぞ
441デフォルトの名無しさん
2020/08/23(日) 23:37:45.06ID:tmHqRGVP 必死で逃げててワロ
442デフォルトの名無しさん
2020/08/23(日) 23:38:28.03ID:HeDyBrKq >>438
だからコードの何を見るん?
だからコードの何を見るん?
443デフォルトの名無しさん
2020/08/23(日) 23:39:45.71ID:RQFTaUls >>442
関数型のコード例
関数型のコード例
444デフォルトの名無しさん
2020/08/23(日) 23:41:36.66ID:HeDyBrKq もし、コードで判断をするなら全く同じ処理を記述した
方式Aと方式Bの両方が必要になるはずなのにそれも用意しようとせず
片方だけ集めたってしょうがねぇだろバーカ
お前のソースなんてみる必要すらない
方式Aと方式Bの両方が必要になるはずなのにそれも用意しようとせず
片方だけ集めたってしょうがねぇだろバーカ
お前のソースなんてみる必要すらない
445デフォルトの名無しさん
2020/08/23(日) 23:42:18.87ID:+aN5WY/b public staticくん
446デフォルトの名無しさん
2020/08/23(日) 23:43:26.03ID:a/7Z84eB 関数型言語をなんか勘違いしてない?
■ このスレッドは過去ログ倉庫に格納されています
