Executando verificação de segurança...
Respondendo a [Não disponível] dentro da publicação [Não disponível]
1

É como eu disse, ambas as abordagens tem prós e contras. O fato é que a maioria adotou o início em zero, e qualquer coisa diferente disso causa estranhamento.

Na verdade, qualquer coisa diferente do que a gente aprendeu primeiro é "estranho" à primeira vista (imagino que se alguém começa na programação aprendendo Lua e depois vai para outras linguagens, vai achar esquisito começar em zero).


Enfim, além da justificativa matemática, talvez tenha também alguma influência do C nessa história (já que várias linguagens mainstream chupinham muita coisa do C). Mas aí é chute meu, não fiz uma pesquisa sobre.

Em C, v[n] (seja v um ponteiro ou um array) é o mesmo que *(v + n), ou seja, pega n elementos à frente do início de v. Portanto v[0] é o mesmo que o elemento que está no endereço onde v aponta, e portanto o "primeiro". Então a forma como a linguagem funciona acabou meio que "determinando" que deve iniciar em zero.

Daí pra outras linguagens - que já estavam se baseando na sintaxe do C - adotarem a mesma convenção, deve ter sido uma decisão quase que automática, imagino eu.

Mas acho que o artigo do Dijkstra deve ter tido mais peso. Não sei, fica a deixa para uma pesquisa futura...

Carregando publicação patrocinada...