X



カプセル化は愚かな考え
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2020/07/29(水) 17:17:58.13ID:u638n5uE
■危険性

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

一方、カリフォルニア大学バークレー校の有識者を中心とした「インターネットを作った人たち」は「階層化の有害性(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)
0366デフォルトの名無しさん
垢版 |
2020/08/21(金) 22:25:37.21ID:2S3OsUgZ
向こうのスレに記録残してきたw
0367デフォルトの名無しさん
垢版 |
2020/08/21(金) 22:25:41.16ID:Q2DXCe4b
Microsoftは世界最大規模の研究所を持ってるから、Windows Fを出してくる可能性がある。
すでに待機中かもしれん。
0368デフォルトの名無しさん
垢版 |
2020/08/21(金) 22:26:40.34ID:Q2DXCe4b
>>365
やはりアマチュアか。
0369デフォルトの名無しさん
垢版 |
2020/08/21(金) 22:26:55.36ID:2S3OsUgZ
>>367
いつまでに?w
お前にどれだけ自信があるかわかるね
短くすればすぐに外れたのがわかる、長くすれば自信がないw
0370デフォルトの名無しさん
垢版 |
2020/08/21(金) 22:29:14.10ID:Q2DXCe4b
>>369
ほんとバカだな。

それは技術の話か?

Microsoftの戦略次第だろうが。

Maicrosoftに聞け。
0371デフォルトの名無しさん
垢版 |
2020/08/21(金) 22:30:16.45ID:Q2DXCe4b
このスレにいくつかのアイデアが埋まっている。

気づいたものが次世代ウィンドウシステムを作るのだろう。
それが関数型ウィンドウだ。
0372デフォルトの名無しさん
垢版 |
2020/08/21(金) 22:31:37.03ID:2S3OsUgZ
>>370
ほらな、かってな予想を立てて、自分の予想に自信がないw
0374デフォルトの名無しさん
垢版 |
2020/08/22(土) 00:29:04.18ID:H4y73psn
>>318
だから言ってるように、オブジェクト指向は否定してない
オブジェクトの操作を、クラスで書くか、関数で書くかっていう記述方法の違いでしか言ってない
関数はスカラー関数に限ってない

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

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

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

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

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

継承は、いろんなイベントで共通の処理があるフォームのバージョン違いだと、ごっそりソースは減る
でもイベント関数自体を共通にして、中で条件分岐の方が見通しがいいかもしれない
(エクセルでシートイベントに対するブックイベントみたいな)
クラス継承は、継承の様子は掘って掘ってしないと調べがつかないので
0375デフォルトの名無しさん
垢版 |
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のサポートが貧弱な言語だと前者は名前空間を汚染しやすい
0376デフォルトの名無しさん
垢版 |
2020/08/22(土) 02:55:48.95ID:H4y73psn
>>375
“foo”.length はまたややこしい話で
実装はスタティック関数ってこともある(C#の拡張関数)
これは間違いなく生産性高い
むしろそこからスタティック関数の方が生産性高いのではという発想

改めてメソッドを実装しなくても無限に連鎖できる
“foo”.length.text.length
関数は元々無限にネストできるが
length( text( length("foo") ) )
ただし括弧が見にくい、起点が後ろの方にある、組の引数が遠いとこに分かれる、ので眼精疲労が起きる
0377デフォルトの名無しさん
垢版 |
2020/08/22(土) 03:06:31.41ID:T+/LMfcE
> これは間違いなく生産性高い
それはどうやって計測したのか言ってみ
0378デフォルトの名無しさん
垢版 |
2020/08/22(土) 03:33:53.88ID:T+/LMfcE
実装がスタティック関数 → スタティック関数は生産性が高い

ならば

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

囲碁とか将棋のプロがアマを見る気持ちがこのスレで分かった気がする。
0381デフォルトの名無しさん
垢版 |
2020/08/22(土) 05:25:55.26ID:TIWYvQ38
>>376
おまえ、それ、マルチスレッド処理でも同じこと言えんの?
GUIの話してんのかわからんけど、異なる複数の処理がスタティック関数にアクセスすること考えてないだろ?

なんか、Cでmalloc使わない!って豪語して、スタックオーバーフロー起こしてどうしていいかわからなくなってたPG思い出したわ。
0382デフォルトの名無しさん
垢版 |
2020/08/22(土) 05:26:43.69ID:TIWYvQ38
>>380
そりゃ、自分より年寄りはいるだろう。
すごい人もいっぱいいて、日々勉強だわな。
0383デフォルトの名無しさん
垢版 |
2020/08/22(土) 05:30:08.48ID:YtG8IJDk
そりゃ恥ずかしいと思わないと。

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

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

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

各スレッドがその関数に渡すインスタンスが別ならぶつからない
同じインスタンスの必要があるならシリアル化するだけ
そっちこそマルチスレッドの扱いが曖昧っぽいなw
0386デフォルトの名無しさん
垢版 |
2020/08/22(土) 18:46:30.33ID:hdxSNQ+Y
>“foo”.length はまたややこしい話で
>実装はスタティック関数ってこともある(C#の拡張関数)
>これは間違いなく生産性高い
>むしろそこからスタティック関数の方が生産性高いのではという発想
このあたり失笑なんだけど
こんなちっちゃい部分にクローズアップして生産性を語られても
0387デフォルトの名無しさん
垢版 |
2020/08/22(土) 18:53:23.88ID:hdxSNQ+Y
しかも"foo".length()が実装はスタティック関数なのは
C#が提供してる拡張方法がそうなってるだけで
データと処理を紐づけてるのはオブジェクト指向そのものじゃないか
0388デフォルトの名無しさん
垢版 |
2020/08/23(日) 00:21:55.02ID:eNcX4Z1l
オブジェクト指向とはオーバーロードである。

ってことも無いのでは?
0389デフォルトの名無しさん
垢版 |
2020/08/23(日) 01:11:38.44ID:Gvt1TzeD
オブジェクト指向=○○ではなくて、
オブジェクト指向はいろんな課題を解決するための
テクニックを詰め込んだ言語
イコールで何かと結びつくものではない
結びついたらオブジェクト指向という必要がないだろ
0392デフォルトの名無しさん
垢版 |
2020/08/23(日) 01:32:09.38ID:+aN5WY/b
いや、そもそもオブジェクト指向だろうが関数型だろうが便利ならなんでもいいけど
関数型のほうがすべてにおいて優れてるって言いたいという動機ありきで
都合のいい話をでっち上げてるとしか思えない
全体的に根拠がふわふわしてるんだよ
0393デフォルトの名無しさん
垢版 |
2020/08/23(日) 01:49:35.65ID:+aN5WY/b
こんなふわふわした論理を積み重ねちゃう感じで
本当にプログラムがかけるのかも疑問
0394デフォルトの名無しさん
垢版 |
2020/08/23(日) 01:49:53.43ID:Gvt1TzeD
>>392
そのとおり

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

こういう理屈

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

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

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

メソッド風に出てくるのは書式の違いであって、本質的に括弧と違わない
スタティックだと言ってるんだから仕様的にも裏切っちゃいけないし
宣言は length( this string s ) で普通の関数と同じく括弧の中に呼び出し元がある(ちょっと気持ち悪いが)
0396デフォルトの名無しさん
垢版 |
2020/08/23(日) 14:03:19.82ID:OgLdxADB
馬鹿はオブジェクト指向にかぶれるくらいなら関数型にかぶれてる方がまだ扱いが楽。
モジュール分割へたくそなくせにオブジェクト指向にかぶれるとほんま手に負えんモンスターになるから。
0398デフォルトの名無しさん
垢版 |
2020/08/23(日) 19:35:46.59ID:FOCNZ4Ko
staticが技術的な話なのか。
C++をbetter Cとして使ってくれてればいいよ。
C++使ってんのにどうしてOOPじゃないんだ、とか言わないからさ^^
0399デフォルトの名無しさん
垢版 |
2020/08/23(日) 19:39:10.85ID:a/7Z84eB
スタティック関数っていってるの多分javaのスタティックメソッドの方だと思うよ
0400デフォルトの名無しさん
垢版 |
2020/08/23(日) 19:41:19.27ID:eNcX4Z1l
オブジェクト指向から関数型へは、ある程度発想の転換が必要なんだろな。

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

オブジェクト指向で設計できないから関数型では出来ないというが、そもそもオブジェクト指向の必要が無いのだが。
0402デフォルトの名無しさん
垢版 |
2020/08/23(日) 20:22:19.98ID:mH2YjVlt
>>400
> オブジェクト指向から関数型へは、ある程度発想の転換が必要なんだろな。
必要なのは発想の転換じゃなくて実装サンプルだよ
多数の状態を持つボタンのようなものをどうすればシンプルに実装できるか
その実装サンプルがどこにもないから関数型には無理なんだなってことになってる
0403デフォルトの名無しさん
垢版 |
2020/08/23(日) 20:25:02.95ID:eq+oHtYe
そもそもオブジェクト指向について、関数型について
きちんと説明できる人っているんだろうか

みんな、なんとなくこういうもの、というイメージしか
持てないでいるんじゃなかろうか
0404デフォルトの名無しさん
垢版 |
2020/08/23(日) 21:08:28.39ID:xAXFDUuo
>>403
関数型についてはごく小さな例だけをあげて、だから関数型は素晴らしい、といってるのしか見たことないな
自分が書いたのでなくてもいいからだいきぼなプログラムを関数型でうまく書いたという事例があれば見てみたい
0405デフォルトの名無しさん
垢版 |
2020/08/23(日) 21:12:08.32ID:OV89sKi5
カプセル化だけではなくオブジェクト指向自体が時代遅れ

スタートアップである弊社が全員ほぼ未経験でRuby on RailsをScalaに移行した理由、その効果と苦労点 - Qiita
https://qiita.com/sonken625/items/d5d0f3b8d794e06489bd
0407デフォルトの名無しさん
垢版 |
2020/08/23(日) 21:33:12.94ID:+aN5WY/b
>カプセル化だけではなくオブジェクト指向自体が時代遅れ
といいながらScalaを例に出してるけど
「Scala(スカラ、SKAH-lah)はオブジェクト指向言語と関数型言語の特徴を統合した
マルチパラダイムのプログラミング言語である。」by wikipedia
オブジェクト指向も含んでるしもう何が言いたいのか
0408デフォルトの名無しさん
垢版 |
2020/08/23(日) 21:36:35.20ID:+aN5WY/b
HaskellではMonadで状態というか状態遷移を表現するらしいけど
関数型推しにはそれがどういう実装になるのか例を示してほしいね
0409デフォルトの名無しさん
垢版 |
2020/08/23(日) 21:45:01.92ID:eNcX4Z1l
そんな頼み方で教えてもらえると思ってることに驚いた。
0410デフォルトの名無しさん
垢版 |
2020/08/23(日) 21:49:05.95ID:+aN5WY/b
関数型の利点を主張する割にここまで具体的な情報が一つもでてきてない
それともエアプだからわからないとか・・・?!
0411デフォルトの名無しさん
垢版 |
2020/08/23(日) 21:49:46.52ID:jaDomWgN
>>409
愚図々々せずにさっさと教えて欲しいね
0412デフォルトの名無しさん
垢版 |
2020/08/23(日) 21:50:06.36ID:+aN5WY/b
無能ほど偉そうなんだよなぁ
0413デフォルトの名無しさん
垢版 |
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

ボタンを作ったら、これだけの情報が初期化されて
作ったボタンからこれだけの情報を取得することも出来る
本当はスタイルもあるからもっと多いけどね
0414デフォルトの名無しさん
垢版 |
2020/08/23(日) 22:46:04.13ID:eNcX4Z1l
ベクトル化の概念が抜け落ちてるんだろうけど。

説明しろと言われても、自分で勉強しろとしか。
0415デフォルトの名無しさん
垢版 |
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
0416デフォルトの名無しさん
垢版 |
2020/08/23(日) 22:53:17.20ID:eNcX4Z1l
ボタンの「作成」と言ってるところにセンスの悪さを感じるというか。

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

どうせコイツじゃわかんねーだろうっていう。
0417デフォルトの名無しさん
垢版 |
2020/08/23(日) 22:54:20.36ID:RQFTaUls
じゃあボタンの「作成」以外でもいいよ
お前が好きなように言いたいことを言え
お前はまだ何も言ってない
0418デフォルトの名無しさん
垢版 |
2020/08/23(日) 22:57:18.72ID:RQFTaUls
関数型言語派は、「はぁ〜お前らわかってないんだよな〜」って言うのが目的なので
説明しろといわれたら、説明できなんだよなw
そのパターンばかり
0419デフォルトの名無しさん
垢版 |
2020/08/23(日) 23:00:00.42ID:HeDyBrKq
そもそもの前提からして意味分かんない
何がどうなることを目指してるの?
お互いに
0420デフォルトの名無しさん
垢版 |
2020/08/23(日) 23:01:52.95ID:RQFTaUls
プログラミング言語の目的なんて
目的は動くものを(できるだけ簡潔に)作ることに決まってるだろ
0421デフォルトの名無しさん
垢版 |
2020/08/23(日) 23:06:10.45ID:RQFTaUls
俺今丁度、環境変数を扱うコード書いてるんだけどさ、

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

これを関数型言語で書いてみて
0422デフォルトの名無しさん
垢版 |
2020/08/23(日) 23:06:58.49ID:RQFTaUls
これすごく簡単なことだと思うんだが、こういうのすら関数型言語では実装コードが出ないというねw
0423デフォルトの名無しさん
垢版 |
2020/08/23(日) 23:10:12.46ID:+aN5WY/b
このスレの流れは関数型狂信者がしつこくオブジェクト指向では駄目だと
根拠の薄い主張を繰り返し、具体的なことを聞くと煙に巻く
今の所、関数型推しはやべえ奴という印象しかない
0424デフォルトの名無しさん
垢版 |
2020/08/23(日) 23:11:26.36ID:HeDyBrKq
>>420
動くもの?
正しく動くものでしょう?
この「正しく」ってのが重要になると思うんだけど
0425デフォルトの名無しさん
垢版 |
2020/08/23(日) 23:14:04.02ID:+aN5WY/b
散々引っ張っといてこのざま
0427デフォルトの名無しさん
垢版 |
2020/08/23(日) 23:17:02.46ID:RQFTaUls
ソフトウェアというのは多数の「状態」をどうやって管理するかってことに尽きるんだが
関数型言語は「状態」が少ない場合はこれでうまくいくという話しかしない

多数の「状態」を管理する方法ではなくて、少数の「状態」を管理する方法しかいわない
多数の「状態」という問題の解決方法ではなく、問題をすり替えてる
0428デフォルトの名無しさん
垢版 |
2020/08/23(日) 23:18:16.79ID:eNcX4Z1l
愚かな奴らよ。
0431デフォルトの名無しさん
垢版 |
2020/08/23(日) 23:26:16.73ID:+aN5WY/b
まじでろくなやついないな
関数型を嫌う理由として十分だわ
0435デフォルトの名無しさん
垢版 |
2020/08/23(日) 23:36:04.55ID:+aN5WY/b
簡単なコードなんだからぐずぐずせず
さっと出したほうが早いのに
言い訳してるってことはエアプか
0436デフォルトの名無しさん
垢版 |
2020/08/23(日) 23:36:18.75ID:HeDyBrKq
結局、何もかも前提がない

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

っていう単純な前提がないから
全てにおいて結論が出せない
十年以上もコード組んでるくせに
こんなこともわからない時点で
そんなに能力高くないんだよお前ら
0439デフォルトの名無しさん
垢版 |
2020/08/23(日) 23:37:20.11ID:RQFTaUls
いい悪いを議論する前に、まずコードを出さないと意味がない
動くコードを出しましょう
0440デフォルトの名無しさん
垢版 |
2020/08/23(日) 23:37:36.34ID:+aN5WY/b
>いいソースとはどういうソースを言うの?
初心者みたいな質問出たぞ
0444デフォルトの名無しさん
垢版 |
2020/08/23(日) 23:41:36.66ID:HeDyBrKq
もし、コードで判断をするなら全く同じ処理を記述した
方式Aと方式Bの両方が必要になるはずなのにそれも用意しようとせず
片方だけ集めたってしょうがねぇだろバーカ

お前のソースなんてみる必要すらない
0445デフォルトの名無しさん
垢版 |
2020/08/23(日) 23:42:18.87ID:+aN5WY/b
public staticくん
0447デフォルトの名無しさん
垢版 |
2020/08/23(日) 23:43:36.05ID:RQFTaUls
>>444
> 1. 環境変数を設定する
> 2. (確認のために)設定した環境変数を表示する
> 3. 環境変数を残したまま他のプログラムを実行する
>
> これを関数型言語で書いてみて


ENV["FOO"]=123
print(ENV["FOO"])
system("bar.exe")
0448デフォルトの名無しさん
垢版 |
2020/08/23(日) 23:43:50.12ID:HeDyBrKq
そもそもまともな思考ができてねーじゃん
本当にその程度でプログラム組めてるのかよ
恥を知れバーカ
0449デフォルトの名無しさん
垢版 |
2020/08/23(日) 23:44:56.07ID:+aN5WY/b
>>448 お前がなw
0453デフォルトの名無しさん
垢版 |
2020/08/24(月) 03:43:12.52ID:ePkGqGTS
インスタンスの代わりに、連想配列を受け取って連想配列を返す
それが関数型

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


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

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

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

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

未来がどーなるかは分からん、ってのがダイナミック、
一度決めたら未来永劫変わらない、ってのがスタティック
0459デフォルトの名無しさん
垢版 |
2020/08/24(月) 20:26:10.91ID:g9Wmq8dv
いちいち理由を説明してもらえるのは小学生までやろな

自分で学ばないやつは数十年前にオブジェクト指向理解できなくて既存のパラダイムに囚われてた老害たちと同じ道を辿る
0460デフォルトの名無しさん
垢版 |
2020/08/24(月) 21:48:58.65ID:HcNsafA/
関数型とかw
0461デフォルトの名無しさん
垢版 |
2020/08/24(月) 21:56:58.62ID:Um3NUpro
愚かなり。
0462デフォルトの名無しさん
垢版 |
2020/08/24(月) 22:09:11.19ID:uvJBs23t
>>459
俺なんかそれ怪しいと思ってるんだよね
オブジェクト指向ってどこをどう探してもメリットねぇよコレ
何でこんなもん広めたんだ?
俺これのおかげでソフトウェア業界何十年停滞したかわかんねぇぞって思ってる
0463デフォルトの名無しさん
垢版 |
2020/08/24(月) 22:13:42.34ID:Um3NUpro
一つのコンピュータ内に複数のプロセッサがある状況になって、俄然関数型が注目されるわけです。

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

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

世間を侮ってはいけません。
あなたが思うよりずっと低能です。
0464デフォルトの名無しさん
垢版 |
2020/08/24(月) 23:03:49.96ID:Um3NUpro
コンピュータは電子計算機なので、関数型は非常に素直なアプローチです。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況