[過去ログ]
「数学」をプログラミングするには (1002レス)
「数学」をプログラミングするには http://mevius.5ch.net/test/read.cgi/tech/1710585705/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
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 add 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
106: デフォルトの名無しさん [] 2024/03/24(日) 20:59:35.15 ID:BUlt442E インタプリタのRubyや、配列っぽく見える[1, 2, 3]がリンクリストのHaskellが効率を 云々するのは馬鹿げているな。 http://mevius.5ch.net/test/read.cgi/tech/1710585705/106
107: デフォルトの名無しさん [] 2024/03/24(日) 21:02:48.75 ID:BUlt442E >>105の訂正 (誤) for (i = 1; i <= 3; i++) y[i] = 2 * x[i] + 3; (正) for (i = 1; i <= 3; i++) y[i] = 2 * x[i] + 1; http://mevius.5ch.net/test/read.cgi/tech/1710585705/107
108: デフォルトの名無しさん [sage] 2024/03/24(日) 22:52:27.30 ID:IPqW9Eum >>104 固定長の配列を入力に使っている時点で失格 このスレは>>1の例のように対象は可算無限列 http://mevius.5ch.net/test/read.cgi/tech/1710585705/108
109: デフォルトの名無しさん [] 2024/03/24(日) 23:00:28.05 ID:D7nIPk2H 静的な固定長で最適化できるのは当たり前だから 少なくとも実行時までわからない可変長じゃないとな http://mevius.5ch.net/test/read.cgi/tech/1710585705/109
110: デフォルトの名無しさん [] 2024/03/24(日) 23:11:46.55 ID:BUlt442E >>108 無限なんて実行不可能なものを構文として書けても、コメントとして書けるのと同じようなもので無意味。 >>109 何を頓珍漢なことを言ってるんだよ。 for (i = 1; i <= 3; i++) y[i] = 2 * x[i] + 1; が for (i = 1; i <= n; i++) y[i] = 2 * x[i] + 1; に変わるだけだぞ。 http://mevius.5ch.net/test/read.cgi/tech/1710585705/110
111: デフォルトの名無しさん [sage] 2024/03/24(日) 23:42:53.58 ID:+hE4ud6c 入力対象は>>1の数列でいいんじゃね 1 1 - 1/3 1 - 1/3 + 1/5 1 - 1/3 + 1/5 - 1/7 1 - 1/3 + 1/5 - 1/7 + ... もちろん何番目まで必要かは不明 この数列を他と切り離して記述できるかどうか http://mevius.5ch.net/test/read.cgi/tech/1710585705/111
112: デフォルトの名無しさん [] 2024/03/25(月) 06:31:11.05 ID:20JdvYau 写像型言語は無いから無理やろ http://mevius.5ch.net/test/read.cgi/tech/1710585705/112
113: デフォルトの名無しさん [sage] 2024/03/25(月) 08:05:29.65 ID:S04445Yl しょうもない算法や文法を力説されても 数理論理を知らん高卒なんやろか http://mevius.5ch.net/test/read.cgi/tech/1710585705/113
114: デフォルトの名無しさん [] 2024/03/25(月) 09:05:37.14 ID:KQK4URb5 集合論はラッセルのパラドックスがあるからまちがい 選択公理もバナッハタルスキーのパラドックスがあるからまちがい 圏論こそ数学の基礎 http://mevius.5ch.net/test/read.cgi/tech/1710585705/114
115: デフォルトの名無しさん [sage] 2024/03/25(月) 09:20:11.31 ID:yJIwIJvC そういう何が一番とか中二思考やめようや http://mevius.5ch.net/test/read.cgi/tech/1710585705/115
116: デフォルトの名無しさん [sage] 2024/03/25(月) 09:20:53.71 ID:VkynB6Jg アホ参上 http://mevius.5ch.net/test/read.cgi/tech/1710585705/116
117: デフォルトの名無しさん [] 2024/03/25(月) 10:25:12.12 ID:VsfGDznC 圏論型プログラミングってないの? http://mevius.5ch.net/test/read.cgi/tech/1710585705/117
118: デフォルトの名無しさん [sage] 2024/03/25(月) 18:22:08.56 ID:OU4hWxvG 集合は悪くないがそれを内包表記で定義するのが悪い イテレータを内包表記っぽく書けるやつは 内包表記を使わない書き方もできる保証があるから良いけど http://mevius.5ch.net/test/read.cgi/tech/1710585705/118
119: デフォルトの名無しさん [] 2024/03/25(月) 19:35:21.63 ID:Yjyc3ZYI Pythonには内包表記はあっても外延表記はないから集合論はできないよ http://mevius.5ch.net/test/read.cgi/tech/1710585705/119
120: デフォルトの名無しさん [] 2024/03/25(月) 20:38:21.53 ID:0jQlcuCQ >>104はVisual Studioでは最適化オプションがなぜか無視されてしまうが、コマンドライン コンパイラではまさに>>109が言う要素数が固定かつ全要素がコンパイル時に計算可能という 特殊な場合に応じた最適化が施され、コンパイル時の計算結果を配列yに書き込むだけで y = 2 * x を全く計算しないコードが生成されることが、アセンブリ出力から分かる。 IFORT (旧式Intel Fortran) では mov eax, 3 (中略) mov DWORD PTR [TEST$X.0.1], 1 mov DWORD PTR [TEST$X.0.1 + 4], 2 mov DWORD PTR [TEST$X.0.1 + 8], eax mov DWORD PTR [TEST$Y.0.1], eax mov DWORD PTR [TEST$Y.0.1 + 4], 5 mov DWORD PTR [TEST$Y.0.1 + 8], 7 というコードが生成され、Cの int t = 3; *x = 1; *(int *)((char *)x + 4) = 2; *(int *)((char *)x + 8) = t; *y = t; *(int *)((char *)y + 4) = 5; *(int *)((char *)x + 8) = 7; に相当する処理になる (CではC流に添字0〜2を使うとして)。xとyに共通する 要素3はレジスタに入れて使い回される。一度も使われない変数xを除去する 最適化はされない。 http://mevius.5ch.net/test/read.cgi/tech/1710585705/120
121: デフォルトの名無しさん [] 2024/03/25(月) 20:38:45.78 ID:0jQlcuCQ IFX (新式Intel Fortran) では movabsq $21474836483, %rax movq %rax, TEST$Y(%rip) leaq TEST$Y(%rip), %rax movl $7, TEST$Y+8(%rip) というコードが生成され (IntelのコンパイラなのAT&T記法で読みにくいが)、Cの *(long long *)y = 0x500000003; *(int *)((char *)y + 8) = 7; に相当する処理 (リトルエンディアン環境で) になり、3と5がyに一度に書き込まれる。 いずれにしても、Ruby厨、Haskell厨の浅知恵でFortranに嚙み付いても滑稽なだけwww http://mevius.5ch.net/test/read.cgi/tech/1710585705/121
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 881 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.017s