Авторитетный аргумент
Ну ... По-видимому, большинство языков, в том числе и совсем недавние, основаны на нулях. Поскольку эти языки были написаны довольно опытными людьми, ваш друг, должно быть, ошибается ...
Почему один?
почему 1 будет лучшим начальным индексом, чем ноль? Почему не 2 или 10? Сам ответ интересен, потому что он многое показывает о том, как люди защищают идею.
Первый аргумент в том , что это более естественно, потому что первое , как правило, один перед всеми другими, по крайней мере, для большинства людей ...
Аргумент номер один в том, что последний индекс также является размером массива ...
Я все еще впечатлен "качеством" причин, которые я обычно слышу для такого рода аргументов ... И даже больше, когда мне напоминают, что ...
Почему не ноль?
... «Основанные на одном» нотации - это пережитки западной культуры, которые игнорировали существование нуля на протяжении веков, если не больше.
Хотите верьте, хотите нет, оригинальный григорианский календарь исходит из -3, -2, -1, 1, 2, 3 ... Попробуйте представить проблему, которую он внес в западную науку (например, сколько лет с 1 января -2 до 1 января 2, чтобы увидеть, чем оригинальный григорианский календарь конфликтует с чем-то простым, например, вычитанием ...).
Хранение в одноосновных массивах похоже на то, что (ну, я буду за это понижен ... ^ _ ^ ...), в милях и ярдах в 21 веке ...
Почему ноль? Потому что это математика!
Первый (Ой ... Извините ... Я попробую еще раз)
Ноль , Ноль - это ничто, один - это нечто. И некоторые религиозные тексты утверждают, что «в начале ничего не было». Некоторые компьютерные дискуссии могут быть такими же горячими, как и религиозные дебаты, так что этот вопрос не так уж и неуместен, чем кажется ... ^ _ ^
Во-первых , проще работать с массивом на основе нуля и игнорировать его нулевое значение, чем работать с массивом на основе нуля и взломать его, чтобы найти его нулевое значение. Эта причина почти такая же глупая, как и предыдущая, но первоначальный аргумент в пользу одноосновных массивов тоже был ошибкой.
Во-вторых , давайте помнить, что при работе с числами высоки шансы, что вы будете иметь дело с математикой в тот или иной момент, а когда вы имеете дело с математикой, шансы хорошие, у вас нет настроения для глупых хаков, чтобы обойти устаревшие соглашения. Однозначное обозначение преследует и математику, и даты на протяжении веков, и, учась на наших ошибках, мы должны стремиться избегать этого в науках, ориентированных на будущее (включая компьютерные языки).
В-третьих , что касается массивов компьютерных языков, привязанных к аппаратному обеспечению, выделите массив C из 21 целого числа и переместите указатель на 10 индексов вправо, и у вас будет естественный массив [от -10 до 10]. Это не естественно для оборудования. Но это для математики. Конечно, математика может быть устаревшей, но в последний раз, когда я проверял, большинство людей в мире считали, что это не так.
В-четвертых , как уже указывалось в другом месте, даже для дискретной позиции (или расстояний, сокращенных до дискретных значений), первый индекс будет нулевым, как этаж в здании (начиная с нуля), уменьшающийся обратный отсчет (3, 2, 1, НОЛЬ !), высота земли, первый пиксель изображения, температура (ноль Кельвин, для абсолютного ноля или ноль градусов Цельсия, при температуре замерзания воды 273 К). Фактически, единственное, что действительно начинается с одного, - это традиционный способ « первый , второй , третий и т. Д.». итерационная запись, которая естественным образом подводит меня к следующему пункту ...
Пять следующий пункт (который , естественно , следует за предыдущий ) является то , что контейнеры высокого уровня должны быть доступны, а не по индексу, а итераторы , если индексы сами не имеют непреходящую ценность. Я удивлен, что ваш адвокат «на более высоком уровне» не упомянул об этом. В случае, если важен сам индекс, вы можете поспорить, что половина времени у вас есть вопросы, связанные с математикой. И, таким образом, вы хотели бы, чтобы ваш контейнер был дружественным по отношению к математике, а не по математике, как «ваш старый григорианский календарь», начиная с 1, и нуждался в отрыжках, чтобы заставить его работать.
Заключение
Аргумент вашего коллеги-программиста - заблуждение, потому что он без необходимости привязывает привычки разговорного / письменного языка, которые по своей природе являются размытыми, к компьютерным языкам (где вы не хотите, чтобы ваши инструкции были размытыми), а также потому, что ошибочно присваиваете оборудование Причину этой проблемы он надеется убедить, так как языки становятся все выше и выше в абстракции, что массив с нулями остается в прошлом.
Основанные на нуле массивы основаны на нулях по математическим причинам. Не по аппаратным причинам.
Теперь, если это проблема для вашего коллеги-программиста, пусть он начнет программировать с настоящими высокоуровневыми конструкциями, такими как итераторы и циклы foreach.