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).
Eu chamaria apenas de "decisão errada". O fato de ter vindo de Erlang ou não pouco importa.
Erlang não tem um
Enum
, certo? O mais próximo deEnum
, mas que é conceitualmente diferente, élists
.Não faz diferença no que eu considero "erro" o fato da documentação da função
Enum.at
descrever exatamente o que ela faz. Não é um bug.O "erro" (sempre entre aspas) se repete em Elixir no módulo
List
, nas funçõesdelete_at
,pop_at
e provavelmente outras.Nada que me impeça de amar Elixir.
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