Argumento de autoridad
Bueno ... Aparentemente, la mayoría de los idiomas, incluidos los más recientes, están basados en cero. Como esos idiomas fueron escritos por personas bastante hábiles, tu amigo debe estar equivocado ...
¿Por qué uno?
¿Por qué 1 sería un mejor índice inicial que cero? ¿Por qué no 2 o 10? La respuesta en sí es interesante porque muestra mucho sobre el proceso de las personas que defienden la idea.
El primer argumento es que es más natural, porque el primero suele ser el primero que todos los demás, al menos, para la mayoría de las personas ...
El argumento número uno es que el último índice también es el tamaño de la matriz ...
Todavía estoy impresionado por la "calidad" de las razones por las que generalmente escucho este tipo de argumentos ... Y aún más cuando me recuerdan que ...
¿Por qué no cero?
... Las anotaciones "basadas en uno" son sobras de la cultura occidental que ignoraron la existencia de cero durante siglos, si no más.
Lo creas o no, el calendario gregoriano original va de -3, -2, -1, 1, 2, 3 ... Intenta imaginar el problema que contribuyó a la ciencia occidental (por ejemplo, cuántos años desde el 1 de enero -2 al 1 de enero 2 para ver que el calendario gregoriano original entra en conflicto con algo tan simple como la sustracción ...).
Mantenerse en matrices basadas en uno es como (bueno, me rebajarán por eso ... ^ _ ^ ...), mantener millas y yardas en el siglo XXI ...
¿Por qué cero? ¡Porque es matemática!
Primero (Oops ... lo siento ... lo intentaré de nuevo)
Zero , Zero no es nada, uno es algo. Y algunos textos religiosos sostienen que "Al principio, no había nada". Algunas discusiones relacionadas con la computadora pueden ser tan ardientes como los debates religiosos, por lo que este punto no está tan fuera de los temas como parece ... ^ _ ^
Primero , es más fácil trabajar con una matriz basada en cero e ignorar su valor cero que trabajar con una matriz basada en uno y piratear para encontrar su valor cero. Esta razón es casi tan estúpida como la anterior, pero luego, el argumento original a favor de las matrices basadas en uno también fue una gran falacia.
En segundo lugar , recordemos que cuando se trata de números, hay muchas posibilidades de que trates con las matemáticas en un momento u otro, y cuando tratas con las matemáticas, hay muchas posibilidades de que no estés de humor para que los estúpidos piratas eviten las convenciones obsoletas. La notación basada en Uno plagó las matemáticas y las fechas durante siglos también, y al aprender de nuestros errores, debemos esforzarnos por evitarla en las ciencias orientadas al futuro (incluidos los lenguajes informáticos).
En tercer lugar , en cuanto a las matrices de lenguaje informático vinculadas al hardware, asigne una matriz C de 21 enteros y mueva los 10 índices de puntero a la derecha, y tendrá una matriz natural [-10 a 10]. Esto no es natural para el hardware. Pero es para las matemáticas. Por supuesto, las matemáticas podrían ser obsoletas, pero la última vez que lo revisé, la mayoría de las personas en el mundo creían que no.
Cuatro , como ya se señaló en otra parte, incluso para una posición discreta (o distancias reducidas a valores discretos), el primer índice sería cero, como el piso de un edificio (comenzando en cero), la cuenta regresiva decreciente (3, 2, 1, CERO !), la altitud del suelo, el primer píxel de una imagen, la temperatura (cero Kelvin, para el cero absoluto, o cero grados centígrados, como temperatura de congelación del agua de 273 K). De hecho, lo único que realmente comienza con uno es la forma tradicional de " primero , segundo , tercero , etc." Notación de iteración , que me lleva naturalmente al siguiente punto ...
Cinco, el siguiente punto (que sigue naturalmente al anterior ) es que se debe acceder a los contenedores de alto nivel, no por índice, sino por iteradores , a menos que los índices tengan un valor intrínseco. Me sorprende que su defensor del "lenguaje de nivel superior" no haya mencionado eso. En el caso de que el índice en sí sea importante, puede apostar la mitad del tiempo que tiene en mente una pregunta relacionada con las matemáticas. Y por lo tanto, le gustaría que su contenedor sea amigable con las matemáticas, y no con discapacidades matemáticas como "su antiguo calendario gregoriano" que comienza en 1, y necesita hacks regurgitados para que funcione.
Conclusión
El argumento presentado por su compañero programador es una falacia porque vincula innecesariamente los hábitos de lenguaje hablado / escrito, que son, por naturaleza, borrosos, a los lenguajes de computadora (donde no quiere que su instrucción sea borrosa), y porque atribuye incorrectamente un hardware razón para este problema, él. Ella espera convencerlo, a medida que los lenguajes van más y más abstractos, que la matriz basada en cero es cosa del pasado.
Las matrices basadas en cero se basan en cero debido a razones relacionadas con las matemáticas. No por razones relacionadas con el hardware.
Ahora, si esto es un problema para su compañero programador, haga que comience a programar con construcciones de alto nivel reales, como iteradores y bucles foreach.