[過去ログ] 「数学」をプログラミングするには (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
855: デフォルトの名無しさん [sage] 2025/01/16(木) 22:19:04.03 ID:FAOk1woG(2/2) AAS
研究者の名前がなかなか思い出せなかったがGriffinだな POPL 1990
856: デフォルトの名無しさん [sage] 2025/01/16(木) 22:28:22.29 ID:l7++KB1R(1) AAS
イマドキ型のない言語なんて、即席のスクリプトくらいにしか使わんでしょ
857
(1): デフォルトの名無しさん [sage] 2025/01/16(木) 22:31:22.46 ID:IceLMl7e(1/2) AAS
代数的データ型やパラメータ多相を使えばプログラムのかなり多くの性質をコンパイラが保証できるのに、わざわざ型検査なしで注意してコード書くとか馬鹿のすること
858: デフォルトの名無しさん [sage] 2025/01/16(木) 22:36:34.50 ID:IceLMl7e(2/2) AAS
人類未曾有のソフトウェアを書くならともかく、巷のプログラムの9割近くのコードはただデータを整形してマッピングしてるだけ
あとの一割は既存のライブラリの呼び出し
現代のプログラミング言語の型システムがあれば、IDEの入力補完に従ってるだけでバグの無いコードが書ける
画面にらみつけてロジック確認なんかしてんのはただのアホ
859: デフォルトの名無しさん [sage] 2025/01/16(木) 22:51:04.55 ID:fgdrajER(1) AAS
しかし、それができるなら動的型付けの言語でもエディタが構文から型推論すれば同じことができるのでは?
860: デフォルトの名無しさん [sage] 2025/01/16(木) 23:35:14.70 ID:N/7GMQUm(1) AAS
ところがどっこい
型注釈無しでは型推論ができない、あるいはエラーにすべきか型チェッカが判定できないケースが存在する

まず簡単なのは、ユニオン型だ
f:: () -> Int | Str
みたいな関数は注釈なしでは、ふたつの箇所で異なる型を返してるのが間違いなのかどうか型チェッカには判定できない

パラメータ多相を使う高階関数も型推論が困難だ
map :: (a -> b) -> [a] -> [b]
これがたとえば二カ所で
map :: (Str -> Int) -> [Str] -> [Int]
map :: (Str -> Str) -> [Str] -> [Str]
と使われていたら、型チェッカは
map :: (Str -> Int|Str) -> [Str] ->[Int]|[Str]
だと推論するかも知れない。もしそうなると、
map :: (Str -> Str) -> [Str] -> [Int]
という使われ方をしていても、チェックに通ってしまうことになる

リフレクションやメタプログラミングをしている場合も勿論、コードだけから型推論するのは困難だ

逆に言えば、このようなケースに適切に型注釈をつければ、その他の部分は推論できるようになるので、生産性が格段に上がる
861: デフォルトの名無しさん [sage] 2025/01/17(金) 04:10:24.01 ID:VwDpqJJw(1) AAS
なんかグダグダ言ってるけどそれ形式論理なしでできるよね
この話の発端は形式論理が役に立たないってことであって,型が役に立たないって話じゃないよ
862: デフォルトの名無しさん [sage] 2025/01/17(金) 06:49:41.95 ID:b1HMrou3(1) AAS
単純に、お前の話に誰も興味ないから話題が変わっただけでは
863: デフォルトの名無しさん [sage] 2025/01/17(金) 09:10:34.70 ID:qO2eRSGs(1) AAS
ocamlなんかは型推論の健全性と完全性を備えているから
どんな式でも型がつくし、型エラーがでなければ正しいプログラムになるというのが保証されてる
健全性と完全性をどちらか捨てるとしたら完全性なので、そういう言語は型注釈が必要になる
864: デフォルトの名無しさん [sage] 2025/01/17(金) 16:31:58.98 ID:tFlne/Xr(1) AAS
まぁ形式論理も時相論理もプログラミングには何の恩恵もないわな
865
(2): デフォルトの名無しさん [] 2025/01/17(金) 16:59:57.91 ID:GO6/DX25(1) AAS
CSは数学を一部利用するが
数学はCSなんて知らんがな状態
866
(1): デフォルトの名無しさん [sage] 2025/01/17(金) 18:01:24.36 ID:7aS9Z/2O(1) AAS
学問にコンプレックス持ってる人って、みっともないね。
867: デフォルトの名無しさん [sage] 2025/01/17(金) 20:14:27.37 ID:b0CV3tPB(1) AAS
>>857
パラメータ多相のジェネリックな型は特に制約を指定しなければ任意の型がOK何でもありだけど
何の型でもありということは使える範囲も極めて狭いというか
言語によってはprintすることすら任意の型が可能派と必ずしも可能とは限らない派もあり曖昧で
何らかの制約を指定しないと何の処理もできないためその型の値をそのまま返すことしかできなくなってしまう
つまりジェネリック型パラメータに対する制約記述がカギとなる
868
(2): デフォルトの名無しさん [sage] 2025/01/18(土) 08:09:37.99 ID:eX+b185R(1) AAS
>>866
多分コンプレックスとかじゃなくて無駄なものを持ち込まずにシンプルにしておきたいってだけじゃない
869
(1): デフォルトの名無しさん [sage] 2025/01/18(土) 08:45:22.05 ID:BE7PGd83(1) AAS
>>865 数学が専門の人がどんどんCSに入ってきて内容が高度化してるって聞いたぞ俺は
870: デフォルトの名無しさん [] 2025/01/18(土) 10:15:15.14 ID:ERaUWL8N(1) AAS
シンプレックスでコンプレックス
871
(1): デフォルトの名無しさん [] 2025/01/18(土) 11:19:59.28 ID:7Jaib8zo(1) AAS
なんでコンプレックスの話が出て来てるのかさっぱり判らん

>>869
それこそ >>865 の説を補強してるだけじゃないの
872: デフォルトの名無しさん [sage] 2025/01/18(土) 11:57:14.53 ID:xEXW43By(1) AAS
>>868
イミフ
873
(1): デフォルトの名無しさん [sage] 2025/01/18(土) 12:09:19.43 ID:pstj5VhN(1/2) AAS
>>868
数学やCSを持ち込んで対象が複雑になると思ってるのは、
自分が理解できないものにコンプレックス持ってるからだよ
理論を作って対象が複雑になることはあり得ない
874: デフォルトの名無しさん [sage] 2025/01/18(土) 12:14:10.21 ID:pstj5VhN(2/2) AAS
>>873
一筆書きして最初の場所に戻ってこられるか、は複雑な問題
グラフのすべての頂点から出ている辺の数が偶数、というのは単純な問題

グラフ理論を持ち込んで問題が複雑になったというのは、
頂点・辺・偶数・奇数などの概念が理解できないから
それは数学に対するコンプレックスにほかならない
875: デフォルトの名無しさん [sage] 2025/01/18(土) 12:39:38.25 ID:84F6tYk8(1) AAS
>>871 P=NP予想とかCSの問題も数学で扱われてるんだから知らんがな状態ではないと思う
876
(1): デフォルトの名無しさん [sage] 2025/01/18(土) 15:06:03.89 ID:2/LPmLwt(1) AAS
プログラミングに必要な数学は数値計算で使う数学くらいか?
微積と線形

圏論がプログラミングで無意味なのは誰でもわかるか
877: デフォルトの名無しさん [sage] 2025/01/18(土) 15:34:34.81 ID:28NAL8Fg(1) AAS
>>876
プログラミングと数学を分けてる時点で、Qiitaのブログのサンプルコピペしてる雑魚と同レベル
878: デフォルトの名無しさん [sage] 2025/01/18(土) 15:41:30.33 ID:Zj1ghav+(1) AAS
反論になってないなぁ
879: デフォルトの名無しさん [sage] 2025/01/18(土) 16:26:51.31 ID:xuSYONRy(1) AAS
プログラミングに数学はいくらでも使うことができる
プログラミングに使う数学とか言ってんのは、ただ単に自分が数学を学びたくないだけ
1-
あと 123 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.018s