[過去ログ] 「数学」をプログラミングするには (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
42: 2024/03/19(火)19:15 ID:IwEkPQSo(1) AAS
この馬鹿は何がしたいんだろ……
43(1): 2024/03/20(水)10:18 ID:ea1o2Ub5(1/4) AAS
>>36
CやFortranの評価が低いということはHaskellの中でモナドの評価が低いよね
それはもったいないから言語を競争させる原理はよくない
44: 2024/03/20(水)12:54 ID:VbUXRLzi(1) AAS
>>43
ポエムはよそで書いてろ
45: 2024/03/20(水)13:10 ID:ea1o2Ub5(2/4) AAS
ミサイルでも撃たれたならともかく
ポエムなるものを書き込まれたことへの反応が過剰なのが気になる
現実世界にポエムが存在しなくなれば消去法で「数学」になるってことなのかな
46: 2024/03/20(水)14:27 ID:I+zqr01r(1) AAS
スレタイが悪い
専門用語や英語を入れておかないと、自分も話題に参加できると勘違いした馬鹿が書き込む
47(1): 2024/03/20(水)15:26 ID:4PdbE3xv(1/3) AAS
仲よき事は美しき哉 志賀直哉
48: 2024/03/20(水)15:27 ID:4PdbE3xv(2/3) AAS
>>22
これに反応できないお前ら
49: 2024/03/20(水)15:50 ID:vNXgKg89(1) AAS
>>47 武者小路実篤じゃなかったっけ
50(1): 2024/03/20(水)16:42 ID:ZN9vgvDp(1) AAS
>>33
すでに解けてる問題を特定の処理系の言語に書き直すのが一大プロジェクトというのがくだらないと思う
51: 2024/03/20(水)16:54 ID:4PdbE3xv(3/3) AAS
>>12
これにも反応できない雑魚ども
52(1): 2024/03/20(水)17:51 ID:ea1o2Ub5(3/4) AAS
>>50
すでに常識になっていることを「先入観にとらわれている」と思う人はいる
先入観をリセットしてやり直したい需要は多少はある
53: 2024/03/20(水)18:02 ID:Snv2Tioi(1) AAS
ポエム連発は草
54: 2024/03/20(水)21:22 ID:qwgU2fnR(1) AAS
>>52
馬鹿すぎて話にならない
わざとやってるならむしろお笑い番組の脚本とか考えるセンスあると思うよ
55: 2024/03/20(水)23:28 ID:ea1o2Ub5(4/4) AAS
わざと馬鹿になったのではないが
数学の範囲内の定理を厳密に証明しても、内か外かの判断は厳密にならないので
「プログラミングならなんでも数学」のような馬鹿な意見も厳密に全否定できないんだよな
56(3): 2024/03/22(金)15:38 ID:m8Pakijg(1) AAS
現代数学は集合と写像の言葉で書かれている
写像は関数の一般化だからC言語やHaskellなどの関数型言語では数学をプログラミングできない
RubyやPythonなどにはsetやmapといった機能があるから
これで数学をプログラミングできると思われる
57: 2024/03/22(金)15:41 ID:BpbPyhcF(1/2) AAS
厨二の夢だったのさ
58: 2024/03/22(金)22:21 ID:LL1SYasV(1/2) AAS
>>56
それは違う
数学ができるプログラミング言語のコンパイラをCで書くことができる
そもそもすべてのプログラム言語はチューリング完全だからCで書けてハスケルに書けないなどということは無い
59: 2024/03/22(金)22:53 ID:BpbPyhcF(2/2) AAS
所詮プログラムは人が書くもの
60(1): 2024/03/22(金)23:30 ID:CJ8mvd1G(1) AAS
>>56
それ逆だね
mapは関数型言語で登場した
そのRubyやPythonといったスクリプト言語は後からそれを導入した
61: 2024/03/22(金)23:57 ID:LL1SYasV(2/2) AAS
はあ??
マップは車窓だろ!!
62: 2024/03/23(土)00:02 ID:0VbIgFfj(1/2) AAS
マップは関数の集合直積に過ぎない
c言語でも有限アルゴリズムで数学プログラミングが出来る
パイソンは構文をパースできるがスクリプト言語ゆえ数学プログラミングは無理
63(1): 2024/03/23(土)00:32 ID:0VbIgFfj(2/2) AAS
>>60
跡から登場したってことはRubyやPythonのほうが優れているってことやろが
64: 2024/03/23(土)01:14 ID:O64Y227M(1/5) AAS
まともなプログラマーがスクリプト言語でプログラミング開発することはない
スクリプト言語はスクリプトを書く程度のことをするだけのおもちゃ
65: 2024/03/23(土)04:20 ID:rvJB/m9a(1) AAS
CやPYTONはスクリプト言語だから単純なことしかできない
66: 2024/03/23(土)04:41 ID:IdPmAPnB(1) AAS
スレタイ
集合と写像が数学の基本らしい
写像というのは関数の一般化だからCは関数言語だから数学できないということになる
Javaのmainは写像だからJavaは数学できる。Rubyにも写像ある
67: 2024/03/23(土)07:48 ID:LhcvAfdM(1) AAS
数学に副作用はないがモナドは副作用があるのでハスケルでは数学はできない
68: 2024/03/23(土)12:22 ID:g/HfMmmn(1/9) AAS
>>56
Cでは関数の引数として関数ポインタを渡せるから、map関数を簡単に自作できる。
69(1): 2024/03/23(土)12:23 ID:TQ7fzTlo(1/3) AAS
空論、絵に描いた餅、機械語にだってできるだろwww
70(3): 2024/03/23(土)12:47 ID:g/HfMmmn(2/9) AAS
>>69
機械語に識別子はないからできないだろ。Cでは長さnの配列aの各要素に関数fを適用した結果を
配列bに格納する関数 map(f, a, n, b) を簡単に自作できる。
71: 2024/03/23(土)13:55 ID:TQ7fzTlo(2/3) AAS
C言語は機械語にアセンブルされて実行されるんだよ
72(4): 2024/03/23(土)14:11 ID:O64Y227M(2/5) AAS
>>70
普通mapは配列に対してではなく
もっと一般的にイテレータに対して適用
結果もイテレータとする
その結果を例えばfor文で使う場合
わざわざ結果を配列に入れても無意味だったことになるからだ
mapを多段にした使った場合も同様で中間結果配列は無意味になる
省1
73(1): 2024/03/23(土)14:44 ID:g/HfMmmn(3/9) AAS
>>72
それは実装上の効率化のための操作で、本当の写像ではない。本当の写像は配列から配列を作る。
C#で言えばSelectしただけでは写像にならず、ToArrayしないと写像にならない。
74(3): 2024/03/23(土)15:36 ID:O64Y227M(3/5) AAS
>>73
配列から配列なんて嘘つきだな
例えば写像の入力を数学でもよくある自然数とする
これは配列では表現できない
イテレータならば表現できる
出力も同様で配列は不可能だがイテレータなら可能
75: 2024/03/23(土)16:14 ID:TQ7fzTlo(3/3) AAS
そもそもそんなレベルの話をしてるんではないが
76(1): 2024/03/23(土)16:43 ID:g/HfMmmn(4/9) AAS
>>74
自然数は要素数が無限大の配列だが、コンピュータではメモリが有限なので表現できないだけ。
イタレータによる遅延評価は問題を先送りしただけで、本当の写像である配列を作ろうとすると
メモリが途中で尽きて作れない。
77(1): 2024/03/23(土)17:05 ID:O64Y227M(4/5) AAS
>>76
配列なんていう間違った考えをするからそのように失敗する
正しくイテレータと捉えれば自然数もそこからの写像も扱える
78(2): 2024/03/23(土)17:30 ID:g/HfMmmn(5/9) AAS
>>77
イタレータは配列の各要素を走査しながら操作する道具、つまり写像を逐次的に作っていくための操作手順を表したものに過ぎない。
79: 2024/03/23(土)18:46 ID:O64Y227M(5/5) AAS
>>78
イテレータとは何かを学び直しなさい
それは配列に対するイテレータ
イテレータに配列なんていうものは必要ない
80: 2024/03/23(土)19:02 ID:/RLS51iM(1) AAS
イテレータなんぞプログラミング側の都合でしかないやろw
数学のどこにイテレーションって概念があるの?
もとは集合の話だっけ? 集合のどこにイテレータ出てくる?
81(1): 2024/03/23(土)19:08 ID:HOjMmtFw(1) AAS
配列こそプログラミングやコンピュータ都合の邪道なものだね
配列は有限しか扱えないから不要
イテレータは自然数イテレータだけでなく例えばフィボナッチイテレータなど無限を扱える
イテレータは数学とも相性がいい
82(2): 2024/03/23(土)20:19 ID:g/HfMmmn(6/9) AAS
>>78 >>81
イタレータの意味を分かっているのか。反復子だぞ。反復子が写像のわけないだろ。
写像を実行するための操作手順でしかない。
反復子の遅延評価により無限の操作手順をコードとして書くことはできても、実際には
実行が途中で終わるので無限を扱えるわけではなく、有限を無限に見せている構文上の
まやかしに過ぎない。
83(2): 2024/03/23(土)21:27 ID:u0/iUo5p(1) AAS
>>82
あんさんボケとるな
ここまで読んで反復子(iterator)が写像(map)と書いているのは君しかいない
他の人たちは以下を正しく理解して書込みしている
>>72
>> だからmapの入力も出力もイテレータが使われる
84(1): 2024/03/23(土)22:23 ID:g/HfMmmn(7/9) AAS
>>83
>>74はごっちゃにしているようだが。
反復子を使っても遅延評価をしなければ、mapを多段に使った場合の効率は良くならない。
例えば、C++ STLのtransformがそう。
>>70のような配列のmap関数でも、引数fとして複数の関数の合成関数のポインタを渡せば、
効率は良くなる。あるいは、引数fとして関数ポインタの配列を受け入れるようなmap関数を
書いても良い。
85: 2024/03/23(土)22:27 ID:g/HfMmmn(8/9) AAS
>>83
>>74はごっちゃにしているようだが。
反復子を使っても遅延評価をしなければ、mapを多段に使った場合の効率は良くならない。
例えば、C++ STLのtransformがそう。
>>70のような配列のmap関数でも、引数fとして複数の関数の合成関数のポインタを渡せば、
効率は良くなる。あるいは、引数fとして関数ポインタの配列を受け入れるようなmap関数を
書いても良い。
省1
86(1): 2024/03/23(土)22:32 ID:/PCiT6cf(1/2) AAS
>>84
根本的な勘違いをしているようなのでアドバイス
イテレータは抽象的な概念に過ぎないのでそこに遅延評価などという話は一切出てこない
イテレータの実装の一つに遅延評価の有無を持ち出すケースがあるようだがそんな特殊などうでもいい話をしても意味がない
87: 2024/03/23(土)22:36 ID:g/HfMmmn(9/9) AAS
>>86
そんなことは分かっている。>>72に言ってくれ。
88: 2024/03/23(土)22:43 ID:/PCiT6cf(2/2) AAS
>>72は正しいよ
89: 2024/03/23(土)22:56 ID:sCrZk0I5(1) AAS
iteratorは可算無限を扱える
mapは入力も出力もiterator
例えば
2倍にするというmapに対して
入力を自然数のiteratorとすると
出力は偶数の自然数のiteratorとなる
これだけの話だろ
省1
90: 2024/03/24(日)10:28 ID:8D2Drt3S(1) AAS
でもC言語は圏論じゃないよね
91: 2024/03/24(日)10:35 ID:GMGvnUD/(1/3) AAS
20年前の議論草
92: 2024/03/24(日)11:18 ID:dsXIuIWc(1) AAS
それは間違い
FORTRANが今もなお科学技術計算に使われてる
93: 2024/03/24(日)11:32 ID:GMGvnUD/(2/3) AAS
言葉のお遊びwww
94: 2024/03/24(日)11:34 ID:yjeBPx06(1) AAS
集合論はラッセルのパラドックスで矛盾した
だから集合と写像に基づくC言語やRubyは数学を扱うのに不適切
よってハスケルなどは圏論に基づくから関数型言語が正解
95(1): 2024/03/24(日)11:46 ID:BUlt442E(1/6) AAS
プログラム言語は機械語→アセンブラ→高級言語 と進化してきたが、高級言語にも高級度の段階があって
gotoジャンプ→構造化ループ→map→ベクトル演算 という序列になっている。
y = x.map(i => 2 * i) のように冗長な記述をしなければならない言語よりは、ベクトル演算で y = 2 * x と
すっきり書けるFortranの方が進化している。
96: 2024/03/24(日)14:10 ID:S5dROhf0(1) AAS
まったくトンチンカンな話してんな
プログラミング言語にmapがあったところでそれで数学ができるわけじゃないだろ
何を解きたいんだよ?
定理証明か?仕様記述か?
ド文系のふわっとした思考やめな
97(2): 2024/03/24(日)14:30 ID:rmOZT0bw(1) AAS
>>95
それはarrayを入出力とするmapだね
それは遅延評価もできず可算無限列を扱えない古い劣化タイプ
一方でiteratorを入出力とするmapはarrayだけでなく可算無限列など任意のものを対象にできる
98: 2024/03/24(日)14:58 ID:iK6Wk5rB(1) AAS
この完全なデタラメな話をここまで長々とする気力がどこから湧いてくるのかがわからない
99: 2024/03/24(日)15:27 ID:pjttU2nz(1) AAS
所有権を複製したいんやろw
100: 2024/03/24(日)15:28 ID:4Iqs5Xee(1) AAS
>>97
昔は配列に対するmapしか無かったから、遅延評価できず、有限列しか扱えず、中間生成配列のムダなど、悲惨だったな
今はイテレータに対してmapその他を適用するプログラミング言語が増えたので、扱える対象が広がるとともに、効率も良くなったな
101: 2024/03/24(日)16:53 ID:GMGvnUD/(3/3) AAS
そんな低レベルの話してるんとちゃうんやで
102: 2024/03/24(日)18:55 ID:qF9URZLj(1) AAS
そもそも高階関数のmapは、数学の集合論における写像のことではない
103: 2024/03/24(日)19:36 ID:WsANI0D/(1) AAS
ゴミみたいな話しかしてないな、定理証明系とかの話をしているのかと思ったら
104(2): 2024/03/24(日)20:58 ID:BUlt442E(2/6) AAS
AA省
105(1): 2024/03/24(日)20:59 ID:BUlt442E(3/6) AAS
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
省20
106: 2024/03/24(日)20:59 ID:BUlt442E(4/6) AAS
インタプリタのRubyや、配列っぽく見える[1, 2, 3]がリンクリストのHaskellが効率を
云々するのは馬鹿げているな。
107: 2024/03/24(日)21:02 ID:BUlt442E(5/6) AAS
>>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;
108(1): 2024/03/24(日)22:52 ID:IPqW9Eum(1) AAS
>>104
固定長の配列を入力に使っている時点で失格
このスレは>>1の例のように対象は可算無限列
109(2): 2024/03/24(日)23:00 ID:D7nIPk2H(1) AAS
静的な固定長で最適化できるのは当たり前だから
少なくとも実行時までわからない可変長じゃないとな
110: 2024/03/24(日)23:11 ID:BUlt442E(6/6) AAS
>>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; に変わるだけだぞ。
111: 2024/03/24(日)23:42 ID:+hE4ud6c(1) AAS
入力対象は>>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
112: 2024/03/25(月)06:31 ID:20JdvYau(1) AAS
写像型言語は無いから無理やろ
113: 2024/03/25(月)08:05 ID:S04445Yl(1) AAS
しょうもない算法や文法を力説されても
数理論理を知らん高卒なんやろか
114: 2024/03/25(月)09:05 ID:KQK4URb5(1) AAS
集合論はラッセルのパラドックスがあるからまちがい
選択公理もバナッハタルスキーのパラドックスがあるからまちがい
圏論こそ数学の基礎
115: 2024/03/25(月)09:20 ID:yJIwIJvC(1) AAS
そういう何が一番とか中二思考やめようや
116: 2024/03/25(月)09:20 ID:VkynB6Jg(1/4) AAS
アホ参上
117(1): 2024/03/25(月)10:25 ID:VsfGDznC(1) AAS
圏論型プログラミングってないの?
118: 2024/03/25(月)18:22 ID:OU4hWxvG(1/2) AAS
集合は悪くないがそれを内包表記で定義するのが悪い
イテレータを内包表記っぽく書けるやつは
内包表記を使わない書き方もできる保証があるから良いけど
119: 2024/03/25(月)19:35 ID:Yjyc3ZYI(1) AAS
Pythonには内包表記はあっても外延表記はないから集合論はできないよ
120: 2024/03/25(月)20:38 ID:0jQlcuCQ(1/2) AAS
>>104はVisual Studioでは最適化オプションがなぜか無視されてしまうが、コマンドライン
コンパイラではまさに>>109が言う要素数が固定かつ全要素がコンパイル時に計算可能という
特殊な場合に応じた最適化が施され、コンパイル時の計算結果を配列yに書き込むだけで
y = 2 * x を全く計算しないコードが生成されることが、アセンブリ出力から分かる。
IFORT (旧式Intel Fortran) では
mov eax, 3
(中略)
省13
121: 2024/03/25(月)20:38 ID:0jQlcuCQ(2/2) AAS
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;
省3
122: 2024/03/25(月)20:46 ID:trqJ9Q6W(1) AAS
rustのほうがスゲーからfortranは黙っとれ
上下前次1-新書関写板覧索設栞歴
あと 880 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.032s