¿Por qué el operador% se conoce como operador de "módulo" en lugar de operador de "resto"?

Hoy en el trabajo tuve una discusión interesante con uno de mis compañeros de trabajo. Se sorprendió cuando le sucedió lo siguiente:

assert(-1 % 10 == -1)  //Expecting 9

Así que cuando vino a preguntarme al respecto, le dije "bueno, eso tiene sentido. Cuando divides -1 por 10, obtienes 0 con -1 restante. Sin embargo, su argumento fue que se supone que el operador del módulo es cierto al modelo "siempre positivo". Investigué un poco y descubrí que el módulo al que se refería se ve así:

Deje que q sea el cociente entero de a y n. Sea r el resto. Luego

a = n * q + r

La definiciónI estaba usando, sin embargo, parece ser la versión Knuth del módulo, que es:

Deje q ser el piso de un dividido por n. Sea r el resto. Luego

r = a - n * q

Entonces, mi pregunta es ¿por qué terminó en el estándar FORTRAN (y posteriormente en el estándar C) para que el operador del módulo se truncara hacia 0? Me parece un nombre inapropiado llamarlo "módulo" y no "resto" (en matemáticas, la respuesta realmente debería ser 9). ¿Está esto relacionado con cómo el hardware está haciendo la división?

Para referencia

Wikipedia en ModulusMSDN entrada en el operador "módulo"
(Sí, me doy cuenta de que es para VS2003 ... Actualmente estoy atascado con eso. Sadface) Cambios de operador de módulo No asuma el resto positivo ...

TLDR; ¿Es el hardware la razón por la cual el operador del módulo se trunca hacia 0?

Respuestas a la pregunta(6)

Su respuesta a la pregunta