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

Talvez seja "estranho" porque na maioria das linguagens mainstream os índices começam em zero, e haja esforço cognitivo no começo pra se acostumar :-)

Pra variar, existem prós e contras em ambas as abordagens, além de motivos históricos pra certas escolhas terem sido feitas - alguns citados aqui. Inclusive neste link é citado o famoso artigo de Dijkstra, que pela fonte é meio difícil de ler, mas tem uma análise dele aqui - basicamente, é mais uma herança da matemática (e mais uma prova da profunda ligação entre matemática e computação, que tantos "cursos" por aí insistem que não existe).

Aqui também tem uma discussão interessante sobre o assunto.

Carregando publicação patrocinada...
Conteúdo excluído
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...

1

0 não é pra ser nem positivo e nem negativo. Nem par e nem impar. Nem inteiro. Ele é valor nulo.

É questão de gosto.

No mestrado, eu pegava uma expressão matemática e as vezes ficava mais fácil de traduzir para linguagem com indice 0 (Python), outrora 1 (Julia).

Creio que a utilização do 0 foi mais influência do C do que outra coisa.

Fortran existe desde a década de 50 e até hoje, sendo uma das linguagens com melhores performances, utiliza indice iniciado em 1. Julia, que é mais recente, e uma das mais rápidas, também utiliza indice 1.