Почему индексы в XPath начинаются с 1, а не 0?

Некоторые коллеги и я сравнивали прошлые языки, которые мы запрограммировали, и говорили о нашем опыте с VBScript с его нечетными функциями, такими как 1-основанный индекс вместо индексов на основе 0, таких как почти каждый другой язык, аргументируется тем, что он был языком для пользователей (например, Excel VBA) вместо языка для разработчиков.

Затем кто-то сказал: " XPath также имеет индексы на основе 1", которые я не мог поверить, пока не нашел в этой статье, в которой многим причинам дается в пользу подхода, основанного на 0, включая некоторых из самого Майкла Кэя:

  • "... индексирование с нулевым индексом имеет тенденцию упрощать формулы индекса при доступе к многомерному массиву с одномерным выражением доступа к массиву"
  • "при обработке таблиц или подписи в строках адресация с нулевой точкой часто будет намного удобнее"
  • "... аппаратная адресация не является единственным преимуществом адресной адресации 0... это также упрощает вычисления..."

но затем Майкл Кей цитируется как заключение:

... 1-основанная логика была правильным выбором для XPath и XSLT... потому что язык был разработан для пользователей, а не для программистов, и пользователи по-прежнему имеют этот старомодный привычка ссылаться на первое глава в книге как первая глава...

Может кто-нибудь объяснить это мне? (1) Как XPath предназначен для пользователей? Я не могу представить, чтобы кто-либо, не являющийся разработчиком, пререкался с синтаксической жесткостью XPath или аспектами декларативного/функционального программирования XSLT. и (2) Почему действительно создатели XPath пошли против нормы современных языков программирования, выбирая индекс на основе 1?

Ответ 1

Массивные и другие индексы коллекции представляют собой смещения памяти, поэтому логически они начинаются с нуля. Индексы XML и XPATH представляют позиции и подсчеты, поэтому достаточно логически они начинаются с одного (и поэтому нуль является "пустым" )

Ответ 2

Чтобы ответить на этот вопрос, мы должны изучить историю некоторых технологий.

RSS XML XSLT и история XPath

Версия 0.9 RSS была первоначально выпущена в качестве RDF Site Summary в 1999 году несколькими парнями в портале Netscape для Netscapes my.netscape.com. Позже в этом году он был переименован в RSS (Rich Site Summary) с обновлением v0.91. Разработка проекта несколько раз менялась, но версия для RSS 1.0 была выпущена к декабрю 2000 года. С обновлением v1.0 в RSS включена поддержка XML.

В течение 2002 года v2.0 был выпущен в сентябре как RSS (Really Simple Syndication) и начал развиваться в основные интернет-технологии. В ранней истории RSS-каналы (и содержащиеся в них XML-данные) были прочитаны людьми в необработанном формате. Блоги и другие источники новостей использовали RSS-каналы и XML для вывода постоянно обновляемой информации. Поскольку XML читали простые смертные (не программисты), XPath и XSLT также должны были быть легко понятны, так что эти простые смертные не были бы перегружены сложностью при взаимодействии с ним. Вот почему XPath имитирует стиль URI, что уже стало известно конечным пользователям. Одной из уступок, сделанных с целью удобочитаемости пользователями, было использование старомодных методов нумерации, то есть индексов на основе 1 вместо индексов на основе 0. Это та же самая уступка, о которой вы говорили в VBScript, и она была сделана по тем же причинам.

Несмотря на то, что RSS-каналы и XML были доступны для чтения для большинства людей, читатели RSS были разработаны, чтобы обеспечить более приятный интерфейс для людей, чтобы читать RSS-каналы. Теперь необработанные RSS и XML-данные читаются почти исключительно с помощью какого-то читателя или графического интерфейса. XML по-прежнему часто используется (возможно, постоянным) в Интернете, но он маскируется фантастическими графическими пользовательскими интерфейсами, чтобы обеспечить лучший опыт для конечных пользователей.

* Термин "простые смертные" относится к людям, которые не являются программистами.