Executando verificação de segurança...
Em resposta a [Não disponível]
2

Eu acho que a questão é similar ao caso do teclado QWERTY. Pode não ser o ideal, não faz sentido em muitos contextos (a disposição das teclas leva em conta, entre outros fatores, a frequência de cada caractere, então para muitos idiomas ele é o menos ideal), mas está tão disseminado e as pessoas já se acostumaram tanto a ele, que tentar criar outro padrão só deixaria tudo mais confuso (até existem teclados alternativos, mas exigem adatapção e no fim o QWERTY ainda é dominante).

Na maioria das linguagens mainstream, o primeiro índice é zero. Muita gente já se acostumou com isso, e qualquer coisa diferente acaba ferindo o princípio da menor surpresa. Provavelmente é influência do C (que tinha motivos práticos pra ser assim), e/ou também do famoso artigo do Dijkstra. Tem uma discussão interessante aqui também.

Admito que o primeiro índice ser zero causa um estranhamento na primeira vez que vc vê (assim como o teclado QWERTY), mas depois que acostuma, passa a ser "natural".

E talvez as pessoas que criam linguagens simplesmente adotam esse mesmo padrão por estarem acostumadas e não haver motivos práticos para mudar algo tão disseminado na área.

Quanto ao erro de off-by-one mencionado, é algo que pode ser facilmente contornado. A maioria das linguagens atuais possuem loops que percorrem os elementos de array sem precisar dos índices (foreach, for..of, etc).


Claro que quem for criar uma linguagem pode definir do jeito que quiser. Mas para fazer algo diferente do que a maioria faz (ainda mais se for algo tão disseminado), tem que ter uma boa justificativa. Se as pessoas vão comprar sua ideia ou não, é outra história.

Carregando publicação patrocinada...