Je sais que cela peut sembler une question absolument idiote à poser, mais je suis trop curieux pour ne pas la poser ...
Pourquoi "i" et "j" sont-ils devenus LES variables à utiliser comme compteurs dans la plupart des structures de contrôle?
Bien que le bon sens me dise qu'ils sont exactement comme X, qui est utilisé pour représenter des valeurs inconnues, je ne peux m'empêcher de penser qu'il doit y avoir une raison pour laquelle tout le monde est enseigné de la même manière encore et encore.
Est-ce parce qu'il est en fait recommandé pour les meilleures pratiques, ou pour une convention, ou y a-t-il une raison obscure derrière cela?
Juste au cas où, je sais que je peux leur donner le nom que je veux et que les noms de variables ne sont pas pertinents.
la source
Réponses:
Cela vient finalement des mathématiques: la notation de sommation utilise traditionnellement i pour le premier indice, j pour le second, et ainsi de suite. Exemple (à partir de http://en.wikipedia.org/wiki/Summation ):
Il est également utilisé de cette façon pour des collections de choses, comme si vous avez un tas de variables x 1 , x 2 , ... x n , alors une variable arbitraire sera connue sous le nom de x i .
Quant à savoir pourquoi c'est ainsi, j'imagine que SLaks est correct et c'est parce que je suis la première lettre de Index.
la source
i
utilisé en mathématiques?Je crois que cela remonte à Fortran. Les variables commençant par I à Q étaient des nombres entiers par défaut, les autres étaient réelles. Cela signifiait que
I
c'était la première variable entière, etJ
la seconde, etc., donc ils sont tombés vers l'utilisation dans les boucles.la source
I
parN
nonQ
. Google semble plutôt d'accord. (différentes versions de FORTRAN?)Les mathématiciens utilisaient i, j, k pour désigner des entiers en algèbre (indices, séries, sommations, etc.) bien avant (par exemple 1836 ou 1816 ) les ordinateurs (c'est à l'origine des valeurs par défaut du type de variable FORTRAN). L'habitude d'utiliser les lettres de la fin de l'alphabet (..., x, y, z) pour les variables inconnues et depuis le début (a, b, c ...) pour les constantes est généralement attribuée à René Descartes , (voir aussi ici ) donc je suppose que i, j, k ... n (au milieu de l'alphabet) pour les entiers est probablement dû à lui aussi.
la source
i = entier
Vient de Fortran où les variables entières devaient commencer par les lettres I à N et les variables réelles commençaient par les autres lettres. Ainsi, j'étais le premier et le plus court nom de variable entier. Fortran était l'un des premiers langages de programmation largement utilisés et les habitudes développées par les programmeurs qui l'utilisaient se sont reportées à d'autres langages.
EDIT : Je n'ai aucun problème avec la réponse que cela dérive des mathématiques. C'est sans doute là que les designers Fortran ont pu s'inspirer. Le fait est, pour moi en tout cas, quand j'ai commencé à programmer en Fortran, nous avons utilisé I, J, K, ... pour les compteurs de boucles car ils étaient courts et les premiers noms de variables légalement autorisés pour les entiers. En deuxième année à HS, j'avais probablement entendu parler de Descartes (et de très peu d'autres), mais je faisais très peu de liens avec les mathématiques lors de la programmation. En fait, le premier cours que j'ai suivi s'appelait "Fortran for Business" et n'était pas enseigné par la faculté de mathématiques, mais par la faculté de commerce / économie.
Pour moi, au moins, la dénomination des variables n'avait pas grand-chose à voir avec les mathématiques, mais tout était dû aux habitudes que j'avais prises pour écrire du code Fortran que je portais dans d'autres langues.
la source
i
signifie I ndex.j
vient aprèsi
.la source
Ces symboles étaient utilisés comme index matriciels en mathématiques bien avant l'invention des ordinateurs électroniques.
la source
Je pense qu'il est très probablement dérivé de l'index (au sens mathématique ) - il est couramment utilisé comme index dans les sommes ou d'autres opérations basées sur des ensembles, et a probablement été utilisé de cette façon depuis avant qu'il y ait des langages de programmation.
la source
Y = Σ Xi
précède chaque langage de programmation.i
. Mais à l'origine je l'utilise principalement parce que tout le code que je regarde ailleurs l'utilise, et cela peut être hérité des programmeurs Fortran ...Il existe une préférence en mathématiques pour l'utilisation de lettres consécutives dans l'alphabet pour les variables «anonymes» utilisées de manière similaire. Par conséquent, pas seulement "i, j, k", mais aussi "f, g, h", "p, q, r", "x, y, z" (rarement avec "u, v, w" en préfixe), et "α, β, γ".
Or "f, g, h" et "x, y, z" ne sont pas utilisés librement: le premier est pour les fonctions, le second pour les dimensions. "p, q, r" sont également souvent utilisés pour les fonctions.
Ensuite, il y a d'autres contraintes sur les séquences disponibles: "l" et "o" sont évités, car ils ressemblent trop à "1" et "0" dans de nombreuses polices. "t" est souvent utilisé pour le temps, "d & δ" pour les différentiels et "a, s, m, v" pour les mesures physiques de l'accélération, du déplacement, de la masse et de la vitesse. Cela ne laisse pas autant de lacunes de trois lettres consécutives sans associations indésirables en mathématiques pour les indices.
Ensuite, comme plusieurs autres l'ont remarqué, les conventions mathématiques ont eu une forte influence sur les conventions de programmation précoces, et «α, β, γ» n'étaient pas disponibles dans de nombreux jeux de caractères anciens.
la source
a, b, c
est une séquence assez couramment utilisée malgréa
avoir plusieurs significations ...J'ai trouvé une autre réponse possible qui pourrait être que i, j et k viennent
Hamilton's Quaternions
.Euler a choisi i pour l'unité imaginaire.
Hamilton avait besoin de deux autres racines carrées de -1:
ii = jj = kk = ijk = -1
Hamilton était vraiment influent, et les quaternions étaient le moyen standard de faire une analyse 3D avant 1900. À l'époque, les mathématiciens avaient l'habitude de penser à (ijk) comme un ensemble apparié. Le calcul vectoriel a remplacé l'analyse quaternionique dans les années 1890 car c'était une meilleure façon d'écrire les équations de Maxwell. Mais les gens avaient tendance à écrire les quantités vectorielles comme ceci:
(3i-2j+k)
au lieu de(3,-2,1)
. Donc (ijk) est devenu le vecteur de base standard dans R ^ 3.Enfin, les physiciens ont commencé à utiliser la théorie des groupes pour décrire les symétries dans les systèmes d'équations différentielles. Donc (ijk) a commencé à connoter "des vecteurs qui sont permutés par des groupes de permutation", puis a dérivé vers "des éléments de type index qui prennent toutes les valeurs possibles dans un ensemble spécifié", ce qui est fondamentalement ce qu'ils signifient dans une boucle for.
la source
en rejetant (un peu biaisé)
la source
number
, généralement le nombre d'éléments dans un ensemble.Un après-midi ensoleillé, Archimède réfléchit ( comme d'habitude pour les après-midi ensoleillés ) et se heurte à son copain Eratosthène.
Archimède a dit: "Archimède à Eratosthène saluant! J'essaie de trouver une solution au rapport de plusieurs corps rigides sphériques en équilibre. Je souhaite parcourir ces corps plusieurs fois, mais je passe un temps affreux à suivre du nombre d'itérations que j'ai effectuées! "
Ératosthène a dit: "Pourquoi Archimède, prune mûre d'un gamin, vous pourriez simplement marquer des rangées successives de lignes dans le sable, chacune gardant une trace du nombre d'itérations que vous avez faites dans l'itération!"
Archimède a crié au monde que son grand ami était indéniablement un phare d'intelligence pour avoir trouvé une solution aussi simple. Mais Archimède a remarqué qu'il aimait marcher en rond autour de son bac à sable pendant qu'il réfléchissait. Ainsi, il y avait un risque de perdre la trace de quelle ligne était en haut et laquelle était en bas.
"Peut-être que je devrais marquer ces lignes avec une lettre de l'alphabet juste à côté pour que je sache toujours quelle ligne est laquelle! Que pensez-vous de cela?" il a demandé, puis a ajouté, "Mais Eratosthène ... quelles lettres dois-je utiliser?"
Ératosthène était sûr de ne pas savoir quelles lettres seraient les meilleures et il en dit autant à Archimède. Mais Archimède n'était pas satisfait et continuait d'inciter le pauvre bibliothécaire à choisir, au moins, les deux lettres dont il aurait besoin pour sa solution actuelle d'équilibre de sphère.
Ératosthène, enfin fatigué de la demande incessante de deux lettres, a crié: "JE NE SAIS PAS !!!"
Archimède a donc choisi les deux premières lettres de la phrase exclamative d'Ératosthène et a remercié son ami pour sa contribution.
Ces symboles ont été rapidement adoptés par les anciens développeurs grecs de Java, et le reste est, eh bien ... de l'histoire.
la source
j
.je pense que c'est parce que beaucoup de boucles utilisent une variable de type Int pour faire le comptage, comme
et quand vous tapez, vous le dites dans votre tête (comme lorsque vous lisez), donc dans votre esprit, vous dites «int ...»
et quand vous devez composer une lettre juste après ce 'int ....', vous dites / tapez le 'i' parce que c'est la première lettre à laquelle vous pensez quand vous venez de dire 'int'
comme si vous épelez un mot à des enfants qui commencent à apprendre à lire, vous épelez des mots pour eux en utilisant des noms, comme ceci:
WORD épelle William W, Ok O, Ruby R, Done D
Vous dites donc Int I, Double d, Float f, string s etc. en fonction de la première lettre.
Et j est utilisé parce que lorsque vous avez fait int I, J suit juste après.
la source
i
est antérieure à cette syntaxe.Je pense que c'est une combinaison des autres raisons mentionnées:
Pour commencer, `` i '' était couramment utilisé par les mathématiciens dans leur notation, et aux débuts de l'informatique avec des langages qui n'étaient pas binaires (c'est-à-dire qu'ils devaient être analysés et lexisés d'une certaine manière), la grande majorité des utilisateurs d'ordinateurs étaient aussi des mathématiciens (... et des scientifiques et des ingénieurs), donc la notation est tombée en usage dans les langages informatiques pour la programmation de boucles, et est restée en quelque sorte bloquée depuis.
Combinez cela avec le fait que l'espace d'écran à ces tout premiers jours était très limité, tout comme la mémoire, il était logique de conserver des noms de variables plus courts.
la source
Peut-être historique?
FORTRAN, probablement le premier langage de haut niveau, défini par défaut i, j, k, l, m comme des types de données Integer, et les boucles ne peuvent être contrôlées que par une variable entière, la convention continue?
par exemple:
faire 100 i = j, 100,5 .... 100 continuer ....
la source
i = itérateur, i = index, i = entier
Quelque soit votre chiffre "i" signifie qu'il "correspond toujours à la facture".
De plus, à moins que vous n'ayez qu'une seule ligne de code dans cette boucle, vous devriez probablement nommer la variable itérateur / index / entier à quelque chose de plus significatif. Comme: employeeIndex
BTW, j'utilise habituellement "i" dans mes boucles d'itérateur simples; à moins bien sûr qu'il ne contienne plusieurs lignes de code.
la source
i = iota, j = jot; les deux petits changements.
iota est la plus petite lettre de l'alphabet grec; dans la langue anglaise, sa signification est liée à de petits changements, comme dans "pas un iota" (d'une phrase du Nouveau Testament: "jusqu'à ce que le ciel et la terre passent, pas un iota, pas un point, ne passera de la loi" (Mt 5, 18)).
Un compteur représente un petit changement dans une valeur.
Et d'iota vient jot (iot), qui est aussi synonyme d'un petit changement.
cf. http://en.wikipedia.org/wiki/Iota
la source
Eh bien des mathématiques: (pour les lettres latines)
a, b: utilisé comme constantes ou comme nombres entiers pour un nombre rationnel
c: une constante
d: dérivée
e: nombre d'Euler
f, g, h: les fonctions
i, j, k: sont des indices (également des vecteurs unitaires et les quaternions)
l: généralement pas utilisé. ressemble à 1
m, n: sont des lignes et des colonnes de matrices ou comme des entiers pour les nombres rationnels
o: également non utilisé (sauf si vous êtes en petite notation o)
p, q: souvent utilisé comme nombres premiers
r: parfois un changement spatial de variable d'autres instants liés aux nombres premiers
s, t: variables spatiales et temporelles ou s est utilisé comme changement de variable pour t
u, v, w: changement de variable
x, y, z: variables
la source
De nombreuses raisons principales possibles, je suppose:
i
etj
pour les Nombres Naturels dans les formules (ceux qui utilisent rarement les Nombres Complexes , du moins), donc cela est reporté à la programmationi
indices àint
. Et si vous avez besoin une autreint
puisi2
est juste trop long, donc vous décidez d'utiliserj
.i
est uninteger
.la source
Il vient de Fortran, où i, j, k, l, m, n sont implicitement des entiers.
la source
Cela vient certainement des mathématiques, qui ont longtemps précédé la programmation informatique.
Alors, d'où venait-elle en mathématiques? Ma supposition totalement ignorée est que c'est comme l'a dit un collègue, les mathématiciens aiment utiliser des groupes alphabétiques pour des choses similaires - f, g, h pour les fonctions; x, y, z pour les variables numériques; p, q, r pour les variables logiques; u, v, w pour les autres ensembles de variables, en particulier en calcul; a, b, c pour beaucoup de choses. i, j, k est pratique pour les variables itératives, et cela épuise les possibilités. Pourquoi pas m, n? Eh bien, ils sont utilisés pour les entiers, mais plus souvent les points de fin des itérations plutôt que les variables itératives elles-mêmes.
Quelqu'un devrait demander à un historien des mathématiques.
la source
Les compteurs sont si courants dans les programmes, et dans les premiers jours de l'informatique, tout était à une prime ... Les
programmeurs ont naturellement essayé de conserver les pixels, et le «i» nécessitait moins de pixels que toute autre lettre pour représenter. (Les mathématiciens, étant paresseux, l'ont choisi pour la même raison - comme le plus petit glyphe).
Comme indiqué précédemment, 'j' a suivi naturellement ...
:)
la source
Je l'utilise pour plusieurs raisons.
Habituellement, mes boucles sont basées sur des int, donc vous faites un triangle complet sur le clavier en tapant "int i" à l'exception de l'espace que je gère avec mon pouce. C'est une séquence très rapide à taper.
Le "i" pourrait représenter un itérateur, un entier, un incrément ou un index, chacun ayant un sens logique.
Avec mes utilisations personnelles mises de côté, la théorie selon laquelle il est dérivé de FORTRAN est correcte, où les vars entiers utilisaient les lettres I - N.
la source
J'ai appris FORTRAN sur un Control Data Corp. 3100 en 1965. Les variables commençant par «I» à «N» étaient implicitement des nombres entiers. Ex: «IGGY» et «NORB» étaient des entiers, «XMAX» et «ALPHA» étaient des nombres à virgule flottante. Cependant, vous pouvez remplacer cela par une déclaration explicite.
la source