university titling remove page maketitle make how change date language-agnostic language-design

date - titling - Numeración de mes basada en cero



remove date latex (3)

El uso de cero para comenzar a contar es en realidad un truco de optimización de los programadores de ensamblado. En lugar de asignar 1 al registro de recuento, se XOR''ed el registro consigo mismo, que fue ligeramente más rápido en los ciclos de la CPU. Esto significaba que el conteo comenzaría con 0 y siempre estaría a la altura de los elementos, excluyendo el último.

Además, el uso de cero también es popular con aritmética de puntero en la que utilizaría un puntero de base apuntando a alguna memoria asignada, más un segundo puntero que estaría en una desviación con respecto a este puntero de base. Aquí, usar el valor cero tiene mucho sentido para apuntar el desplazamiento a la base del bloque de memoria. (La lógica de matriz general tiende a ser la dirección base más el tamaño de registro x de compensación).

¿Y números mensuales basados ​​en cero? A menudo, muchos entornos de programación calculan los datos como un número de días desde algunos datos predeterminados. El 31 de diciembre de 1899 es una fecha popular, aunque se han utilizado muchas otras fechas como fecha base. Todas las demás fechas se compensan desde esta base, y solo se almacenarán como un solo número. Las fracciones se usarían para indicar horas, minutos y segundos, donde 0,25 sería 24/4 = 6 horas. Por lo tanto, para transformar una fecha en una fecha real, todo lo que el entorno tiene que hacer es transformar este número en una fecha real.

Sin embargo, la combinación de matrices basadas en cero y valores de mes basados ​​en 1 genera un problema. Para obtener el nombre del mes del mes 9, debe obtener el elemento 8 de la matriz del mes. Algunos desarrolladores estarían felices de disminuir el número del mes antes de obtener su nombre. Otros prefirieron cambiar el mes a algo basado en cero, ya que la gente solo quiere saber el nombre, no el número. Es una visión personal.

Algunos de los lenguajes de programación más populares utilizan la numeración de los meses, que está desactivada por 1: JavaScript le viene a la mente, al igual que Java, y si la memoria sirve, C es otra. Tengo algunas preguntas:

  • Si va a ignorar la numeración de los meses utilizada por los laicos, ¿por qué no por coherencia también ignoran la numeración diaria utilizada por los laicos y numeran los días de cada mes comenzando desde 0?
  • ¿Por qué es esto tan común?
  • ¿De quién fue esta idea en primer lugar?

Es lo que es, y el enorme peso del software construido para esa suposición significa que va a estar disponible por un tiempo.

Mi opinión es que fue culpa de C, y todos esos otros lenguajes de Johnie vienen a conformarse con él.

Obtienes algunas situaciones divertidas de personas que no saben más. Uno de los pocos errores de Y2K que nuestro equipo encontró fue un sitio web que proclamaba con orgullo que el año era 19100 simplemente porque ellos prefijaban el año de la struct tm con el literal "19".


Sí, los romanos también tuvieron problemas con cero.

Esto es solo una consecuencia [no-intuitiva] de las matemáticas (siendo un componente fuerte de la programación, especialmente la programación temprana) definiendo cero como el primer (término problemático) número real, positivo * natural, y dado que una matriz está indexada con real , números naturales, el "primer" elemento está en el índice 0.

Los meses son valores realmente nombrados en una matriz, donde los días y los años son valores numerados; quizás sería más útil pensar días / años en matrices que se parecen a {"1", "2", "3",. ..} ellos mismos.

En cuanto a por qué esto es tan común (además de ser matemáticamente correcto), todos los idiomas que has enumerado descienden de un origen común para una cosa ...

Editar:

Mirando más adentro, este enlace de wikipedia detalla varias buenas e interesantes razones para la indexación cero (que no habla directamente de por qué los meses tienen índice cero pero creo que eso ya está cubierto), y este enlace SO ha respondido la pregunta anteriormente.

Parece que la opinión predominante es "accidente histórico" o "porque los meses no son números, por lo que no se pueden comparar con el almacenamiento de día / año", según a quién se lo pregunte.

* Lo siento, lo siento, ¡física! = Las matemáticas vuelven para morderme allí. Fuera para planchar mis manos ahora.