Desde mi experiencia con la programación moderna y los lenguajes de secuencias de comandos, creo que la mayoría de los programadores generalmente están acostumbrados a referirse al primer elemento de una matriz por como índice.
¿Hay alguna ventaja sustancial en el uso de 1 ?
Estoy seguro de que he oído hablar de más idiomas además de Zsh que se comportan de manera similar con matrices; está bien para mí, ya que es igualmente conveniente.
Sin embargo, como los lenguajes de secuencias de comandos de shell lanzados anteriormente y ampliamente utilizados, como ksh y bash, todos usan 0, por qué ¿Alguien elegiría alterar este "estándar" común?
Mi respuesta inmediata a mi pregunta sería "por supuesto que no";
entonces, la única explicación que se me ocurre con respecto a esta "característica exclusiva" de las conchas sería "simplemente hicieron esto para mostrar un un poco más de su genial caparazón “.
Sin embargo, no sé mucho sobre Zsh o su historia, y existe una gran posibilidad de que mi teoría trivial sobre esto no tenga ningún sentido.
¿Hay alguna explicación para esto? ¿O es simplemente por gusto personal?
Respuesta aceptada:
- Prácticamente todas las matrices de shell (Bourne, csh, tcsh, fish, rc, es, yash) comienzan en 1. ksh es la única excepción que conozco (bash acaba de copiar ksh).
- Idiomas más interpretados en ese momento (principios de los 90):
awk
,tcl
al menos, y las herramientas que normalmente se usan desde el shell (cut -f1-3
,head -n 3
,sort -k1,3
,cal 1 2015
,comm -1
) comienzan en 1.sed
,ed
,vi
numere sus líneas desde 1… - zsh toma lo mejor de Bourne shell y csh. La matriz de shell de Bourne
[email protected]
comienza en 1. zsh es consistente con su manejo de[email protected]
(como en Bourne) o$argv
(como en csh). Vea lo confuso que es enksh
donde${@:0:1}
no le da el primer parámetro posicional, por ejemplo. - Un shell es una herramienta de usuario antes de ser un lenguaje de programación. Tiene sentido para la mayoría de los usuarios tener el primero elemento en
$a[1]
. También significa que el número de elementos es el mismo que el último índice (en zsh como en la mayoría de los otros shells excepto ksh, las matrices no escaso). a[1]
para el primer elemento es consistente cona[-1]
por lo último.
Entonces, en mi opinión, la pregunta debería ser:¿qué se metió en la cabeza de David Korn para hacer que sus arreglos comiencen en 0?