Argumento de autoridade
Bem ... Aparentemente, a maioria dos idiomas, incluindo os mais recentes, é baseada em zero. Como essas línguas foram escritas por pessoas muito qualificadas, seu amigo deve estar errado ...
Por que um?
por que 1 seria um índice inicial melhor que zero? Por que não 2 ou 10? A resposta em si é interessante porque mostra muito sobre o processo de pensamento das pessoas que defendem a ideia.
O primeiro argumento é que é mais natural, porque o primeiro é geralmente o primeiro de todos os outros, pelo menos para a maioria das pessoas ...
O argumento número um é que o último índice também é o tamanho da matriz ...
Ainda estou impressionado com a "qualidade" das razões que costumo ouvir para esse tipo de argumento ... E ainda mais quando me lembro disso ...
Por que não zero?
... Notações "baseadas em uma" são restos da cultura ocidental que ignoraram a existência de zero por séculos, se não mais.
Acredite ou não, o calendário gregoriano original vai de -3, -2, -1, 1, 2, 3 ... Tente imaginar o problema que isso contribuiu para a ciência ocidental (por exemplo, quantos anos a partir de 1º de janeiro de -2 até 1º de janeiro de 2 para ver que o calendário gregoriano original entra em conflito com algo tão simples quanto a subtração ...).
Manter matrizes de base única é como (bem, eu vou ser modificado para isso ... ^ _ ^ ...), mantendo milhas e jardas no século 21 ...
Por que Zero? Porque é matemática!
Primeiro (Opa ... Desculpe ... vou tentar novamente)
Zero , Zero não é nada, um é alguma coisa. E alguns textos religiosos afirmam que "no começo não havia nada". Algumas discussões relacionadas ao computador podem ser tão ardentes quanto os debates religiosos, portanto, este ponto não está tão fora de tópicos quanto parece ... ^ _ ^
Primeiro , é mais fácil trabalhar com uma matriz com base em zero e ignorar seu valor zero-th do que trabalhar com uma matriz com base em um e vasculhar para encontrar seu valor-zero. Esse motivo foi quase tão estúpido quanto o anterior, mas o argumento original a favor de matrizes baseadas em uma era também uma falácia.
Segundo , lembre-se de que, ao lidar com números, as chances são altas de lidar com a matemática em um momento ou outro, e quando você lida com a matemática, as chances são boas e você não está com disposição para hackers estúpidos evitarem convenções obsoletas. A notação baseada em One também atormentou a matemática e as datas por séculos, e aprendendo com nossos erros, devemos nos esforçar para evitá-la nas ciências orientadas para o futuro (incluindo linguagens de computador).
Terceiro , quanto às matrizes de linguagem de computador vinculadas ao hardware, aloque uma matriz C de 21 números inteiros e mova o indicador 10 índices para a direita, e você terá uma matriz natural [-10 a 10]. Isso não é natural para o hardware. Mas é para matemática. É claro que a matemática pode ser obsoleta, mas na última vez que verifiquei, a maioria das pessoas no mundo acreditava que não.
Quatro , como já apontado em outro lugar, mesmo para posições discretas (ou distâncias reduzidas para valores discretos), o primeiro índice seria zero, como o piso de um prédio (começando em zero), a contagem decrescente (3, 2, 1, ZERO !), a altitude do solo, o primeiro pixel de uma imagem, a temperatura (zero Kelvin, para o zero absoluto, ou zero graus centígrados, como temperatura de 273 K na temperatura de congelamento da água). De fato, a única coisa que realmente começa com uma é a maneira tradicional de " primeiro , segundo , terceiro etc." notação de iteração , o que me leva naturalmente ao próximo ponto ...
Cinco o próximo ponto (que, naturalmente, segue o anterior ) é que os recipientes de alto nível deve ser alcançado, e não pelo índice, mas por iterators , a menos que os índices próprios têm um valor intrínseco. Estou surpreso que seu advogado de "linguagem de nível superior" não tenha mencionado isso. No caso de o índice em si ser importante, você pode apostar na metade do tempo com uma pergunta relacionada à matemática. E assim, você gostaria que seu contêiner fosse compatível com matemática e não com desabilitação de matemática, como "o teu velho calendário gregoriano" a partir de 1, e precisando de hacks regurgitados para fazê-lo funcionar.
Conclusão
O argumento de seu colega programador é uma falácia, porque vincula desnecessariamente hábitos de linguagem falada / escrita, que são, por natureza, borrados, a linguagens de computador (onde você não quer que suas instruções sejam borradas) e porque atribuem incorretamente um hardware Em razão desse problema, ele. Ela espera convencê-lo, à medida que as linguagens aumentam cada vez mais na abstração, de que a matriz baseada em zero é uma coisa do passado.
Matrizes baseadas em zero são baseadas em zero devido a razões relacionadas à matemática. Não por razões relacionadas a hardware.
Agora, se esse é um problema para o seu colega programador, peça para ele começar a programar com construções reais de alto nível, como iteradores e loops de foreach.