- 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
,tcl
pelo 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
,vi
numeram 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?