Acesso a arrays baseado em zero não é erro - é um legado da forma como se indexa em C. É uma consequência da forma como "aritmética de ponteiros" funciona, e que é - pra quem trabalha com C e outras linguagens mais "perto do metal" - a maneira mais "natural" de pensar nesse tipo de indexação.
Em outras palavras: não é um erro, é uma escolha. Pode-se até argumentar que seja uma escolha ruim (ou que seja anacrônica ou contraproducente numa linguagem mais "abstrata"), mas é uma escolha que tem razão de existir e vários argumentos a favor (e contra).
Acesso a arrays baseado em zero não é erro - é um legado da forma como se indexa em C. É uma consequência da forma como "aritmética de ponteiros" funciona, e que é - pra quem trabalha com C e outras linguagens mais "perto do metal" - a maneira mais "natural" de pensar nesse tipo de indexação.
Em outras palavras: não é um erro, é uma escolha. Pode-se até argumentar que seja uma escolha ruim (ou que seja anacrônica ou contraproducente numa linguagem mais "abstrata"), mas é uma escolha que tem razão de existir e vários argumentos a favor (e contra).
Contar começando de 0 pra mim, que vejo do ponto de vista de um programador iniciante, é um erro. Mas é um erro bem pequeno, um "errinho".
O "hardware não sabe o que são matrizes. Arrays costumavam começar com 1. C decidiu fazer array igual a um espaço na memória e, portanto, a indexação por zero fazia sentido."
"Porque o mal que C impingiu ao mundo não se enraizou em todos os lugares? Fortran, LISP e Smalltalk começaram com 1. New Jersey começou com 0."
Mark Guzdial