実務で見かけるループ処理
for(int i=0; i<100; i++) {
for(int j=0; j<100; i++) {
for(int k=0; k<100; k++) {
このようにバグを含みやすい変数名 i, j, k, l, m, n は、そもそも何故 i, j, k ... なのでしょうか。
という昔から気にはなっていたことを調べてみると、意外に単純でした。
結論:
プログラミング言語「FORTRAN」時代の整数を示す変数名からの名残
FORTRANでは、I, J, K, L, M, N から始まる文字であれば、その変数は整数に自動変換されるそうです。
では、なぜFORTRANの設計者は I から始まる文字を整数に選んだのか?
プログラミングが生まれる前の数学の世界では、
- 数列の添え字 (index) として i
- 行列の i 行 に対する j 列
のように、整数を扱う添え字に i や j を使うのが慣習でした。
FORTRANは、この数学の慣習を言語仕様に取り入れたという話がありまして、つまり「数学の慣習 → FORTRANの仕様 → 現代のプログラミング」という歴史的な流れがある、ということです。
現代では、無意味な変数名は避けて意味のある変数名を付けましょうという考え方がスタンダードです。
i と j のスペルミスは多くのエンジニアが通る道、というのは過去の話かもしれませんが、そんな罠にも歴史的な背景があったことを知ると、いつか誰かに伝えたくなりますね。
お読みいただき、ありがとうございました。

