Alguns colegas e eu estávamos comparando linguagens anteriores que havíamos programado e conversando sobre nossa experiência com VBScript com seus recursos estranhos , como índice baseado em 1 em vez de índices baseados em 0, como quase todas as outras linguagens têm, o raciocínio sendo que era um linguagem para usuários (por exemplo, Excel VBA) em vez de uma linguagem para desenvolvedores.
Então alguém disse: " XPath também tem índices baseados em 1 ", que eu não pude acreditar até encontrar este artigo no qual muitos motivos são dados a favor da abordagem baseada em 0, incluindo alguns do próprio Michael Kay:
- "... a indexação baseada em zero tende a tornar as fórmulas de índice mais simples ao acessar uma matriz multidimensional com uma expressão de acesso à matriz unidimensional"
- "ao manipular tabelas ou subscrever em strings, o endereçamento baseado em zero costuma ser muito mais conveniente"
- "... o endereçamento de hardware não é o único benefício do endereçamento baseado em 0 ... ele também torna os cálculos mais fáceis ..."
mas então Michael Kay é citado como concluindo:
... a lógica baseada em 1 foi a escolha certa para XPath e XSLT ... porque a linguagem foi projetada para usuários, não para programadores, e os usuários ainda têm o hábito antiquado de se referir ao primeiro capítulo de um livro como Capítulo 1...
Alguém pode explicar isso para mim? (1) Como o XPath é projetado para usuários? Não consigo imaginar alguém que não seja um desenvolvedor lutando com a rigidez sintática do XPath ou os aspectos de programação declarativa / funcional do XSLT. e (2) por que realmente os criadores do XPath foram contra a norma das linguagens de programação modernas ao escolher um índice baseado em 1?
n
, não o muito antinatural e muitas vezes levando a errosn - 1
. Para qualquer pessoa com lógica pervertida devido à "programação moderna", começar a usar a indexação baseada em 1 seria uma experiência agradável e refrescante :)Respostas:
Array e outros índices de coleção representam deslocamentos de memória, então logicamente eles começam do zero. Os índices XML e XPATH representam posições e contagens, portanto, logicamente, eles começam em um (e o zero é, portanto, representativo de "vazio")
fonte
Para responder a essa pergunta, devemos examinar a história de algumas tecnologias.
Histórico RSS XML XSLT e XPath
A versão 0.9 do RSS foi originalmente lançada como RDF Site Summary em 1999 por alguns caras da Netscape para o portal my.netscape.com da Netscape. Mais tarde naquele ano, ele foi renomeado para RSS (Rich Site Summary) com a atualização v0.91. O desenvolvimento do projeto mudou várias vezes, mas RSS versão 1.0 foi lançado em dezembro de 2000. Com a atualização v1.0, RSS incluiu suporte para XML.
Durante 2002, a v2.0 foi lançada em setembro como RSS (Really Simple Syndication) e começou a evoluir para uma grande tecnologia de internet. Em sua história inicial, os feeds RSS (e os dados XML que eles continham) eram lidos por humanos no formato bruto. Blogs e outras fontes de notícias usavam feeds RSS e XML para gerar informações continuamente atualizadas. Como o XML estava sendo lido por meros mortais (não programadores), XPath e XSLT também precisavam ser facilmente compreensíveis, para que esses meros mortais não fossem sobrecarregados pela complexidade ao interagir com ele. É por isso que o XPath imita o estilo de URIs, que é algo com o qual os usuários finais já estão familiarizados. Uma das concessões feitas para fins de legibilidade pelos usuários era usar técnicas de numeração antiquadas, ou seja, índices baseados em 1 em vez de índices baseados em 0.
Embora os feeds RSS e XML tenham sido feitos para serem lidos pela maioria das pessoas, os leitores RSS foram desenvolvidos para fornecer uma interface mais agradável para os humanos lerem os feeds RSS. Agora, os dados RSS e XML brutos são lidos quase exclusivamente com algum tipo de leitor ou interface gráfica. XML ainda está em uso frequente (talvez permanente) em toda a web, mas é mascarado por interfaces gráficas sofisticadas para fornecer uma experiência melhor para os usuários finais.
* O termo " meros mortais " refere-se a humanos que não são programadores
fonte