Некоторые коллеги и я сравнивали прошлые языки, на которых мы программировали, и говорили о нашем опыте работы с VBScript с его странными функциями, такими как индекс на основе 1 вместо индексов на основе 0, как почти у всех других языков, мотивируя это тем, что это был язык для пользователей (например, Excel VBA) вместо языка для разработчиков.
Затем кто-то сказал: « XPath также имеет индексы на основе 1 », во что я не мог поверить, пока не нашел эту статью, в которой приводятся многие доводы в пользу подхода на основе 0, в том числе от самого Майкла Кея:
- «... индексирование с отсчетом от нуля имеет тенденцию упрощать формулы индекса при доступе к многомерному массиву с помощью выражения доступа к одномерному массиву»
- «при работе с таблицами или при преобразовании индексов в строки адресация с нуля часто бывает намного удобнее»
- «... аппаратная адресация - не единственное преимущество адресации на основе 0 ... она также упрощает вычисления ...»
но затем цитируют Майкла Кея в заключение:
... логика на основе 1 была правильным выбором для XPath и XSLT ... потому что язык был разработан для пользователей, а не для программистов, и у пользователей до сих пор есть эта старомодная привычка ссылаться на первую главу книги как на главу Один...
Может кто-нибудь мне это объяснить? (1) Как XPath разработан для пользователей? Я не могу себе представить, чтобы кто-нибудь, кроме разработчика, спорил с синтаксической жесткостью XPath или аспектами декларативного / функционального программирования XSLT. и (2) Почему на самом деле создатели XPath пошли против норм современных языков программирования, выбрав индекс, начинающийся с единицы?
n
не очень неестественную и часто приводящую к ошибкамn - 1
. Для тех, у кого извращенная логика «современного программирования», начало использования индексации на основе 1 было быОтветы:
Индексы массивов и других коллекций представляют собой смещения памяти, поэтому вполне логично, что они начинаются с нуля. Индексы XML и XPATH представляют позиции и счетчики, поэтому достаточно логично, что они начинаются с единицы (и, следовательно, ноль соответствует «пустому»).
источник
Чтобы ответить на этот вопрос, мы должны изучить историю некоторых технологий.
RSS XML XSLT и история XPath
Версия 0.9 RSS была первоначально выпущена как RDF Site Summary в 1999 году парой парней из Netscape для портала my.netscape.com Netscape. Позже в том же году он был переименован в RSS (Rich Site Summary) с обновлением v0.91. Разработка проекта несколько раз переходила из рук в руки, но к декабрю 2000 года была выпущена версия 1.0 RSS. С обновлением v1.0 RSS включил поддержку XML.
В течение 2002 года версия 2.0 была выпущена в сентябре как RSS (Really Simple Syndication) и начала развиваться в крупную интернет-технологию. В ранней истории RSS-каналы (и содержащиеся в них XML-данные) читались людьми в необработанном формате. Блоги и другие источники новостей использовали RSS-каналы и XML для вывода постоянно обновляемой информации. Поскольку XML читали простые смертные (непрограммисты), XPath и XSLT также должны были быть легко понятными, чтобы эти простые смертные не были ошеломлены сложностью при взаимодействии с ним. Вот почему XPath имитирует стиль URI, с которым конечные пользователи уже были знакомы. Одна из уступок, сделанных для удобства чтения пользователями, заключалась в использовании устаревших методов нумерации, то есть индексов на основе 1 вместо индексов на основе 0.
Хотя RSS-каналы и XML были созданы для чтения большинством людей, программы чтения RSS были разработаны, чтобы предоставить людям более удобный интерфейс для чтения RSS-каналов. Теперь необработанные данные RSS и XML читаются почти исключительно с помощью какого-либо средства чтения или графического интерфейса. XML по-прежнему часто (возможно, постоянно) используется в сети, но он замаскирован причудливыми графическими пользовательскими интерфейсами, чтобы обеспечить лучший опыт для конечных пользователей.
* Термин « простые смертные » относится к людям, которые не являются программистами.
источник