- Praticamente todos os arrays de shell (Bourne, csh, tcsh, fish, rc, es, yash) começam em 1. ksh é a única exceção que eu conheço (bash apenas copiou ksh).
- Idiomas mais interpretados no momento (início dos anos 90):
awk,tclpelo menos e ferramentas normalmente usadas no shell (cut -f1-3,head -n 3,sort -k1,3,cal 1 2015,comm -1) começam em 1.sed,ed,vinumeram suas linhas de 1 ... - zsh pega o melhor do shell Bourne e do csh. O conjunto de shell Bourne
$@inicia em 1. zsh é consistente com seu tratamento de$@(como em Bourne) ou$argv(como em csh). Veja como é confuso emksh, em que${@:0:1}não fornece o primeiro parâmetro posicional, por exemplo. - Um shell é uma ferramenta do usuário antes de ser uma linguagem de programação. Faz sentido para a maioria dos usuários ter o elemento primeiro em
$a[1]. Isso também significa que o número de elementos é o mesmo que o último indice (em zsh, como na maioria das outras shells, exceto ksh, as matrizes não são esparsas). -
a[1]para o primeiro elemento é consistente coma[-1]para o último.
Então, a pergunta da IMO deve ser: o que deu na cabeça de David Korn para fazer suas matrizes começarem em 0?