プログラミングでの『1文字変数は悪』との考え方が、なぜ数学・物理の数式での1文字変数ルールに影響を与えないのか

『「プログラミングで用いる変数」の名付け方では1文字変数は悪とされているのに、なぜそれが「数学/物理の変数」の1文字変数方式に影響を与えたり変えていったりしないのか』に関しての、私@payashim@_kohtaさんによる議論です。
2
Masaki Hayashi @payashim

数理系や物理情報系の出身者が「このプログラム変数名がaとかfとかありえないでしょ」と言ってるときには、「お前の論文の数式だって全部変数はaとかfだろ」とツッコミを入れることが可能ですね。

2012-03-02 20:41:22
Masaki Hayashi @payashim

そもそもプログラミングでの変数名を見ただけで何の変数名なのかわかる変数名の付け方が、数式の変数名の付け方に一向にフィードバックされないのはなぜなんだろう。

2012-03-02 20:45:27
Kohta Ishikawa @_kohta

@payashim 物理は1文字の変数名にかなり明確な意味づけがされてて共有されてますね。分野(電磁気学とか量子力学とか)が決まれば1文字変数はほぼ一意に意味が決まります。そのルールを逸脱する(例えば磁場をAとか書く。Aは通常ベクトルポテンシャルです)とまず読んで貰えないです。

2012-03-02 20:45:45
Masaki Hayashi @payashim

@_kohta 物理だと一位性が出るのはそれが統計力学の確率理論などに突入してもそうで、例えばP(x)のxは見てすぐにランダム変数とわかるんですけど、統一されてるからといって知らないと何の変数かピンとこないというのは本末転倒だと思うんです。

2012-03-02 20:50:36
Masaki Hayashi @payashim

@_kohta プログラミングしない理論専門の人には変数名のルールを変えると逆に混乱させるだけなので、フィードバックがかからないという話だとは思いますが。

2012-03-02 20:52:07
Kohta Ishikawa @_kohta

@payashim そこは、知らない人に理解して貰うのは諦めて簡潔さをとっていることになります。変数名のルールは世界共通で100個くらい覚えれば済むので…。2文字以上だと積と混同するのでNGですね。xは割と汎用的なイメージの文字ですが、意味としては位置とか座標になります。

2012-03-02 20:56:06
Masaki Hayashi @payashim

@_kohta となると1変数で不定性が生まれるのはむしろコンピュータサイエンスの人がそのルールをよく知らないまま数式の変数を定義してしまうとこにあるかもです。特にベクトルや行列で物理にそれに相当するものがないときに、それらを全部AとかXと定義してしまって混乱してるので。

2012-03-02 21:01:42
Masaki Hayashi @payashim

@_kohta ちなみに私の問題意識は、例えば繰り返しアルゴリズムでの繰り返し回数(Layer)のように、物理に決まった変数名が無い用語を数式に変数として書くときにさえも、一文字で変数を書くしきたりが数式にはあるのでLとしか書きようがなくて、Layerとは書けないという話でした。

2012-03-02 21:11:32
Kohta Ishikawa @_kohta

@payashim なるほど。僕の感覚では、「回数」を表現する変数は使いたい順にi,j,k,l、又はm,nですね。i,j,k,lは「インデックス」の意味合いが強くて、m,nは「個数」の意味合いが強いイメージです。

2012-03-02 21:15:21
Masaki Hayashi @payashim

@_kohta いまのこれは数式の話ですか?

2012-03-02 21:19:45
Kohta Ishikawa @_kohta

@payashim そうですね。プログラミングでもi,jとかを使うことが多いのは、数式のルールの方から輸入されたからだと思います。

2012-03-02 21:21:02
Masaki Hayashi @payashim

@_kohta 数学や物理に乗っ取るとfor文は決まってi,jでまわしたくなりますよね。私は何のインデックスかわかりにくくなるのでなるべくxxx_indexと、どの配列変数であるかを変数名で明示してコードを書く派です。nもnumOfxxxとします。で、これを数式にも書きたいなと。

2012-03-02 21:22:14
Kohta Ishikawa @_kohta

@payashim なるほど。僕はループ変数は1文字で書いてしまう派ですね。数式だとループは局所的になるので、混同は起こらないんですよね…。テンソル解析とかだと大量に添字が出てきますが、共変・反変テンソルだとかで添字の書き方で工夫したり、縮約記法のような簡略化をしたりします。

2012-03-02 21:27:25
Masaki Hayashi @payashim

@_kohta 共変・反変テンソルの双対ってまだプログラミング言語で書く機会ある人ほぼ居ないので書き方確立されてないですよね。3DMesh処理での微分幾何とか(更にはまだ一般的ではないですが微分形式)あたりをプログラミングするときも双対な変数命名の出番があるかもです。

2012-03-02 21:37:16
Kohta Ishikawa @_kohta

@payashim 確かにあのへんのプログラムを綺麗に書くのは至難の業な気がしますね…。

2012-03-02 21:44:34