プログラミングの概念名に数学用語つけるのは怖くない?
数学の概念をもとに何かを実装するのは面白い
しかし、それの名前に数学の用語をつけるのはおかしい
「プログラム上の表現Aに、数学の概念Bがあてはまる、見いだせる」
というふうに書けばいいのであって、そのままBという名前を表現の名前につけるな
モナドとか
どっかの記事にあったが、Haskell側のモナドの解説として、
単なる型クラスにすぎないということを強調したものがあった
しかし、モナドのことを考えながら実装したものにモナド意外の名前をつけるのは大変だろうな、とは思う
以前はそう考えていたが、最近圏論を学び始めているが、クラスという分類は集合を超えたものなので確かになんでもありなんだよな
よくわからなくなってきた
F#の場合はHaskellのmonadic syntaxに相当するものがcomputation expresssionsなんですが、F#の言語設計者がHaskellの言語設計者に相談した際に「モナド」という表現はいくつかの理由で避けた方が良いかも…というアドバイスを受け、computation expression及びworkflowという表現になったそうです。😇
Haskellの言語設計者も、モナドという表現は避けるべきだったということか?
代数"的”であるぶんまだましだが
これはただ単にAlgebraic data typeの直訳だけど
elmだとcustom typeという。これはえらい
「custom typeは代数的な概念が見いだせる」というふうに、ちゃんと名前を分離しておくべき
既存の型を組み合わせたりして複雑な型を作るので、「カスタム」というのは意味としてマッチしている
いやでも直積と直和はまさにそうだしという気持ちもある
ここの命名をサボるから、普通に調べたとき、プログラマが知る必要のない概念を知らされる
検索もしづらい
haskellのモナドとか、しんどすぎる
プログラム上の表現に数学の用語の名前を一致させるのは、
たとえはint型は、自然数や整数を表すのか?
メモリは有限なので、厳密に言えばすぐに破綻する
無限集合族の直積とか、どう考えますか?
無理にそういうことをしないでいいとおもう
コントローラに
code:php
function getHoge() {
}
function postHoge() {
}
みたいな名前をつけるのはバッドパターンだ。
コントローラ側から、どういうルーティングをしたかがすぐに分かって良さそうだが、それは違う
関数の名前は、
外側の意味をつけるのではなく
showRegisterForm
confirmUserInput
などと書くべき。
関連してそう
同様に、プログラミング言語の何らかの概念を、新しく名前をちゃんとつける
数学のなにかに寄せて同じ名前をつけないほうが良い
わけがわからなくなる
命名した後に、マッピングする
プログラミング言語の中の概念Aは、数学のこの概念Bと対応するね、と言ったほうが良い
ただ、触ったこと無いけどpurescriptとかはかなりきれいに対応させてるらしいので、
納得感が感じられるくらいうまく当てはまってるなら、いい感じに思えるのかも