Wiem, że może to wydawać się absolutnie głupie pytanie, ale jestem zbyt ciekawy, aby nie zadawać ...
Dlaczego „i” i „j” stały się zmiennymi używanymi jako liczniki w większości struktur kontrolnych?
Chociaż zdrowy rozsądek mówi mi, że są one jak X, który służy do reprezentowania nieznanych wartości, nie mogę nie myśleć, że musi istnieć powód, dla którego wszyscy uczą się w ten sam sposób od nowa.
Czy to dlatego, że tak naprawdę jest zalecane dla najlepszych praktyk lub konwencji, czy może ma jakiś niejasny powód?
Na wszelki wypadek wiem, że mogę nadać im dowolną nazwę i że nazwy zmiennych nie są istotne.
variables
language-agnostic
Carlos
źródło
źródło
Odpowiedzi:
Ostatecznie pochodzi z matematyki: notacja podsumowująca tradycyjnie używa i dla pierwszego indeksu, j dla drugiego i tak dalej. Przykład (z http://en.wikipedia.org/wiki/Summation ):
Jest również używany w ten sposób do zbierania rzeczy, np. Jeśli masz kilka zmiennych x 1 , x 2 , ... x n , to dowolna będzie znana jako x i .
Co do tego, dlaczego tak jest, wyobrażam sobie, że SLaks jest poprawny i to dlatego, że jestem pierwszą literą w indeksie.
źródło
i
używany w matematyce?Wierzę, że pochodzi z Fortran. Zmienne zaczynające się od I do Q były domyślnie liczbami całkowitymi, pozostałe były rzeczywiste. Oznaczało to, że
I
była to pierwsza zmienna całkowita, aJ
druga itd., Więc zaczęły używać pętli.źródło
I
przezN
nieQ
. Google wydaje się w większości zgodzić. (różne wersje FORTRAN?)Matematycy używali i, j, k do oznaczania liczb całkowitych w algebrze (indeksy dolne, serie, sumowania itp.) Na długo przed (np. 1836 lub 1816 ) komputerami (to jest pochodzenie domyślnych typów zmiennych FORTRAN). Zwyczaj używania litery z końca alfabetu (..., x, y, z) z nieznanych zmiennych i od początku (A, B, C ...) dla stałych jest powszechnie przypisywane do Rene Descartes , (patrz także tutaj ), więc zakładam, że i, j, k ... n (w środku alfabetu) dla liczb całkowitych prawdopodobnie również z jego powodu.
źródło
i = liczba całkowita
Pochodzi z Fortran, gdzie zmienne całkowite musiały zaczynać się od liter I do N, a rzeczywiste zmienne zaczynały się od innych liter. Byłem więc pierwszą i najkrótszą nazwą zmiennej całkowitej. Fortran był jednym z najwcześniejszych języków programowania w powszechnym użyciu, a nawyki opracowane przez programistów używających go przeniesiono na inne języki.
EDYCJA : Nie mam problemu z odpowiedzią, która pochodzi z matematyki. Niewątpliwie to właśnie tam zainspirowali się projektanci Fortrana. Faktem jest, że i tak dla mnie, kiedy zacząłem programować w Fortranie, użyliśmy I, J, K, ... dla liczników pętli, ponieważ były one krótkie i pierwsze prawnie dozwolone nazwy zmiennych dla liczb całkowitych. Jako student drugiego stopnia w HS prawdopodobnie słyszałem o Kartezjuszu (i kilku innych), ale podczas programowania nie miałem żadnego związku z matematyką. W rzeczywistości pierwszy kurs, który wziąłem, nazywał się „Fortran for Business” i nie był nauczany przez wydział matematyki, ale przez wydział biznesu / ekon.
Dla mnie przynajmniej nazywanie zmiennych miało niewiele wspólnego z matematyką, ale wszystko ze względu na nawyki, które nauczyłem się pisać kod Fortran, który nosiłem w innych językach.
źródło
i
oznacza I ndex.j
przychodzi poi
.źródło
Symbole te były używane jako indeksy macierzy w matematyce na długo przed wynalezieniem komputerów elektronicznych.
źródło
Myślę, że najprawdopodobniej pochodzi od indeksu (w sensie matematycznym ) - jest powszechnie używany jako indeks sum lub innych operacji opartych na zbiorze, i najprawdopodobniej był używany w ten sposób, odkąd istniały języki programowania.
źródło
Y = Σ Xi
poprzedza każdy język programowania.i
. Ale pierwotnie używam go głównie dlatego, że cały kod patrzę gdzie indziej go używać, i które mogą być dziedziczone od programistów Fortran ...Matematyka preferuje stosowanie kolejnych liter w alfabecie dla zmiennych „anonimowych” używanych w podobny sposób. Stąd nie tylko „i, j, k”, ale także „f, g, h”, „p, q, r”, „x, y, z” (rzadko z dodanym „u, v, w”), i „α, β, γ”.
Teraz „f, g, h” i „x, y, z” nie są używane swobodnie: pierwsze dotyczy funkcji, drugie dotyczy wymiarów. „p, q, r” są również często używane dla funkcji.
Są też inne ograniczenia dotyczące dostępnych sekwencji: unika się „l” i „o”, ponieważ w wielu czcionkach wyglądają one zbyt podobnie do „1” i „0”. „t” jest często używane dla czasu, „d & δ” dla różnic, a „a, s, m, v” dla fizycznych miar przyspieszenia, przemieszczenia, masy i prędkości. To pozostawia tak wiele luk w trzech kolejnych literach bez niechcianych skojarzeń matematycznych dla indeksów.
Następnie, jak zauważyło kilka innych, konwencje matematyczne miały silny wpływ na konwencje wczesnego programowania, a „α, β, γ” nie były dostępne w wielu wczesnych zestawach znaków.
źródło
a, b, c
jest to dość powszechnie stosowana sekwencja, mimo żea
ma wiele znaczeń ...Znalazłem inną możliwą odpowiedź, którą może być to, że ja, j i k pochodzą
Hamilton's Quaternions
.Euler wybrał i dla wyimaginowanej jednostki.
Hamilton potrzebował jeszcze dwóch pierwiastków kwadratowych z -1:
ii = jj = kk = ijk = -1
Hamilton był naprawdę wpływowy, a czwartorzędy były standardowym sposobem przeprowadzania analiz 3D przed 1900 r. Do tego czasu matematycy byli przyzwyczajeni do myślenia o (ijk) jako dopasowanym zestawie. Rachunek wektorowy zastąpił analizę czwartorzędową w latach 90. XIX wieku, ponieważ był to lepszy sposób na zapisanie równań Maxwella. Ale ludzie pisali wielkości wektorów w ten sposób:
(3i-2j+k)
zamiast(3,-2,1)
. Tak więc (ijk) stało się standardowymi wektorami podstawowymi w R ^ 3.W końcu fizycy zaczęli używać teorii grup do opisywania symetrii w układach równań różniczkowych. Więc (ijk) zaczął łączyć się z „wektorami, które są zamieniane przez grupy permutacji”, a następnie dryfował w kierunku „rzeczy podobnych do indeksu, które przyjmują wszystkie możliwe wartości w określonym zestawie”, co w zasadzie oznacza to w pętli for.
źródło
odrzucając (trochę stronniczy)
źródło
number
, zwykle liczbę elementów w zestawie.Pewnego słonecznego popołudnia Archimedes zastanawiał się ( jak zwykle w słoneczne popołudnia ) i wpadł na swojego kumpla Eratostenesa.
Archimedes powiedział: „Pozdrowienia od Archimedesa do Eratostenesa! Próbuję znaleźć rozwiązanie stosunku kilku sztywnych ciał sztywnych znajdujących się w równowadze. Chciałbym iterować po tych ciałach wiele razy, ale mam straszny czas na śledzenie ile wykonałem iteracji! ”
Eratosthenes powiedział: „Dlaczego Archimedesie, dojrzała śliwko porywacza, możesz po prostu zaznaczyć kolejne rzędy linii na piasku, z których każdy śledzi liczbę iteracji, które wykonałeś w ramach iteracji!”
Archimedes zawołał do świata, że jego wielki przyjaciel był niezaprzeczalnie lśniącym światłem inteligencji za wymyślenie tak prostego rozwiązania. Ale Archimedes zauważył, że lubi chodzić w kółko wokół swojej piaskownicy, gdy się zastanawia. Tak więc istniało ryzyko utraty ścieżki, który rząd był na górze, a który na dole.
„Być może powinienem zaznaczyć te rzędy literą alfabetu tuż obok, aby zawsze wiedzieć, który wiersz jest który! Co o tym sądzisz?” zapytał, a następnie dodał: „Ale Eratostenes ... jakich liter mam użyć?”
Eratostenes był pewien, że nie wie, które listy będą najlepsze, i powiedział to samo Archimedesowi. Archimedes był jednak niezadowolony i nadal naciskał na biednego bibliotekarza, aby wybrał przynajmniej dwie litery, których potrzebowałby do swojego obecnego rozwiązania równowagi sfery.
Eratostenes, w końcu zmęczony nieustanną prośbą o dwie litery, krzyknął: „NIE WIEM !!!”
Archimedes wybrał więc pierwsze dwa litery w zdaniu wykrzyknika Eratostenesa i podziękował przyjacielowi za wkład.
Symbole te zostały szybko przyjęte przez starożytnych greckich programistów Javy, a reszta to ... no cóż ... historia.
źródło
j
.myślę, że dzieje się tak, ponieważ wiele pętli używa zmiennych typu Int do liczenia
a kiedy piszesz, wypowiadasz to w swojej głowie (tak jak podczas czytania), więc w myślach mówisz „int ....”
a kiedy musisz stworzyć literę zaraz po tym „int ....”, wymawiasz / wpisujesz „i”, ponieważ jest to pierwsza litera, o której myślisz, kiedy właśnie powiedziałeś „int”
na przykład przeliteruj słowo dla dzieci, które zaczynają uczyć się czytać, przeliteruj dla nich słowa, używając imion:
WORD pisze William W, Ok O, Ruby R, Gotowe D.
Więc mówisz Int I, Double d, Float f, string s itp. Na podstawie pierwszej litery.
A j jest używane, ponieważ gdy wykonałeś int I, J następuje zaraz po nim.
źródło
i
poprzedza tę składnię.Myślę, że jest to kombinacja innych wymienionych powodów:
Po pierwsze, „i” było powszechnie używane przez matematyków w ich notacji, a we wczesnych dniach pracy z językami, które nie były binarne (tj. Musiały być w jakiś sposób analizowane i leksykowane), zdecydowana większość użytkowników komputerów była także matematyków (... oraz naukowców i inżynierów), więc notacja ta zaczęła być używana w językach komputerowych do programowania pętli i od tego czasu po prostu utknęła w miejscu.
Połącz to z faktem, że przestrzeń ekranu w tych bardzo wczesnych dniach była bardzo ograniczona, podobnie jak pamięć, sensowne było utrzymywanie krótszych nazw zmiennych.
źródło
Być może historyczny?
FORTRAN, oczywiście pierwszy język wysokiego poziomu, domyślnie zdefiniował i, j, k, l, m jako typy danych liczb całkowitych, a pętle mogły być kontrolowane tylko przez zmienną całkowitą, czy konwencja trwa?
na przykład:
do 100 i = j, 100,5 .... 100 kontynuuj ....
źródło
i = iterator, i = indeks, i = liczba całkowita
To, co kiedykolwiek wymyślisz, „i” oznacza, że „pasuje do rachunku”.
Ponadto, chyba że masz tylko jedną linię kodu w tej pętli, prawdopodobnie powinieneś nazwać zmienną iterator / index / integer na coś bardziej znaczącego. Jak: pracownikIndeks
BTW, zwykle używam „i” w moich prostych pętlach iteratora; chyba że zawiera wiele wierszy kodu.
źródło
i = jota, j = jot; obie małe zmiany.
iota to najmniejsza litera w greckim alfabecie; w języku angielskim jego znaczenie jest powiązane z drobnymi zmianami, jak w „not one iota” (od frazy w Nowym Testamencie: „dopóki niebo i ziemia nie przeminą, ani jota, ani kropka nie przeminą od Prawa” (Mt 5, 18)).
Licznik reprezentuje niewielką zmianę wartości.
A z iota pochodzi jot (iot), który jest również synonimem małej zmiany.
por. http://en.wikipedia.org/wiki/Iota
źródło
Studnia z matematyki: (dla liter łacińskich)
a, b: używane jako stałe lub jako liczby całkowite dla liczby wymiernej
c: stała
d: pochodna
e: liczba Eulera
f, g, h: funkcje
i, j, k: są indeksami (również wektorami jednostkowymi i czwartorzędami)
l: generalnie nieużywany. wygląda na to, że 1
m, n: są wierszami i kolumnami macierzy lub jako liczby całkowite dla liczb wymiernych
o: również nieużywane (chyba że masz małą notację)
p, q: często używane jako liczby pierwsze
r: czasami przestrzenna zmiana zmiennej inne czasy związane z liczbami pierwszymi
s, t: zmienne przestrzenne i czasowe lub s stosuje się jako zmianę zmiennej dla t
u, v, w: zmiana zmiennej
x, y, z: zmienne
źródło
Chyba wiele możliwych głównych powodów:
i
ij
dla liczb naturalnych w formułach (tych, które używają liczb zespolonych przynajmniej rzadko), więc przeniesiono to do programowaniai
wskazówki doint
. A jeśli potrzebujesz innego,int
toi2
jest po prostu zbyt długo, więc zdecydujesz się użyćj
.i
następnie jestinteger
.źródło
Pochodzi z Fortran, gdzie i, j, k, l, m, n są domyślnie liczbami całkowitymi.
źródło
Z pewnością pochodzi z matematyki, która długo poprzedza programowanie komputerowe.
Skąd więc wziął się matematyka? Moje całkowicie niewykształcone przypuszczenie jest takie, że jak powiedział jeden z matematyków, matematyki lubią używać klastrów alfabetycznych do podobnych rzeczy - f, g, h dla funkcji; x, y, z dla zmiennych numerycznych; p, q, r dla zmiennych logicznych; u, v, w dla innych zbiorów zmiennych, szczególnie w rachunku różniczkowym; a, b, c dla wielu rzeczy. i, j, k przydaje się w przypadku zmiennych iteracyjnych, a to o wyczerpaniu możliwości. Dlaczego nie m, n? Cóż, są one używane do liczb całkowitych, ale częściej punkty końcowe iteracji niż same zmienne iteracyjne.
Ktoś powinien zapytać historyka matematyki.
źródło
Liczniki są tak powszechne w programach, a na początku obliczeń wszystko było na wagę złota ...
Programiści naturalnie próbowali zachować piksele, a „i” wymagało mniejszej liczby pikseli niż jakakolwiek inna litera do przedstawienia. (Matematyk, będąc leniwym, wybrał go z tego samego powodu - jako najmniejszy glif).
Jak wspomniano wcześniej, „j” po prostu naturalnie nastąpiło ...
:)
źródło
Używam go z wielu powodów.
Zwykle moje pętle są oparte na liczbach całkowitych, więc tworzysz pełny trójkąt na klawiaturze, wpisując „int i”, z wyjątkiem miejsca obsługiwanego kciukiem. Jest to bardzo szybka sekwencja do wpisania.
„I” może oznaczać iterator, liczbę całkowitą, przyrost lub indeks, z których każdy ma logiczny sens.
Odkładając na bok moje osobiste zastosowania, teoria wyprowadzania z FORTRAN jest poprawna, gdzie zmienne całkowite używały liter I - N.
źródło
Nauczyłem się FORTRAN na Control Data Corp. 3100 w 1965 roku. Zmienne zaczynające się od „I” do „N” miały być liczbami całkowitymi. Np .: „IGGY” i „NORB” były liczbami całkowitymi, „XMAX” i „ALPHA” były zmiennoprzecinkowe. Można to jednak zastąpić w drodze jawnej deklaracji.
źródło