146
77

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2015-08-09

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

確かに、i, j,など1文字変数をインデックス参照などに使われるループカウンタとして使う慣習は最初の高級言語であるFORTRANに由来します。
当時のFORTRANではデフォルトで変数の型宣言が不要であり、アルファベットI~Nの1文字目の変数名が整数型、それ以外は実数型という言語仕様になっていました。(変数名は6文字までOK)
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?]
(http://stackoverflow.com/questions/4137785/why-are-variables-i-and-j-used-for-counters)
[なぜ for 文に使うループ変数は i なのか?]
(http://blogs.wankuma.com/jitta/archive/2007/01/25/58555.aspx)
[ループ変数 i, j, k]
(http://togetter.com/li/138510)
[C++0xの完全なドラフトが9月に出ること、および、Iotaについて]
(http://cpplover.blogspot.jp/2008/07/c0x9iota.html)
[【数列】シグマ記号(Σ)は「和」を表す]
(http://oto-suu.seesaa.net/article/243869238.html)

146
77
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
146
77

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?