Argument autorytetu
Cóż ... Najwyraźniej większość języków, w tym bardzo nowe, są zerowane. Ponieważ te języki zostały napisane przez dość wykwalifikowanych ludzi, twój przyjaciel musi się mylić ...
Dlaczego jeden
dlaczego 1 byłby lepszym początkowym indeksem niż zero? Dlaczego nie 2 lub 10? Sama odpowiedź jest interesująca, ponieważ pokazuje wiele na temat procesu obrony ludzi.
Pierwszym argumentem jest to, że jest to bardziej naturalne, ponieważ 1-ty jest zwykle jeden przed wszystkimi innymi, przynajmniej dla większości ludzi ...
Argument numer jeden polega na tym, że ostatni indeks jest również rozmiarem tablicy ...
Wciąż jestem pod wrażeniem „jakości” powodów, dla których zwykle słyszę tego rodzaju argumenty ... A nawet więcej, gdy przypominam sobie, że…
Dlaczego nie zero?
... Notacje „oparte na jednym” są pozostałościami kultury zachodniej, która ignorowała istnienie zera przez stulecia, jeśli nie więcej.
Wierzcie lub nie, oryginalny kalendarz gregoriański pochodzi z -3, -2, -1, 1, 2, 3 ... Spróbuj wyobrazić sobie problem, jaki przyczynił się do zachodniej nauki (na przykład, ile lat od 1 stycznia -2 do 1 stycznia, aby zobaczyć, niż oryginalny kalendarz gregoriański koliduje z czymś tak prostym jak odejmowanie ...).
Trzymanie się tablic opartych na jednym jest jak (no cóż, będę zmodowany za to ... ^ _ ^ ...), trzymanie się mil i jardów w 21 wieku ...
Dlaczego zero? Ponieważ to matematyka!
Pierwszy (Ups ... Przepraszam ... Spróbuję ponownie)
Zero , zero jest niczym, jedno jest czymś. Niektóre teksty religijne utrzymują, że „na początku nic nie było”. Niektóre dyskusje związane z komputerem mogą być równie palące jak debaty religijne, więc ten punkt nie jest tak poza tematami, jak się wydaje ... ^ _ ^
Po pierwsze , łatwiej jest pracować z tablicą zerową i zignorować jej zerową wartość niż pracować z tablicą zerową i zhakować, aby znaleźć jej zerową wartość. Ten powód był prawie tak głupi jak poprzedni, ale oryginalny argument na korzyść tablic opartych na jednostkach również był dość błędny.
Po drugie , pamiętajmy, że mając do czynienia z liczbami, są duże szanse, że poradzisz sobie z matematyką w jednej czy innej chwili, a kiedy masz do czynienia z matematyką, są duże szanse, że nie masz ochoty na głupie włamania, by obejść przestarzałe konwencje. Notacja oparta na One nękała matematykę i daty również od stuleci, a ucząc się na własnych błędach, powinniśmy starać się tego unikać w naukach zorientowanych na przyszłość (w tym na języki komputerowe).
Po trzecie , jeśli chodzi o tablice języka komputerowego związane ze sprzętem, przydziel tablicę C zawierającą 21 liczb całkowitych i przesuń wskaźnik 10 wskaźników w prawo, a otrzymasz naturalną tablicę [-10 do 10]. Nie jest to naturalne w przypadku sprzętu. Ale to jest matematyka. Oczywiście matematyka może być przestarzała, ale kiedy ostatni raz sprawdzałem, większość ludzi na świecie uważała, że tak nie jest.
Cztery , jak już wskazano w innym miejscu, nawet dla dyskretnej pozycji (lub odległości zmniejszonych do dyskretnych wartości), pierwszy indeks będzie wynosił zero, podobnie jak podłoga w budynku (zaczynając od zera), malejące odliczanie (3, 2, 1, ZERO !), wysokość gruntu, pierwszy piksel obrazu, temperatura (zero Kelvina, zero absolutne lub zero stopni Celsjusza, jako temperatura zamarzania wody 273 K). W rzeczywistości jedyne, co tak naprawdę zaczyna się od jednego, to tradycyjny sposób „ pierwszy , drugi , trzeci itd.” notacja iteracyjna , która naturalnie prowadzi mnie do następnego punktu ...
Pięć następny punkt (który naturalnie podąża za poprzedni ) jest to, że pojemniki wysokiego szczebla powinny być dostępne, a nie przez indeks, ale przez iteratory , chyba indeksów sami mają istotną wartość. Dziwię się, że twój rzecznik „języka wyższego poziomu” o tym nie wspomniał. W przypadku gdy sam indeks jest ważny, możesz postawić zakład w połowie czasu, gdy masz na myśli pytanie matematyczne. Dlatego chciałbyś, aby twój kontener był przyjazny dla matematyki, a nie wyłączony z matematyki, jak „twój stary kalendarz gregoriański” od 1, i potrzebujesz regurgitowanych hacków, aby działał.
Wniosek
Argument podany przez twojego programistę jest błędem, ponieważ niepotrzebnie wiąże nawyki mówione / pisane, które z natury są rozmyte, z językami komputerowymi (gdzie nie chcesz, aby twoja instrukcja była niewyraźna), a także dlatego, że błędnie przypisujesz sprzęt Przyczyną tego problemu jest przekonanie cię, gdy języki będą coraz bardziej abstrakcyjne, że tablica zerowa należy już do przeszłości.
Macierze zerowe są zerowane ze względów matematycznych. Nie z powodów związanych ze sprzętem.
Teraz, jeśli jest to problem dla twojego programisty, poproś go, aby zaczął programować przy użyciu prawdziwych konstrukcji wysokiego poziomu, takich jak iteratory i pętle foreach.