2010-04-08 1 views
8

В Java/C++, например, вы случайно говорят, что 'a' является первым характер "abc" или Нулевое?В системе индексирования на основе 0 люди называют элемент с индексом 0 «первым» или «нулевым» элементом?

Говорят ли люди и то, и другое всегда будет двусмысленным, или существует реальная конвенция?


Цитата из википедии на Zeroth статьи:

В информатике, ссылки на массив также часто начинается в 0, поэтому программисты могут использовать нулевой в тех ситуациях, где другие могли бы использовать первые, и так далее ,

Это, по-видимому, подтверждает гипотезу, что это всегда будет двусмысленным.


Благодаря Александрос Gezerlis (see his answer below) для нахождения этой цитаты из Как думать как ученый: Обучение с Python Аллен B. Дауни, Джеффри Elkner и Крис Мейерс, chapter 7:

Первая буква "banana" не является a. Если вы не компьютерный ученый. По порочным причинам компьютерные ученые всегда начинают отсчет с нуля. 0-я буква (нуль-эт) "banana" - b. 1-я буква (один-эт) - a, а 2-я (двухэтажная) буква - n.

Это, по-видимому, свидетельствует о том, что мы, как компьютерные ученые, должны отвергать естественную семантику «первая», «вторая» и т. Д. При работе с системами индексирования на основе 0.

Эта цитата предполагает, что, возможно, есть ARE официальных постановлений для определенных языков, поэтому я задал этот вопрос [language-agnostic].

ответ

25

Это первый символ или элемент в массиве, но он равен нулю.

+0

Очень красиво! – fastcodejava

4

Возможно субъективно, но я называю это первым элементом или элементом ноль. Это первый и в законах роботизирования Исаака Азимова в стороне, я даже не уверен, что нуль - настоящее слово :-)

По определению, все, что предшествует первому, становится первым и выталкивает все остальное одним ,

+0

Это '[субъективный]', пока кто-то не укажет на авторитетную рекомендацию, которая будет действовать так или иначе. Затем он становится «наилучшим образом». – polygenelubricants

6

Цитирует this wikipedia article:

Хотя термин «Нулевые» сам по себе не неоднозначному, он создает неопределенность для всех последующих элементов последовательности при отсутствии достаточных контекста, так как их называют «первыми «,« второй », и т. д. в конфликте с обычным обычными значениями этих слов.

Так что я бы сказал «первым».

+0

Черт побери! Кроме того, «нуль» неудобен и звучит как препятствие речи. –

9

Термин «первый» не имеет ничего общего с абсолютным индексом массива, а просто относительным положением как наименьшим индексированным элементом. Например, Turbo Pascal допускает произвольные индексы в массивах (скажем, от 5 до 15). Элемент, расположенный в массиве [5], по-прежнему будет упоминаться как первый элемент .

+0

Не ** Turbo ** Паскаль, просто Паскаль :) –

1

Это зависит от того, являетесь ли вы поклонником серии robot Исаака Азимова.

2

Определенно первый, никогда не слышал нулевого до сегодняшнего дня!

2

Я согласен с большинством ответов здесь, которые говорят, первый символ, который при нулевом индексе, но только для записи, следующий из книги Аллена Дауни «Python для Software Design»:

Так б является 0-й буквой («нуль-эт») «банан», а является 1-й буквой («один-эт»), а n является 2-й цифрой («два-эт»).

Таким образом, он устраняет неоднозначность, либо с помощью:

а) число, а затем «я», или б) слово, а затем «-eth».

+0

+1 для цитаты. Давайте еще раз будем править так или иначе, если не авторитетные, по крайней мере достоверные источники. – polygenelubricants

2

Стандарты C и C++ говорят «начальный элемент» и «первый элемент», что означает одно и то же. Если я помню, чтобы быть однозначным, я говорю «начальный», «нулевой» или «первый отсчет с нуля». Но обычно я говорю «первым». Этот банановый материал - это либо юмористическое преувеличение, либо немного бредовые (я подозреваю, что первый - это просто способ объяснить 0-индексацию). Я не думаю, что знаю кого-нибудь, кто на самом деле сказал бы «первым», что означает «индекс 1 массива с индексом 0», если только они не сказали сначала «нуль» в том же абзаце, чтобы дать понять, что они означают.

+0

Обратите внимание, что цитата использует «один» и «1-й» вместо «первый» и «первый». Мне действительно нравится эта система; все, что движется к математической точности и от неясностей/неровностей естественного языка, для меня хорошо. – polygenelubricants

+0

Конечно, но я не знаю никого, кто говорит «один-й». Я думаю, что они просто представляют его гипотетически, как характеристику того, что индексирование массива 0 будет *, если бы оно использовалось как набор ординалов в речи. –

+0

@ Стив Джессоп - Что касается вопроса юмористического преувеличения или его гипотетического: возможно. С другой стороны, на другой странице автор использует те же самые обозначения, что и предполагает, что он считает это терминологией (возможно, своего собственного изобретения): «Оператор [n: m] возвращает часть строки от символа 'n-eth' до символа 'm-eth', включая первый, но исключая последний. ". –