Czy ktoś zastanawiał się, dlaczego tak wielu z nas powtarza ten sam wzorzec, używając tych samych nazw zmiennych?
for (int i = 0; i < foo; i++) {
// ...
}
Wydaje się, większość kodu, jaki kiedykolwiek spojrzał na zastosowań i
, j
, k
i tak dalej jako zmienne iteracji.
Podejrzewam, że skądś to wziąłem, ale zastanawiam się, dlaczego jest to tak powszechne w rozwoju oprogramowania. Czy to coś, co wszyscy wybraliśmy z C czy coś takiego?
Po prostu swędzenie, które miałem przez jakiś czas z tyłu głowy.
ii
(ijj
,kk
...), dzięki czemu łatwiej jest zlokalizować podczas wyszukiwania.Odpowiedzi:
i
ij
zwykle były używane jako indeksy matematyczne od dłuższego czasu (np. nawet w dokumentach wcześniejszych niż języki wyższego poziomu, często widzisz takie rzeczy jak „X i, j ”, zwłaszcza w podsumowaniu).Projektując Fortran, (najwyraźniej) zdecydowali się na to samo, więc wszystkie zmienne zaczynające się od „I” do „N” domyślnie są liczbami całkowitymi, a wszystkie inne - na liczbach rzeczywistych (zmiennoprzecinkowe). Dla tych, którzy go przeoczyli, jest to źródło starego żartu „Bóg jest prawdziwy (chyba, że podano liczbę całkowitą)”.
Wydaje się, że większość ludzi nie widziała powodu, aby to zmienić. Jest powszechnie znany i rozumiany, i bardzo zwięzły. Od czasu do czasu widzisz coś napisanego przez jakiegoś psychotę, który uważa, że istnieje prawdziwa zaleta czegoś takiego:
Na szczęście jest to dość rzadkie, a większość przewodników po stylu wskazuje teraz, że chociaż długie, opisowe nazwy zmiennych mogą być przydatne, nie zawsze są one potrzebne, szczególnie w przypadku czegoś takiego, w którym zasięg zmiennej jest tylko wierszem lub dwoma kodami .
źródło
i
- indeks.Zmienna tymczasowa używana do iteracji pętli indeksowania. Jeśli masz już
i
, co jest bardziej naturalne niż dzieje sięj
,k
i tak dalej?W tym kontekście
idx
jest również często używany.Krótki, prosty i pokazuje dokładnie, jakie jest użycie zmiennej, jak powinna być nazwa zmiennej.
źródło
i
pętli.i
może również oznaczać iterator.W FORTRAN
i
była pierwszą literą domyślnie odpowiadającą typowi całkowitemu. Pełny zakres domyślnych typów liczb całkowitych zaczynał się od literi
don
. Praca z pętlami dla trzech wymiarach, ale nasi
,j
ik
. Wzór kontynuowano dla dodatkowych wymiarów. Podobnie „x”, „y” i „z”, które domyślnie były zmiennoprzecinkowe, zostały użyte w przypadku zmiennych pętli wymagających liczb rzeczywistych.Jak
litleadv
zauważa,i
jest to również minimalny spadek indeksu.Biorąc pod uwagę lokalne użycie tych zmiennych, nie widzę problemu z niestosowaniem bardziej opisowej nazwy.
źródło
Wierzę, że pochodzi z podsumowania :
źródło
Kilka lat temu powiedziano mi, na marginesie, mojej teorii profesora obliczeń, że pochodzenie pochodzi z matematycznej notacji sumującej. i, j, k były powszechnie używane jako zmienne iteracyjne liczb całkowitych i przeniesiono je z wczesnych tekstów na temat teorii obliczeń (która oczywiście jest przede wszystkim stosowana w matematyce). Najwyraźniej patrząc na prace Knutha i in. tworzy kopię zapasową.
x, y, z jako iteranty zmiennoprzecinkowe najwyraźniej pojawiły się wraz z popularnością Fortrana w naukach fizycznych, od fizyków badających konwersję całek na kod źródłowy (ponieważ integracje były zwykle ponad granicami przestrzennymi ... jak x idzie do 100 i tak dalej)
Nie mam odniesienia do tego, ale jak mówię, pochodzi od dość starego profesora i wydaje się mieć sens.
Mam nadzieję że to pomoże
źródło
Myślę, że i, j, k są używane w matematyce do wskazywania wskaźników w sumach i dla elementów macierzy (i dla wierszy i j dla kolumn). W notacji matematycznej niektóre litery są częściej używane z określonym znaczeniem niż inne, np. A, b, c dla stałych, f, g, h dla funkcji, x, y, z dla zmiennych lub współrzędnych, i, j, k dla indeksów. Przynajmniej tak pamiętam z matematyki, którą wziąłem w szkole.
Być może zapis ten został przeniesiony do informatyki, ponieważ na początku wielu informatyków było matematykami lub przynajmniej miało silne zaplecze matematyczne.
źródło
i == iterator lub indeks
Moje rozumienie zawsze brzmiało „i” jest dobrym wyborem, ponieważ pętle są zazwyczaj przeznaczone do iteracji lub przechodzenia ze znanym krokiem indeksu. Litery „j” i „k” następują dobrze, ponieważ zagnieżdżone pętle są często potrzebne i większość z nich instynktownie zna „j” == drugi indeks i „k” == trzeci indeks, ponieważ są one zgodne z tym wzorem w alfabecie. Ponadto, ponieważ wielu przestrzega tej standardowej konwencji, można bezpiecznie założyć, że pętla „k” prawdopodobnie będzie zawierać pętle „j” i „i”.
źródło
i, j, k są używane w kartezjańskim układzie współrzędnych. Porównując z xiy, które reprezentują osie w tym samym systemie i które są zawsze używane jako zmienne, możemy powiedzieć, że stamtąd również pochodziły i, j i k.
źródło
„i” oznacza indeks.
Pojedyncza litera ułatwia skanowanie linii kodu. W przypadku czegoś tak powszechnego jak pętla idealny jest pojedynczy znak indeksu. Ze względu na konwencję nie ma wątpliwości co do tego, co oznacza „i”.
źródło
Kiedy zacząłem programować, Dartmouth BASIC był nowy. Wszystkie zmienne w tym i kilku innych językach były wówczas pojedynczymi znakami. Dodaj do tego konwencję nazewnictwa zmiennych FORTRAN i fakt, że o wiele łatwiej jest pisać, tylko jeden znak oraz zrozumienie ze strony starszych programistów i nauczycieli. Nie wiem, ale brzmi dobrze.
źródło