Pourquoi sont des variables “i” et “j” utilisé pour les comptoirs?
Je sais que cela peut sembler un absolument idiot de se poser la question, mais je suis trop curieux pour ne pas demander...
Pourquoi "i" et "j" deviennent LES variables à utiliser comme des pions dans la plupart des structures de contrôle?
Si le bon sens me dit qu'ils sont juste comme X, qui est utilisé pour représenter les valeurs inconnues, je ne peux m'empêcher de penser qu'il doit y avoir une raison pourquoi tout le monde obtient enseigné de la même manière, encore et encore.
Est-ce parce qu'il est effectivement recommandé pour les meilleures pratiques, ou d'une convention, ou faut-il avoir quelque obscure raison derrière elle?
Juste au cas où, je sais que je peux leur donner quel que soit le nom que je veux et que des noms de variables ne sont pas pertinents.
- i=itération alors que j=après interaction
- étrange " c " n'a pas été choisie? comme dans le Intel cx registre de compteur.
- J'ai vu n beaucoup debout pour le nombre. parfois je vois des z. je ne vois pas j autant que je vois n et z.
- Est-ce la seule DONC, la question sans un seul chiffre de la cotation des réponses?
- coordonnées Cartésiennes
- pas plus
- question intéressante, jamais pensé à ça..
- j'ai toujours pensé plus tard a séparer comme "i = integer", mais dès que vous avez au moins 3 boucles que vous devez utiliser votre imagination si i, j, e, n, etc... 😉
- Je N, comme sur ZX Spectrum, il était normal de pres N deux fois et d'obtenir les n PROCHAINES 🙂 - il coincé et il ne va pas loin.
- En aparté, j'ai tendance à utiliser xi et xj comme je l'ai éviter une lettre des noms de variables - ils sont difficiles à rechercher dans votre code.
- En fait,
i
etj
est antérieure à Intel d'être impliqué dans l'informatique. En outre,cx
est une toute nouvelle chose, dans mon temps il y avaitah
,bc
etde
que les registres généraux. Puis il y avaitf
pour les drapeaux et...i
pour l'indice! 🙂 Toutes basées sur l'indice de la fpo utiliséi
. - Le
j
partie devrait être évident. - Pourquoi faire de réelles questions à devenir des wikis juste parce qu'ils sont populaires? C'est très réminiscent du communisme. Si quelqu'un invente quelque chose de vraiment cool, le gouvernement vole l'invention de partager avec la communauté.
- Fermé le mauvais sens: les réponses ici sont plus informatifs que les autres qn...
- Peut-être que la question devrait être fermé et fusionné avec celui-ci. Le libellé de la question est également très important. Pour une raison que dans 29 jours, il a obtenu 44k vues en comparaison à 2k en 1 an.
- Je pense que quelqu'un se sentait désolé pour la lettre j. Vivant dans l'ombre de son " bien utilisé et complexe voisin i il n'a jamais reçu la moindre attention.
- Wtf? les entiers SONT réels.
Vous devez vous connecter pour publier un commentaire.
Il s'agit en définitive de mathématiques: la somme de la notation utilise traditionnellement je pour le premier indice, j pour la deuxième, et ainsi de suite. Exemple (à partir de http://en.wikipedia.org/wiki/Summation):
Il est également utilisé de cette façon pour les collections de choses, comme si vous avez un tas de variables x1, x2, ... xn, puis arbitraire seront connus en tant que xi.
Quant à savoir pourquoi c'est de cette façon, j'imagine SLaks est correct et c'est parce que j'ai est la première lettre en Indice.
i
utilisé dans les mathématiques?&squiggle;
pour xi et&othersquiggle;
zeta. C'est ce que nous a appelés.◁
pour "sous-groupe normal" ou∧
pour "et" venir de l'.i
etj
la liste, malheureusement.∧
(Heyting ca 1930).Je crois que ça remonte à Fortran. Les Variables commençant par I à Q ont été entier par défaut, les autres étaient réels. Cela signifie que
I
a été la première variable de type entier, etJ
la deuxième, etc., donc, ils sont tombés en matière d'usage dans les boucles.I
parN
pasQ
. Google semble plutôt d'accord. (les différentes versions de FORTRAN?)Mathématiciens ont été à l'aide de i,j,k pour désigner des nombres entiers dans l'algèbre (indices, des séries, des débats etc) depuis longtemps (e.g Mille huit cent trente six ou Mille huit cent seize), les ordinateurs ont été autour (c'est l'origine de l'FORTRAN type de variable par défaut). L'habitude d'utiliser des 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é à René Descartes, (voir aussi ici) donc je suppose que i,j,k...n (dans le milieu de l'alphabet) pour les entiers est probablement due à la lui aussi.
i = integer
Vient de Fortran où des variables de type entier avait à commencer par les lettres I à N et variables réelles commencé avec les autres lettres. Donc j'ai été le premier et le plus court integer nom de la variable. Fortran a été l'un des premiers langages de programmation, l'utilisation répandue et les habitudes acquises par les programmeurs de l'utiliser à d'autres langues.
MODIFIER: je n'ai pas de problème avec la réponse qu'elle dérive de mathématiques. Sans doute c'est là que le Fortran concepteurs ont obtenu leur inspiration. 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 parce qu'ils étaient à court et à la première légalement autorisé les noms de variables pour les entiers. Comme un étudiant en deuxième année dans H. S. j'avais sans doute entendu parler de Descartes (et quelques autres), mais fait très peu de liens avec les mathématiques lors de la programmation. En fait, le premier cours que j'ai pris a été appelé "le Fortran pour les Entreprises" et a été enseigné non pas par les mathématiques de la faculté, mais l'entreprise/econ faculté.
Pour moi, au moins, le nommage des variables a peu à voir avec les mathématiques, mais tout en raison aux habitudes, j'ai pris l'écriture de code Fortran que j'ai porté dans d'autres langues.
i
est synonyme de Index.j
vient aprèsi
.Ces symboles ont été utilisés comme matrice d'index dans les mathématiques longtemps avant électroniques, les ordinateurs ont été inventés.
Je pense que c'est probablement dérivée à partir de l'index (dans le sens mathématique) - il est couramment utilisé comme un index des sommes ou d'autres opérations à base d'ensemble, et le plus probable a été utilisé de cette façon, car avant il y avait des langages de programmation.
Y = Σ Xi
précède chaque langage de programmation.i
. Mais à l'origine je l'utilise principalement parce que tout le code, je regarde ailleurs l'utiliser, et que peut-être hérité de programmeurs Fortran...Il y a une préférence pour les mathématiques pour l'utilisation consécutive de lettres dans l'alphabet pour les "anonymes", les variables utilisées de façon similaire. Par conséquent, non seulement les "i, j, k", mais aussi "f, g, h", ", p, q, r", "x, y, z" (rarement avec "u, v, w" ajouté), et de "α, β, γ".
Maintenant "f, g, h" et "x, y, z" ne sont pas librement utilisées: la première est pour les fonctions, le dernier pour les dimensions. ", p, q, r" sont aussi souvent utilisés pour les fonctions.
Puis il y a d'autres contraintes sur les séquences disponibles: "l" et "o" sont à éviter, parce qu'ils ressemblent trop à des "1" et "0" dans de nombreuses polices. "t" est souvent utilisé pour le temps, "d & δ" pour les différentiels, et "une, s, m, v" pour les mesures physiques de l'accélération, le déplacement, la masse et la vitesse. Qui ne laisse pas de nombreuses lacunes de trois lettres consécutives sans indésirables associations en mathématiques pour les indices.
Puis, comme plusieurs autres l'ont remarqué, les conventions de mathématiques a eu une forte influence sur le début de conventions de programmation, et de "α, β, γ" n'étaient pas disponibles dans de nombreux premiers jeux de caractères.
a, b, c
est assez couramment utilisé séquence malgréa
avoir plusieurs significations...J'ai trouvé une autre réponse possible qui pourrait être que i, j et k viennent de
Hamilton's Quaternions
.Euler j'ai choisi pour l'imaginaire de l'unité.
Hamilton avait besoin de plus de deux racines carrées de -1:
ii = jj = kk = ijk = -1
Hamilton était vraiment très influent, et les quaternions ont été la norme de façon à faire l'analyse en 3D avant 1900. D'ici là, les mathématiciens ont l'habitude de penser de (ijk) comme un ensemble.
Calcul vectoriel remplacé quaternionic analyse dans les années 1890, parce que c'était un meilleure façon d'écrire les équations de Maxwell. Mais les gens avaient tendance à écrire des quantités vectorielles comme ceci:
(3i-2j+k)
au lieu de(3,-2,1)
. Donc (ijk) est devenu le standard de base de vecteurs dans R^3.Enfin, les physiciens ont commencé à l'aide de la théorie des groupes pour décrire les symétries dans les systèmes d'équations différentielles. Donc (ijk) ont commencé à signifier "vecteurs obtenir échangé autour de par permutation des groupes," a ensuite dérivé vers "index-comme des choses qui prennent toutes les valeurs possibles dans certains jeu spécifié," qui est en gros ce qu'ils signifient dans une boucle for.
en laissant de coté (un peu biaisé)
number
, généralement, le nombre d'éléments dans un ensemble.Un après-midi ensoleillé, d'Archimède à quoi méditer (comme on a l'habitude de l'après-midi ensoleillés) et courut à son copain Eratosthène.
Archimède a dit, "Archimède à Eratosthène de voeux! J'essaie de trouver une solution pour le ratio de plusieurs sphérique rigide corps en équilibre. Je souhaite effectuer une itération sur ces corps plusieurs fois, mais je vais avoir un effroyable temps de garder une trace de combien d'itérations je l'ai fait!"
Eratosthène a dit, "Pourquoi Archimède, vous de prune mûre d'une kidder, vous pouvez simplement marquer les lignes successives de lignes dans le sable, chacun de conserver une trace du nombre d'itérations de la boucle que vous avez fait au sein de l'itération!"
Archimède crié au monde entier que son ami était indéniablement un phare lumineux de l'intelligence de venir avec une solution aussi simple. Mais Archimède a fait remarquer qu'il aime à marcher en rond autour de son bac à sable, alors qu'il médite. Ainsi, il y a des risques de perdre la trace de la ligne qui était sur le dessus, et qui était sur le fond.
"Peut-être que je devrais marquer ces lignes avec une lettre de l'alphabet, juste sur le côté de sorte que je ne sais toujours la ligne qui est qui! Que pensez-vous de cela?" il a demandé, puis il a ajouté: "Mais Eratosthène... que ce soit des lettres doit-je utiliser?"
Eratosthène était sûr qu'il ne savait pas laquelle des lettres serait le meilleur, et a dit beaucoup de choses à Archimède. Mais Archimède n'était pas satisfait et continué d'inciter les pauvres bibliothécaire de choisir, au moins, les deux lettres qu'il aurait besoin pour son actuelle de la sphère de l'équilibre de la solution.
Eratosthène, enfin fatigué de l'incessante demande de deux lettres, a crié, "je NE SAIS PAS!!!"
Donc Archimède a choisi les deux premières lettres de Eratosthène' exclamatif phrase, et a remercié son ami pour la contribution.
Ces symboles ont été rapidement adopté par les anciens grecs développeurs Java, et le reste est bien... l'histoire.
j
.je pense que c'est parce que beaucoup de boucles d'utiliser une variable de type Int pour faire le comptage, comme
et lorsque vous tapez, vous parlez dans votre tête (comme quand vous lisez), donc, dans votre esprit, vous dites " int....'
et lorsque vous devez faire une lettre juste après que " int....' vous dites /type du " je " parce que c'est la première lettre que vous pensez quand vous venez de dire 'int'
comme vous l'épeler un mot pour les enfants qui commencent l'apprentissage de la lecture, vous épeler des mots pour eux à l'aide des noms, comme ceci:
Sorts MOT de William W, Ok O, Ruby R, Fait D
Vous dites Int I, Double d, Float f, string s, etc. basée sur la première lettre.
Et j est utilisé parce que quand vous avez fait int I, J suit juste après.
i
est antérieure à cette syntaxe.Je pense que c'est une combinaison d'autres raisons :
Pour commencer, " je " était couramment utilisé par les mathématiciens dans leur notation, et dans les premiers jours de l'informatique avec les langues qui n'étaient pas binaire (c'est à dire devait être analysé et lexed d'une certaine manière), la grande majorité des utilisateurs d'ordinateurs ont également été mathématiciens (... et les scientifiques et ingénieurs) de sorte que la notation est tombé dans l'utilisation de langages pour la programmation des boucles, et a juste coincé autour depuis.
Combinez cela avec le fait que l'espace à l'écran dans ces premiers jours a été très limité, ainsi que de la mémoire, il est logique de garder plus courte de noms de variables.
Éventuellement historiques ?
FORTRAN, aurguably le premier langage de haut niveau, défini i,j,k,l,m as Integer types de données par défaut, et les boucles ne pouvait être contrôlé par la variable de type entier, la convention continue ?
par exemple:
faire 100 i= j,100,5
....
100 continuer
....
i = iterator i = index, i = integer
Qui jamais vous à la figure "i" signifie qu'il reste "s'inscrit le projet de loi".
Aussi, sauf si vous avez une seule ligne de code à l'intérieur de cette boucle, vous devriez probablement être de nommage de l'itérateur/index/variable de type entier à quelque chose de plus significatif. Comme: employeeIndex
BTW, je l'habitude d'utiliser le "je" dans mon simple itérateur boucles; sauf si bien sûr il contient plusieurs lignes de code.
i = iota, j = iota; les deux petits changements.
iota est la plus petite lettre de l'alphabet grec; dans la langue anglaise, c'est le sens est lié à de petits changements, comme dans "pas d'un iota" (à partir d'une phrase dans le Nouveau Testament: "tant que le ciel et la terre passent, pas une lettre, pas un point, ne passera de la Loi" (Mt 5:18)).
Un compteur représente un petit changement dans une valeur.
Et de iota vient iota (ido), qui est aussi un synonyme pour un petit changement.
cf. http://en.wikipedia.org/wiki/Iota
Bien de Mathématiques: (pour les lettres latines)
a,b: utilisés comme des constantes ou des entiers pour un nombre rationnel
c: une constante
d: dérivé
e: le nombre d'Euler
f,g,h: fonctions
i,j,k: sont des indices (également vecteurs unitaires et les quaternions)
l: ne sont généralement pas utilisés. ressemble 1
m,n: sont des lignes et des colonnes des matrices ou des entiers pour les nombres rationnels
o: pas aussi utilisé (sauf si vous êtes en petit o notation)
p,q: souvent utilisé comme amorce
r: parfois, un espace, changement de variable, d'autres fois liées aux nombres premiers
s,t: spatiale et temporelle des variables ou s est utilisé comme un changement de variable pour t
u,v,w: changement de variable
x,y,z): les variables
De nombreuses raisons, je suppose:
i
etj
pour Nombres Naturels dans les formules (ceux qui utilisent Nombres Complexes rarement, au moins), donc cette reporté à la programmationi
conseils pourint
. Et si vous avez besoin d'un autreint
puisi2
est juste trop long, donc vous décidez d'utiliserj
.i
est alors uninteger
.Il s'agit de Fortran, où i,j,k,l,m,n sont implicitement entiers.
Il vient définitivement de mathématiques, qui a longtemps précédé la programmation informatique.
Alors, où avez-si, dans les mathématiques? Ma complètement inculte pense que c'est comme un boursier dit, les mathématiciens aiment utiliser alphabétique des clusters 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 dans le calcul; a, b, c pour beaucoup de choses. i, j, k est très pratique pour itératif variables, et que sur épuiser toutes les possibilités. Pourquoi ne pas m, n? Eh bien, ils sont utilisés pour les entiers, mais le plus souvent, les points de fin d'itérations plutôt que de l'itératif variables elles-mêmes.
Quelqu'un doit demander à un historien des mathématiques.
Compteurs sont si communs dans les programmes, et dans les premiers jours de l'informatique, tout est à une prime...
Les programmeurs naturellement essayé de conserver pixels, et le " je " exige moins de pixels que n'importe quelle autre lettre à représenter. (Mathématiciens, être paresseux, l'a prise pour la même raison - que le plus petit glyphe).
Comme indiqué précédemment, " j " tout naturellement suivi...
🙂
Je l'utilise pour un certain nombre de raisons.
Habituellement mes boucles sont de type int, de sorte que
vous effectuer un triangle sur le
la saisie au clavier "int i", à l'
exception de l'espace, j'ai la poignée avec
mon pouce. C'est très rapide
séquence de type.
Le "je" pourrait représenter la itérateur, entier, incrémenter ou de l'index, dont chacun rend
sens logique.
Avec mes utilisations personnelles mis de côté, la théorie étant dérivé de FORTRAN est correct, où l'entier vars lettres I - N.
J'ai appris FORTRAN sur un Control Data Corp 3100 en 1965. Les Variables commençant par 'je' par 'N' étaient implicites à être des entiers. Ex: "IGGY" et "NORB' sont des entiers, 'XMAX" et "ALPHA" ont été à virgule flottante. Cependant, vous pourriez remplacer cela par une déclaration explicite.