[過去ログ]
「数学」をプログラミングするには (1002レス)
「数学」をプログラミングするには http://mevius.5ch.net/test/read.cgi/tech/1710585705/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
81: デフォルトの名無しさん [sage] 2024/03/23(土) 19:08:33.11 ID:HOjMmtFw 配列こそプログラミングやコンピュータ都合の邪道なものだね 配列は有限しか扱えないから不要 イテレータは自然数イテレータだけでなく例えばフィボナッチイテレータなど無限を扱える イテレータは数学とも相性がいい http://mevius.5ch.net/test/read.cgi/tech/1710585705/81
82: デフォルトの名無しさん [] 2024/03/23(土) 20:19:21.71 ID:g/HfMmmn >>78 >>81 イタレータの意味を分かっているのか。反復子だぞ。反復子が写像のわけないだろ。 写像を実行するための操作手順でしかない。 反復子の遅延評価により無限の操作手順をコードとして書くことはできても、実際には 実行が途中で終わるので無限を扱えるわけではなく、有限を無限に見せている構文上の まやかしに過ぎない。 http://mevius.5ch.net/test/read.cgi/tech/1710585705/82
83: デフォルトの名無しさん [sage] 2024/03/23(土) 21:27:18.93 ID:u0/iUo5p >>82 あんさんボケとるな ここまで読んで反復子(iterator)が写像(map)と書いているのは君しかいない 他の人たちは以下を正しく理解して書込みしている >>72 >> だからmapの入力も出力もイテレータが使われる http://mevius.5ch.net/test/read.cgi/tech/1710585705/83
84: デフォルトの名無しさん [] 2024/03/23(土) 22:23:29.86 ID:g/HfMmmn >>83 >>74はごっちゃにしているようだが。 反復子を使っても遅延評価をしなければ、mapを多段に使った場合の効率は良くならない。 例えば、C++ STLのtransformがそう。 >>70のような配列のmap関数でも、引数fとして複数の関数の合成関数のポインタを渡せば、 効率は良くなる。あるいは、引数fとして関数ポインタの配列を受け入れるようなmap関数を 書いても良い。 http://mevius.5ch.net/test/read.cgi/tech/1710585705/84
85: デフォルトの名無しさん [] 2024/03/23(土) 22:27:51.62 ID:g/HfMmmn >>83 >>74はごっちゃにしているようだが。 反復子を使っても遅延評価をしなければ、mapを多段に使った場合の効率は良くならない。 例えば、C++ STLのtransformがそう。 >>70のような配列のmap関数でも、引数fとして複数の関数の合成関数のポインタを渡せば、 効率は良くなる。あるいは、引数fとして関数ポインタの配列を受け入れるようなmap関数を 書いても良い。 そもそもCでmap関数を書けるかという話だから、書けるという回答で何の問題ないだろ。 h
ttp://mevius.5ch.net/test/read.cgi/tech/1710585705/85
86: デフォルトの名無しさん [sage] 2024/03/23(土) 22:32:25.46 ID:/PCiT6cf >>84 根本的な勘違いをしているようなのでアドバイス イテレータは抽象的な概念に過ぎないのでそこに遅延評価などという話は一切出てこない イテレータの実装の一つに遅延評価の有無を持ち出すケースがあるようだがそんな特殊などうでもいい話をしても意味がない http://mevius.5ch.net/test/read.cgi/tech/1710585705/86
87: デフォルトの名無しさん [] 2024/03/23(土) 22:36:40.17 ID:g/HfMmmn >>86 そんなことは分かっている。>>72に言ってくれ。 http://mevius.5ch.net/test/read.cgi/tech/1710585705/87
88: デフォルトの名無しさん [sage] 2024/03/23(土) 22:43:57.14 ID:/PCiT6cf >>72は正しいよ http://mevius.5ch.net/test/read.cgi/tech/1710585705/88
89: デフォルトの名無しさん [sage] 2024/03/23(土) 22:56:10.99 ID:sCrZk0I5 iteratorは可算無限を扱える mapは入力も出力もiterator 例えば 2倍にするというmapに対して 入力を自然数のiteratorとすると 出力は偶数の自然数のiteratorとなる これだけの話だろ >>82の人だけ理解できてないようだが http://mevius.5ch.net/test/read.cgi/tech/1710585705/89
90: デフォルトの名無しさん [] 2024/03/24(日) 10:28:13.06 ID:8D2Drt3S でもC言語は圏論じゃないよね http://mevius.5ch.net/test/read.cgi/tech/1710585705/90
91: デフォルトの名無しさん [sage] 2024/03/24(日) 10:35:26.13 ID:GMGvnUD/ 20年前の議論草 http://mevius.5ch.net/test/read.cgi/tech/1710585705/91
92: デフォルトの名無しさん [] 2024/03/24(日) 11:18:58.82 ID:dsXIuIWc それは間違い FORTRANが今もなお科学技術計算に使われてる http://mevius.5ch.net/test/read.cgi/tech/1710585705/92
93: デフォルトの名無しさん [sage] 2024/03/24(日) 11:32:06.58 ID:GMGvnUD/ 言葉のお遊びwww http://mevius.5ch.net/test/read.cgi/tech/1710585705/93
94: デフォルトの名無しさん [] 2024/03/24(日) 11:34:31.12 ID:yjeBPx06 集合論はラッセルのパラドックスで矛盾した だから集合と写像に基づくC言語やRubyは数学を扱うのに不適切 よってハスケルなどは圏論に基づくから関数型言語が正解 http://mevius.5ch.net/test/read.cgi/tech/1710585705/94
95: デフォルトの名無しさん [] 2024/03/24(日) 11:46:51.50 ID:BUlt442E プログラム言語は機械語→アセンブラ→高級言語 と進化してきたが、高級言語にも高級度の段階があって gotoジャンプ→構造化ループ→map→ベクトル演算 という序列になっている。 y = x.map(i => 2 * i) のように冗長な記述をしなければならない言語よりは、ベクトル演算で y = 2 * x と すっきり書けるFortranの方が進化している。 http://mevius.5ch.net/test/read.cgi/tech/1710585705/95
96: デフォルトの名無しさん [sage] 2024/03/24(日) 14:10:14.72 ID:S5dROhf0 まったくトンチンカンな話してんな プログラミング言語にmapがあったところでそれで数学ができるわけじゃないだろ 何を解きたいんだよ? 定理証明か?仕様記述か? ド文系のふわっとした思考やめな http://mevius.5ch.net/test/read.cgi/tech/1710585705/96
97: デフォルトの名無しさん [sage] 2024/03/24(日) 14:30:14.37 ID:rmOZT0bw >>95 それはarrayを入出力とするmapだね それは遅延評価もできず可算無限列を扱えない古い劣化タイプ 一方でiteratorを入出力とするmapはarrayだけでなく可算無限列など任意のものを対象にできる http://mevius.5ch.net/test/read.cgi/tech/1710585705/97
98: デフォルトの名無しさん [] 2024/03/24(日) 14:58:03.83 ID:iK6Wk5rB この完全なデタラメな話をここまで長々とする気力がどこから湧いてくるのかがわからない http://mevius.5ch.net/test/read.cgi/tech/1710585705/98
99: デフォルトの名無しさん [sage] 2024/03/24(日) 15:27:25.02 ID:pjttU2nz 所有権を複製したいんやろw http://mevius.5ch.net/test/read.cgi/tech/1710585705/99
100: デフォルトの名無しさん [sage] 2024/03/24(日) 15:28:49.95 ID:4Iqs5Xee >>97 昔は配列に対するmapしか無かったから、遅延評価できず、有限列しか扱えず、中間生成配列のムダなど、悲惨だったな 今はイテレータに対してmapその他を適用するプログラミング言語が増えたので、扱える対象が広がるとともに、効率も良くなったな http://mevius.5ch.net/test/read.cgi/tech/1710585705/100
101: デフォルトの名無しさん [sage] 2024/03/24(日) 16:53:04.14 ID:GMGvnUD/ そんな低レベルの話してるんとちゃうんやで http://mevius.5ch.net/test/read.cgi/tech/1710585705/101
102: デフォルトの名無しさん [] 2024/03/24(日) 18:55:43.95 ID:qF9URZLj そもそも高階関数のmapは、数学の集合論における写像のことではない http://mevius.5ch.net/test/read.cgi/tech/1710585705/102
103: デフォルトの名無しさん [] 2024/03/24(日) 19:36:33.57 ID:WsANI0D/ ゴミみたいな話しかしてないな、定理証明系とかの話をしているのかと思ったら http://mevius.5ch.net/test/read.cgi/tech/1710585705/103
104: デフォルトの名無しさん [] 2024/03/24(日) 20:58:49.18 ID:BUlt442E >>97 >> 100 Ruby厨、Haskell厨が他の言語を貶めるのに必死だなw Fortranのプログラム program test integer :: x(3), y(3) x = (/1, 2, 3/) y = 2 * x + 1 print "(i0)", y end program の y = 2 * x + 1 の行で中間配列が作成されて、 integer :: temp(3) temp = 2 * x y = temp + 1 のような非効率な動作になるとでも思ってるのか? STLで提供しているC++のvalarrayと違って、 Fortranはベクト
ル演算に言語仕様レベルで対応しているから、そんなことするはずないだろ。 http://mevius.5ch.net/test/read.cgi/tech/1710585705/104
105: デフォルトの名無しさん [] 2024/03/24(日) 20:59:19.43 ID:BUlt442E Visual Stduioで y = 2 * x + 1 の行の逆アセンブリを見てみると、 mov qword ptr [rbp + 68h], 1 mov rax, qword ptr [rbp + 68h] cmp rax, 3 jg TEST + 105h mov rax, qword ptr [rbp + 68h] imul rax, rax, 4 lea rdx, [X] add rdx, rax add rdx, 0FFFFFFFFFFFFFFFCh mov eax, dword ptr [rdx] imul eax, eax, 2 inc eax mov rdx, qword ptr [rbp + 68h] imul rdx, rdx, 4 lea rcx, [Y] add rcx, rdx a
dd rcx, 0FFFFFFFFFFFFFFFCh mov dword ptr [rcx], eax mov eax, 1 add rax, qword ptr [rbp + 68h] mov qword ptr [rbp + 68h], rax jmp TEST + 0B7h というコードが生成されていて、中間配列なんて作成せず合成関数を1回だけ適用し、Cの for (i = 1; i <= 3; i++) y[i] = 2 * x[i] + 3; に相当する効率的な処理になっている。(add rdx, 0FFFFFFFFFFFFFFFCh を見ると、 配列の添字が1始まりなのは非効率なのかと思ってしまうが…) http://mevius.5ch.net/test/read.cgi/tech/1710585705/105
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 897 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.026s