Аргумент влади
Ну ... Мабуть, більшість мов, включаючи дуже недавні, покладені на нуль. Оскільки ці мови були написані досить кваліфікованими людьми, ваш друг повинен помилитися ...
Чому один?
чому 1 буде кращим початковим індексом, ніж нульовим? Чому б не 2, або 10? Сама відповідь цікава, бо багато в чому свідчить про процес хоч людей, які захищають цю ідею.
Перший аргумент в тому , що це більш природно, тому що перший , як правило, один перед усіма іншими, по крайней мере, для більшості людей ...
Аргумент номер один полягає в тому, що останній індекс - це також розмір масиву ...
Мене все ще вражає "якість" причин, які я зазвичай чую для такого роду аргументів ... І навіть більше, коли мені це нагадують ...
Чому б не нуль?
... Однозначні позначення - це залишені у західній культурі, які ігнорували існування нуля протягом століть, якщо не більше.
Вірите чи ні, оригінальний григоріанський календар походить від -3, -2, -1, 1, 2, 3 ... Спробуйте уявити проблему, яку він сприяв західній науці (наприклад, скільки років з 1 січня -2 до 1 січня, щоб побачити, ніж оригінальний григоріанський календар суперечить чомусь такому простому, як субстракція ...).
Дотримуватися масивів, що базуються на одній основі, це як (ну, я буду перешкоджати цьому ... ^ _ ^ ...), зберігаючи милі та ярди в 21 столітті ...
Чому нуль? Бо це математика!
Спочатку (OOops ... Вибачте ... я спробую ще раз)
Нуль , нуль - це ніщо, одне - це щось. І деякі релігійні тексти стверджують, що "На початку нічого не було". Деякі дискусії, пов'язані з комп'ютером, можуть бути настільки ж пекучими, як і релігійні дебати, тому ця тема не настільки поза темою, як здається ... ^ _ ^
По-перше , простіше працювати з масивом на основі нуля і ігнорувати його нульове значення, ніж працювати з одноосновним масивом і хакнути навколо, щоб знайти його нульове значення. Ця причина настільки ж нерозумна, як і попередня, але тоді оригінальний аргумент на користь масивів, що базуються на одній основі, теж був помилковим.
По-друге , згадаймо, що, маючи справу з числами, велика ймовірність, що ти будеш займатися математикою в той чи інший момент, а коли ти займаєшся математикою, швидше за все, ти не в настрої для дурних хакерів обійти застарілі умовності. Нотація, що базується на одній, також століттями мучила математику та дати, і, вивчаючи свої помилки, ми повинні прагнути уникати цього в майбутніх орієнтованих науках (включаючи комп'ютерні мови).
По-третє , що стосується масивів комп'ютерної мови, прив'язаних до обладнання, виділіть масив C з 21 цілим числом і перемістіть вказівник 10 індексів праворуч, і у вас буде природний масив [-10 до 10]. Це не природно для апаратних засобів. Але це для математики. Звичайно, математика могла бути застарілою, але востаннє, коли я перевіряв, більшість людей у світі вважали, що це не так.
По-четверте , Як уже зазначалося в іншому місці, навіть для дискретного положення (або відстані, зменшеного до дискретних значень), перший показник буде нульовим, як і підлога в будівлі (починаючи з нуля), зменшуючи зворотний відлік (3, 2, 1, ZERO !), висота землі, перший піксель зображення, температура (нуль Кельвіна, за абсолютний нуль або нуль градусів Цельсія, як температура замерзання води 273 К). Насправді, єдине, що насправді починається з одного, - це традиційний спосіб " першого , другого , третього тощо". нотація ітерації , яка природно призводить мене до наступного пункту ...
П'ять наступний пункт (який , природно , слід за попередній ) є те , що контейнери високого рівня повинні бути доступні, а не по індексу, а ітератори , якщо індекси самі не мають неминущу цінність. Я здивований, що твій захисник "мови вищого рівня" про це не згадав. У випадку, якщо сам індекс важливий, ви можете зробити ставку вдвічі, коли маєте на увазі питання, пов'язані з математикою. І таким чином, ви хочете, щоб ваш контейнер був зручним для математики, а не з обмеженими фізичними можливостями, як "календар вашого старого григоріанця", починаючи з 1, і вам потрібні перероблені хаки, щоб він працював.
Висновок
Аргумент, поданий вашим колегою-програмістом, є помилкою, оскільки він непотрібно пов’язує розмовні / письмові мовні звички, які, за своєю природою, розмиті, до комп'ютерних мов (там, де ви не хочете, щоб ваша інструкція була розмитою), і тому, що неправильно привласнювати обладнання Причиною цієї проблеми він сподівається переконати вас, як мови йдуть все вище і вище в абстракції, що масив на основі нуля - це минуле.
Нульові масиви базуються на нулі через причини, пов'язані з математикою. Не з апаратних причин.
Тепер, якщо це проблема для вашого колеги-програміста, запропонуйте йому почати програмувати реальні конструкції високого рівня, як ітератори та цикли передбачення.