たとえば、プログラミングで
π/4 = 1 - 1/3 + 1/5 - 1/7 + ...
を近似ではなく厳密に確かめるにはどうしたらいいの
人間が証明できるってことは、有限なアルゴリズムに書き換えられると思うんだけど
探検
「数学」をプログラミングするには
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2024/03/16(土) 19:41:45.98ID:nuwGv9us35デフォルトの名無しさん
2024/03/19(火) 16:59:03.63ID:WY0TXEXb ほんとうに教科書に載ってる定理の証明がぜんぶ正しく書かれてるなら、それは教科書読んでるのと同じわけだし
36デフォルトの名無しさん
2024/03/19(火) 17:00:04.15ID:WY0TXEXb lean4はプログラミング言語としても、haskellやrustくらいパワフルな言語なので、cだのfortranだの勉強するよりプログラミングの勉強にもなる
37デフォルトの名無しさん
2024/03/19(火) 17:06:08.09ID:50xBt2sS >>29
推論規則にしたがって項を削除したり、条件をみたす要素を深さ優先探索したり
推論規則にしたがって項を削除したり、条件をみたす要素を深さ優先探索したり
38デフォルトの名無しさん
2024/03/19(火) 17:54:01.83ID:/7JjNXd8 証明支援系っつっても、ふつうにプログラム書くのと同じで、特定の問題の解法をプログラムしてるだけ
ようは論理のピタゴラスイッチ作ってるだけ
べつに未知の証明を自動で発見してくれるわけではない(もちろん、問題によっては自動的に解決できる場合もあるが)
ようは論理のピタゴラスイッチ作ってるだけ
べつに未知の証明を自動で発見してくれるわけではない(もちろん、問題によっては自動的に解決できる場合もあるが)
39デフォルトの名無しさん
2024/03/19(火) 17:56:38.86ID:P1OcOpxu 証明支援系Lean4
数式処理システムSage
組版システムLaTeX
を組み合わせたオープンソースの統合数学環境と、黒板の文字や図を認識する入力インタフェースがあればいいと思う
数式処理システムSage
組版システムLaTeX
を組み合わせたオープンソースの統合数学環境と、黒板の文字や図を認識する入力インタフェースがあればいいと思う
40デフォルトの名無しさん
2024/03/19(火) 18:04:10.23ID:qttME5ET2024/03/19(火) 18:56:00.18ID:5dhARo0o
バカが必死で草
42デフォルトの名無しさん
2024/03/19(火) 19:15:14.75ID:IwEkPQSo この馬鹿は何がしたいんだろ……
2024/03/20(水) 10:18:59.26ID:ea1o2Ub5
44デフォルトの名無しさん
2024/03/20(水) 12:54:23.96ID:VbUXRLzi >>43
ポエムはよそで書いてろ
ポエムはよそで書いてろ
2024/03/20(水) 13:10:38.35ID:ea1o2Ub5
ミサイルでも撃たれたならともかく
ポエムなるものを書き込まれたことへの反応が過剰なのが気になる
現実世界にポエムが存在しなくなれば消去法で「数学」になるってことなのかな
ポエムなるものを書き込まれたことへの反応が過剰なのが気になる
現実世界にポエムが存在しなくなれば消去法で「数学」になるってことなのかな
46デフォルトの名無しさん
2024/03/20(水) 14:27:47.20ID:I+zqr01r スレタイが悪い
専門用語や英語を入れておかないと、自分も話題に参加できると勘違いした馬鹿が書き込む
専門用語や英語を入れておかないと、自分も話題に参加できると勘違いした馬鹿が書き込む
2024/03/20(水) 15:26:54.49ID:4PdbE3xv
仲よき事は美しき哉 志賀直哉
2024/03/20(水) 15:27:56.00ID:4PdbE3xv
>>22
これに反応できないお前ら
これに反応できないお前ら
49デフォルトの名無しさん
2024/03/20(水) 15:50:55.08ID:vNXgKg89 >>47 武者小路実篤じゃなかったっけ
50デフォルトの名無しさん
2024/03/20(水) 16:42:40.04ID:ZN9vgvDp >>33
すでに解けてる問題を特定の処理系の言語に書き直すのが一大プロジェクトというのがくだらないと思う
すでに解けてる問題を特定の処理系の言語に書き直すのが一大プロジェクトというのがくだらないと思う
2024/03/20(水) 16:54:28.92ID:4PdbE3xv
>>12
これにも反応できない雑魚ども
これにも反応できない雑魚ども
2024/03/20(水) 17:51:55.09ID:ea1o2Ub5
2024/03/20(水) 18:02:21.59ID:Snv2Tioi
ポエム連発は草
54デフォルトの名無しさん
2024/03/20(水) 21:22:26.43ID:qwgU2fnR2024/03/20(水) 23:28:22.46ID:ea1o2Ub5
わざと馬鹿になったのではないが
数学の範囲内の定理を厳密に証明しても、内か外かの判断は厳密にならないので
「プログラミングならなんでも数学」のような馬鹿な意見も厳密に全否定できないんだよな
数学の範囲内の定理を厳密に証明しても、内か外かの判断は厳密にならないので
「プログラミングならなんでも数学」のような馬鹿な意見も厳密に全否定できないんだよな
56デフォルトの名無しさん
2024/03/22(金) 15:38:04.26ID:m8Pakijg 現代数学は集合と写像の言葉で書かれている
写像は関数の一般化だからC言語やHaskellなどの関数型言語では数学をプログラミングできない
RubyやPythonなどにはsetやmapといった機能があるから
これで数学をプログラミングできると思われる
写像は関数の一般化だからC言語やHaskellなどの関数型言語では数学をプログラミングできない
RubyやPythonなどにはsetやmapといった機能があるから
これで数学をプログラミングできると思われる
2024/03/22(金) 15:41:43.35ID:BpbPyhcF
厨二の夢だったのさ
58デフォルトの名無しさん
2024/03/22(金) 22:21:33.16ID:LL1SYasV2024/03/22(金) 22:53:17.07ID:BpbPyhcF
所詮プログラムは人が書くもの
2024/03/22(金) 23:30:06.22ID:CJ8mvd1G
61デフォルトの名無しさん
2024/03/22(金) 23:57:05.24ID:LL1SYasV はあ??
マップは車窓だろ!!
マップは車窓だろ!!
62デフォルトの名無しさん
2024/03/23(土) 00:02:01.40ID:0VbIgFfj マップは関数の集合直積に過ぎない
c言語でも有限アルゴリズムで数学プログラミングが出来る
パイソンは構文をパースできるがスクリプト言語ゆえ数学プログラミングは無理
c言語でも有限アルゴリズムで数学プログラミングが出来る
パイソンは構文をパースできるがスクリプト言語ゆえ数学プログラミングは無理
63デフォルトの名無しさん
2024/03/23(土) 00:32:34.16ID:0VbIgFfj >>60
跡から登場したってことはRubyやPythonのほうが優れているってことやろが
跡から登場したってことはRubyやPythonのほうが優れているってことやろが
2024/03/23(土) 01:14:32.77ID:O64Y227M
まともなプログラマーがスクリプト言語でプログラミング開発することはない
スクリプト言語はスクリプトを書く程度のことをするだけのおもちゃ
スクリプト言語はスクリプトを書く程度のことをするだけのおもちゃ
65デフォルトの名無しさん
2024/03/23(土) 04:20:19.88ID:rvJB/m9a CやPYTONはスクリプト言語だから単純なことしかできない
66デフォルトの名無しさん
2024/03/23(土) 04:41:11.89ID:IdPmAPnB スレタイ
集合と写像が数学の基本らしい
写像というのは関数の一般化だからCは関数言語だから数学できないということになる
Javaのmainは写像だからJavaは数学できる。Rubyにも写像ある
集合と写像が数学の基本らしい
写像というのは関数の一般化だからCは関数言語だから数学できないということになる
Javaのmainは写像だからJavaは数学できる。Rubyにも写像ある
67デフォルトの名無しさん
2024/03/23(土) 07:48:29.25ID:LhcvAfdM 数学に副作用はないがモナドは副作用があるのでハスケルでは数学はできない
68デフォルトの名無しさん
2024/03/23(土) 12:22:12.37ID:g/HfMmmn >>56
Cでは関数の引数として関数ポインタを渡せるから、map関数を簡単に自作できる。
Cでは関数の引数として関数ポインタを渡せるから、map関数を簡単に自作できる。
2024/03/23(土) 12:23:33.26ID:TQ7fzTlo
空論、絵に描いた餅、機械語にだってできるだろwww
70デフォルトの名無しさん
2024/03/23(土) 12:47:39.65ID:g/HfMmmn2024/03/23(土) 13:55:22.78ID:TQ7fzTlo
C言語は機械語にアセンブルされて実行されるんだよ
2024/03/23(土) 14:11:05.89ID:O64Y227M
>>70
普通mapは配列に対してではなく
もっと一般的にイテレータに対して適用
結果もイテレータとする
その結果を例えばfor文で使う場合
わざわざ結果を配列に入れても無意味だったことになるからだ
mapを多段にした使った場合も同様で中間結果配列は無意味になる
だからmapの入力も出力もイテレータが使われる
普通mapは配列に対してではなく
もっと一般的にイテレータに対して適用
結果もイテレータとする
その結果を例えばfor文で使う場合
わざわざ結果を配列に入れても無意味だったことになるからだ
mapを多段にした使った場合も同様で中間結果配列は無意味になる
だからmapの入力も出力もイテレータが使われる
73デフォルトの名無しさん
2024/03/23(土) 14:44:44.84ID:g/HfMmmn2024/03/23(土) 15:36:22.16ID:O64Y227M
2024/03/23(土) 16:14:29.71ID:TQ7fzTlo
そもそもそんなレベルの話をしてるんではないが
76デフォルトの名無しさん
2024/03/23(土) 16:43:39.42ID:g/HfMmmn >>74
自然数は要素数が無限大の配列だが、コンピュータではメモリが有限なので表現できないだけ。
イタレータによる遅延評価は問題を先送りしただけで、本当の写像である配列を作ろうとすると
メモリが途中で尽きて作れない。
自然数は要素数が無限大の配列だが、コンピュータではメモリが有限なので表現できないだけ。
イタレータによる遅延評価は問題を先送りしただけで、本当の写像である配列を作ろうとすると
メモリが途中で尽きて作れない。
2024/03/23(土) 17:05:10.16ID:O64Y227M
78デフォルトの名無しさん
2024/03/23(土) 17:30:00.10ID:g/HfMmmn >>77
イタレータは配列の各要素を走査しながら操作する道具、つまり写像を逐次的に作っていくための操作手順を表したものに過ぎない。
イタレータは配列の各要素を走査しながら操作する道具、つまり写像を逐次的に作っていくための操作手順を表したものに過ぎない。
2024/03/23(土) 18:46:13.42ID:O64Y227M
2024/03/23(土) 19:02:25.28ID:/RLS51iM
イテレータなんぞプログラミング側の都合でしかないやろw
数学のどこにイテレーションって概念があるの?
もとは集合の話だっけ? 集合のどこにイテレータ出てくる?
数学のどこにイテレーションって概念があるの?
もとは集合の話だっけ? 集合のどこにイテレータ出てくる?
2024/03/23(土) 19:08:33.11ID:HOjMmtFw
配列こそプログラミングやコンピュータ都合の邪道なものだね
配列は有限しか扱えないから不要
イテレータは自然数イテレータだけでなく例えばフィボナッチイテレータなど無限を扱える
イテレータは数学とも相性がいい
配列は有限しか扱えないから不要
イテレータは自然数イテレータだけでなく例えばフィボナッチイテレータなど無限を扱える
イテレータは数学とも相性がいい
82デフォルトの名無しさん
2024/03/23(土) 20:19:21.71ID:g/HfMmmn2024/03/23(土) 21:27:18.93ID:u0/iUo5p
84デフォルトの名無しさん
2024/03/23(土) 22:23:29.86ID:g/HfMmmn85デフォルトの名無しさん
2024/03/23(土) 22:27:51.62ID:g/HfMmmn2024/03/23(土) 22:32:25.46ID:/PCiT6cf
>>84
根本的な勘違いをしているようなのでアドバイス
イテレータは抽象的な概念に過ぎないのでそこに遅延評価などという話は一切出てこない
イテレータの実装の一つに遅延評価の有無を持ち出すケースがあるようだがそんな特殊などうでもいい話をしても意味がない
根本的な勘違いをしているようなのでアドバイス
イテレータは抽象的な概念に過ぎないのでそこに遅延評価などという話は一切出てこない
イテレータの実装の一つに遅延評価の有無を持ち出すケースがあるようだがそんな特殊などうでもいい話をしても意味がない
2024/03/23(土) 22:43:57.14ID:/PCiT6cf
>>72は正しいよ
2024/03/23(土) 22:56:10.99ID:sCrZk0I5
iteratorは可算無限を扱える
mapは入力も出力もiterator
例えば
2倍にするというmapに対して
入力を自然数のiteratorとすると
出力は偶数の自然数のiteratorとなる
これだけの話だろ
>>82の人だけ理解できてないようだが
mapは入力も出力もiterator
例えば
2倍にするというmapに対して
入力を自然数のiteratorとすると
出力は偶数の自然数のiteratorとなる
これだけの話だろ
>>82の人だけ理解できてないようだが
90デフォルトの名無しさん
2024/03/24(日) 10:28:13.06ID:8D2Drt3S でもC言語は圏論じゃないよね
2024/03/24(日) 10:35:26.13ID:GMGvnUD/
20年前の議論草
92デフォルトの名無しさん
2024/03/24(日) 11:18:58.82ID:dsXIuIWc それは間違い
FORTRANが今もなお科学技術計算に使われてる
FORTRANが今もなお科学技術計算に使われてる
2024/03/24(日) 11:32:06.58ID:GMGvnUD/
言葉のお遊びwww
94デフォルトの名無しさん
2024/03/24(日) 11:34:31.12ID:yjeBPx06 集合論はラッセルのパラドックスで矛盾した
だから集合と写像に基づくC言語やRubyは数学を扱うのに不適切
よってハスケルなどは圏論に基づくから関数型言語が正解
だから集合と写像に基づくC言語やRubyは数学を扱うのに不適切
よってハスケルなどは圏論に基づくから関数型言語が正解
95デフォルトの名無しさん
2024/03/24(日) 11:46:51.50ID:BUlt442E プログラム言語は機械語→アセンブラ→高級言語 と進化してきたが、高級言語にも高級度の段階があって
gotoジャンプ→構造化ループ→map→ベクトル演算 という序列になっている。
y = x.map(i => 2 * i) のように冗長な記述をしなければならない言語よりは、ベクトル演算で y = 2 * x と
すっきり書けるFortranの方が進化している。
gotoジャンプ→構造化ループ→map→ベクトル演算 という序列になっている。
y = x.map(i => 2 * i) のように冗長な記述をしなければならない言語よりは、ベクトル演算で y = 2 * x と
すっきり書けるFortranの方が進化している。
2024/03/24(日) 14:10:14.72ID:S5dROhf0
まったくトンチンカンな話してんな
プログラミング言語にmapがあったところでそれで数学ができるわけじゃないだろ
何を解きたいんだよ?
定理証明か?仕様記述か?
ド文系のふわっとした思考やめな
プログラミング言語にmapがあったところでそれで数学ができるわけじゃないだろ
何を解きたいんだよ?
定理証明か?仕様記述か?
ド文系のふわっとした思考やめな
2024/03/24(日) 14:30:14.37ID:rmOZT0bw
>>95
それはarrayを入出力とするmapだね
それは遅延評価もできず可算無限列を扱えない古い劣化タイプ
一方でiteratorを入出力とするmapはarrayだけでなく可算無限列など任意のものを対象にできる
それはarrayを入出力とするmapだね
それは遅延評価もできず可算無限列を扱えない古い劣化タイプ
一方でiteratorを入出力とするmapはarrayだけでなく可算無限列など任意のものを対象にできる
98デフォルトの名無しさん
2024/03/24(日) 14:58:03.83ID:iK6Wk5rB この完全なデタラメな話をここまで長々とする気力がどこから湧いてくるのかがわからない
2024/03/24(日) 15:27:25.02ID:pjttU2nz
所有権を複製したいんやろw
100デフォルトの名無しさん
2024/03/24(日) 15:28:49.95ID:4Iqs5Xee >>97
昔は配列に対するmapしか無かったから、遅延評価できず、有限列しか扱えず、中間生成配列のムダなど、悲惨だったな
今はイテレータに対してmapその他を適用するプログラミング言語が増えたので、扱える対象が広がるとともに、効率も良くなったな
昔は配列に対するmapしか無かったから、遅延評価できず、有限列しか扱えず、中間生成配列のムダなど、悲惨だったな
今はイテレータに対してmapその他を適用するプログラミング言語が増えたので、扱える対象が広がるとともに、効率も良くなったな
101デフォルトの名無しさん
2024/03/24(日) 16:53:04.14ID:GMGvnUD/ そんな低レベルの話してるんとちゃうんやで
102デフォルトの名無しさん
2024/03/24(日) 18:55:43.95ID:qF9URZLj そもそも高階関数のmapは、数学の集合論における写像のことではない
103デフォルトの名無しさん
2024/03/24(日) 19:36:33.57ID:WsANI0D/ ゴミみたいな話しかしてないな、定理証明系とかの話をしているのかと思ったら
104デフォルトの名無しさん
2024/03/24(日) 20:58:49.18ID: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はベクトル演算に言語仕様レベルで対応しているから、そんなことするはずないだろ。
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はベクトル演算に言語仕様レベルで対応しているから、そんなことするはずないだろ。
105デフォルトの名無しさん
2024/03/24(日) 20:59:19.43ID: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始まりなのは非効率なのかと思ってしまうが…)
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始まりなのは非効率なのかと思ってしまうが…)
106デフォルトの名無しさん
2024/03/24(日) 20:59:35.15ID:BUlt442E インタプリタのRubyや、配列っぽく見える[1, 2, 3]がリンクリストのHaskellが効率を
云々するのは馬鹿げているな。
云々するのは馬鹿げているな。
107デフォルトの名無しさん
2024/03/24(日) 21:02:48.75ID: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;
(誤) for (i = 1; i <= 3; i++) y[i] = 2 * x[i] + 3;
(正) for (i = 1; i <= 3; i++) y[i] = 2 * x[i] + 1;
108デフォルトの名無しさん
2024/03/24(日) 22:52:27.30ID:IPqW9Eum109デフォルトの名無しさん
2024/03/24(日) 23:00:28.05ID:D7nIPk2H 静的な固定長で最適化できるのは当たり前だから
少なくとも実行時までわからない可変長じゃないとな
少なくとも実行時までわからない可変長じゃないとな
110デフォルトの名無しさん
2024/03/24(日) 23:11:46.55ID:BUlt442E111デフォルトの名無しさん
2024/03/24(日) 23:42:53.58ID:+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 + ...
もちろん何番目まで必要かは不明
この数列を他と切り離して記述できるかどうか
1
1 - 1/3
1 - 1/3 + 1/5
1 - 1/3 + 1/5 - 1/7
1 - 1/3 + 1/5 - 1/7 + ...
もちろん何番目まで必要かは不明
この数列を他と切り離して記述できるかどうか
112デフォルトの名無しさん
2024/03/25(月) 06:31:11.05ID:20JdvYau 写像型言語は無いから無理やろ
113デフォルトの名無しさん
2024/03/25(月) 08:05:29.65ID:S04445Yl しょうもない算法や文法を力説されても
数理論理を知らん高卒なんやろか
数理論理を知らん高卒なんやろか
114デフォルトの名無しさん
2024/03/25(月) 09:05:37.14ID:KQK4URb5 集合論はラッセルのパラドックスがあるからまちがい
選択公理もバナッハタルスキーのパラドックスがあるからまちがい
圏論こそ数学の基礎
選択公理もバナッハタルスキーのパラドックスがあるからまちがい
圏論こそ数学の基礎
115デフォルトの名無しさん
2024/03/25(月) 09:20:11.31ID:yJIwIJvC そういう何が一番とか中二思考やめようや
116デフォルトの名無しさん
2024/03/25(月) 09:20:53.71ID:VkynB6Jg アホ参上
117デフォルトの名無しさん
2024/03/25(月) 10:25:12.12ID:VsfGDznC 圏論型プログラミングってないの?
118デフォルトの名無しさん
2024/03/25(月) 18:22:08.56ID:OU4hWxvG 集合は悪くないがそれを内包表記で定義するのが悪い
イテレータを内包表記っぽく書けるやつは
内包表記を使わない書き方もできる保証があるから良いけど
イテレータを内包表記っぽく書けるやつは
内包表記を使わない書き方もできる保証があるから良いけど
119デフォルトの名無しさん
2024/03/25(月) 19:35:21.63ID:Yjyc3ZYI Pythonには内包表記はあっても外延表記はないから集合論はできないよ
120デフォルトの名無しさん
2024/03/25(月) 20:38:21.53ID: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を除去する
最適化はされない。
コンパイラではまさに>>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を除去する
最適化はされない。
121デフォルトの名無しさん
2024/03/25(月) 20:38:45.78ID: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
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
122デフォルトの名無しさん
2024/03/25(月) 20:46:39.58ID:trqJ9Q6W rustのほうがスゲーからfortranは黙っとれ
123デフォルトの名無しさん
2024/03/25(月) 21:08:10.53ID:VkynB6Jg 誰にも相手してもらえないのでフォートランがイキル
124デフォルトの名無しさん
2024/03/25(月) 21:21:08.93ID:VkynB6Jg フォートランは行列、有限要素法のライブラリィ呼ぶだけ、独自のコードなんか書かないw
125デフォルトの名無しさん
2024/03/25(月) 21:23:38.32ID:DOdK3gDR 数学をプログラミングするには、プログラマが数学の必要があるのでは?
126デフォルトの名無しさん
2024/03/25(月) 21:32:48.72ID:VkynB6Jg プログラマは数学である必要がある
127デフォルトの名無しさん
2024/03/25(月) 22:22:52.88ID:OU4hWxvG ギャンブルなら敗者が金を振り込めば秩序が戻るのだが
金を振り込んでしまう人がここにはいないので
金を振り込んでしまう人がここにはいないので
128デフォルトの名無しさん
2024/03/25(月) 23:24:59.56ID:77HfiJgP >>117
圏論型と言えるか分らんが、圏論が注目されたのは副作用の問題を圏論のモナドで表現できるということでHaskellに採用されたのがきっかけっぽい。
今は非可換確率論を圏論で表現すれば意識がどうやって生まれるのかの研究に使えるって話がある。
意識が生まれる謎が解ければAIに意識を持たせられる。
圏論型と言えるか分らんが、圏論が注目されたのは副作用の問題を圏論のモナドで表現できるということでHaskellに採用されたのがきっかけっぽい。
今は非可換確率論を圏論で表現すれば意識がどうやって生まれるのかの研究に使えるって話がある。
意識が生まれる謎が解ければAIに意識を持たせられる。
129デフォルトの名無しさん
2024/03/26(火) 02:09:58.19ID:bsMEvYma 意識は数学かwww
130デフォルトの名無しさん
2024/03/26(火) 11:17:19.23ID:ZLsRjAqD 計算機だからなぁ
131デフォルトの名無しさん
2024/03/26(火) 15:57:26.17ID:bsMEvYma 戻らないだろ、刑務所行き
>ギャンブルなら敗者が金を振り込めば秩序が戻るのだが
>ギャンブルなら敗者が金を振り込めば秩序が戻るのだが
132デフォルトの名無しさん
2024/03/26(火) 17:42:12.34ID:0A2fpKMf >>126 日本語おかしい
133デフォルトの名無しさん
2024/03/26(火) 17:56:53.22ID:bsMEvYma >>132
125に言え
125に言え
134デフォルトの名無しさん
2024/03/27(水) 18:25:48.23ID:sRZ89+IF コンプライアンス的には絶対に違反しないブレないスタイルの方が楽だな
中庸とかいうのは数学的にも意味のない言葉
の筈だけど
中庸とかいうのは数学的にも意味のない言葉
の筈だけど
135デフォルトの名無しさん
2024/03/27(水) 20:27:56.36ID:NpBSIV2x■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「日本はパンダがいなくなる状況に直面するだろう」 中国メディア、専門家の見方伝える [♪♪♪★]
- 【無言】中国怒らせた高市首相→1週間だんまり、国民に実害も説明なし 中国問題を避けてスルー… ★5 [BFU★]
- 【福岡】ミカンの木に逆さ吊りになっていた高齢の男性が死亡 [雑用縞工作★]
- 止まらぬ「日本売り」 高市財政への懸念で進む金利上昇と円安 ★2 [蚤の市★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★11 [樽悶★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★12 [樽悶★]
- コンビニ店長、ついにキレる「なんであなた達にトイレを貸さないといけないんですか?私達はトイレレンタル業ではありません」 [329329848]
- 【高市悲報】大暴落 [115996789]
- 🏡
- 教育ママゴン「うちの子はしんちゃんや特撮、リゼロは見せません。ジブリやディズニーとかしか見させません」こゆのって実際どうなん? [257926174]
- 力を解放していいかな?
- 【速報】東京から人が消える [329329848]
