コーディング

なぜループカウンタ変数のほとんどに “i”が使用されるのか?

More than 1 year has passed since last update.

索引であるインデックス(Index)の「i」でしょ?と思った方、それが正解だと思います。

確かに、i, j,など1文字変数をインデックス参照などに使われるループカウンタとして使う慣習は最初の高級言語であるFORTRANに由来します。

当時のFORTRANではデフォルトで変数の型宣言が不要あり、アルファベットI~Nの1文字の変数名が整数型、それ以外は実数型という言語仕様になっていました。
FORTRANはもともと理工系向きの言語として設計されており、数学の式の習慣に則って整数にI,J,Kが採用されていたとしても不思議ではありません。
現に数学の総和(シグマ)はiを添字として使ってますし(最近のΣの公式ではkが採用されてますね、iは虚数[imaginary number]と混同されるからかな)、デカルト座標にはI,J,Kが使われます。

FORTRANの作者であるBakusは、この命名規則については『Iから始まる6文字に決まったのは、みんな添え字にI、J、Kをつかっていたので、(L、M、Nを)気前よく増やした。』と言っています。また、I~NなのはI-Ntegerというアメリカンなシャレもあるかも知れません。

アルファベットの「I」は、Index,Iterator,Integerの頭文字ですから変数として使用するにも都合がいい。また、アルファベットの「I」の起源であるギリシア文字のイオタ(iota)は小さな変化の意味があり、カウンタとは小さな変化を起こしているともいえるでしょう。

ループカウンタ変数の名前に下手に悩むより慣習のまま「i」を使うのが悩まず楽でいいですよね。
あと、「j」と「k」をループカウンタ変数として使用するのは「i」の次の文字という自然な理由です。

参照:
Why do most of us use 'i' as a loop counter variable?
Why are variables “i” and “j” used for counters?
なぜ for 文に使うループ変数は i なのか?
ループ変数 i, j, k
C++0xの完全なドラフトが9月に出ること、および、Iotaについて
【数列】シグマ記号(Σ)は「和」を表す