Algunos colegas y yo estábamos comparando idiomas anteriores en los que habíamos programado y estábamos hablando de nuestra experiencia con VBScript con sus características extrañas , como el índice basado en 1 en lugar de los índices basados en 0, como casi todos los demás idiomas, el razonamiento era que era un idioma para los usuarios (por ejemplo, Excel VBA) en lugar de un idioma para los desarrolladores.
Entonces alguien dijo: " XPath también tiene índices basados en 1 ", lo cual no podía creer hasta que encontré este artículo en el que se dan muchas razones a favor del enfoque basado en 0, incluidas algunas del propio Michael Kay:
- "... la indexación basada en cero tiende a simplificar las fórmulas del índice cuando se accede a una matriz multidimensional con una expresión de acceso a una matriz unidimensional"
- "cuando se manejan tablas o se realizan subíndices en cadenas, el direccionamiento basado en cero suele ser mucho más conveniente"
- "... el direccionamiento por hardware no es el único beneficio del direccionamiento basado en 0 ... también facilita los cálculos ..."
pero luego se cita a Michael Kay como concluyente:
... la lógica basada en 1 fue la elección correcta para XPath y XSLT ... porque el lenguaje fue diseñado para usuarios, no para programadores, y los usuarios todavía tienen este hábito anticuado de referirse al primer capítulo de un libro como Capítulo Uno...
¿Puede alguien explicarme eso? (1) ¿Cómo está diseñado XPath para los usuarios? No puedo imaginar a nadie que no sea un desarrollador luchando con la rigidez sintáctica de XPath o los aspectos declarativos / de programación funcional de XSLT. y (2) ¿Por qué realmente los creadores de XPath fueron en contra de la norma de los lenguajes de programación modernos al elegir un índice basado en 1?
n
, no muy poco natural y a menudo conduce a erroresn - 1
. Para cualquier persona con lógica pervertida debido a la "programación moderna", comenzar a usar la indexación basada en 1 sería una experiencia agradable y refrescante :)Respuestas:
Los índices de matriz y otras colecciones representan compensaciones de memoria, por lo que, lógicamente, comienzan en cero. Los índices XML y XPATH representan posiciones y recuentos, por lo que, lógicamente, comienzan en uno (y, por lo tanto, cero es representativo de "vacío")
fuente
Para responder a esta pregunta, debemos examinar la historia de algunas tecnologías.
RSS XML XSLT e historial XPath
La versión 0.9 de RSS fue lanzada originalmente como Resumen del sitio RDF en 1999 por un par de chicos de Netscape para el portal my.netscape.com de Netscape. Más tarde ese año, se le cambió el nombre a RSS (Rich Site Summary) con la actualización v0.91. El desarrollo del proyecto cambió de manos varias veces, pero la versión 1.0 de RSS se lanzó en diciembre de 2000. Con la actualización v1.0, RSS incluyó soporte para XML.
Durante 2002 v2.0 se lanzó en septiembre como RSS (Really Simple Syndication) y comenzó a evolucionar hasta convertirse en una importante tecnología de Internet. En su historia temprana, las fuentes RSS (y los datos XML que contenían) eran leídas por humanos en formato sin procesar. Los blogs y otras fuentes de noticias utilizaban fuentes RSS y XML para generar información continuamente actualizada. Dado que XML estaba siendo leído por simples mortales (no programadores), XPath y XSLT también debían ser fácilmente comprensibles, para que estos simples mortales no se sintieran abrumados por la complejidad al interactuar con él. Es por eso que XPath imita el estilo de las URI, que es algo con lo que los usuarios finales ya estaban familiarizados. Una de las concesiones hechas con el propósito de facilitar la lectura a los usuarios fue utilizar técnicas de numeración anticuadas, es decir, índices basados en 1 en lugar de índices basados en 0.
Aunque las fuentes RSS y XML se crearon para que la mayoría de las personas pudieran leerlas, los lectores de RSS se desarrollaron para proporcionar una interfaz más agradable para que los humanos leyeran las fuentes RSS. Ahora, los datos RSS y XML sin procesar se leen casi exclusivamente con algún tipo de lector o interfaz gráfica. XML todavía es de uso frecuente (quizás permanente) en la web, pero está enmascarado por elegantes interfaces gráficas de usuario para brindar una mejor experiencia a los usuarios finales.
* El término " meros mortales " se refiere a humanos que no son programadores.
fuente