¿Cuándo decidió FORTRAN los enteros con signo?

Aug 24 2020

Personalmente, siempre he sido de la opinión de que tendría sentido que el tipo de entero predeterminado no esté firmado, aunque ha pasado mucho tiempo desde que eso habría sido un tema de debate activo; C en la década de 1970 ya utilizaba por defecto enteros con signo, ni fue el primer idioma en hacerlo.

Me interesa exactamente cuándo, por qué y cómo se tomó la decisión por primera vez. En lenguaje ensamblador, no existe realmente un valor predeterminado; siempre especificas firmado o no firmado. Por lo tanto, deberíamos mirar los lenguajes de alto nivel (usando aquí la definición clásica de alto nivel como 'nivel superior que ensamblador'). El primer lenguaje de alto nivel significativamente influyente fue Fortran. Los estándares modernos de Fortran exigen que los compiladores traten las variables enteras como firmadas a menos que se especifique lo contrario.

¿Cuándo decidió Fortran esto? ¿La decisión ya se tomó en los primeros compiladores de Fortran? ¿Alguno de los compiladores de alguna máquina trató a los enteros como sin firmar?

Respuestas

21 Davislor Aug 24 2020 at 08:24

FORTRAN se desarrolló originalmente para la computadora IBM 704, que almacenaba números enteros en formato de signo y magnitud. En la documentación original, admite variables de punto fijo, que utilizaban el formato nativo de la máquina, variables de punto flotante y constantes de punto fijo sin signo , que estaban destinadas a números de línea y subíndices. Estos se traducirían en compensaciones que encajarían en los registros de índice de 704. Aparte de la indexación por esos tres registros, el 704 solo tenía un pequeño puñado de instrucciones para aritmética de enteros sin signo ACY y CAL(que podría agregar una palabra lógica al acumulador). También era posible hacer la multiplicación por constantes mediante una combinación de cambios y sumas, lo que era suficiente para calcular la dirección de un elemento de la matriz, pero no para realizar otra aritmética.

John Backus escribió más tarde: "Ciertamente no teníamos idea de que lenguajes casi idénticos al que estábamos trabajando se usarían para más de una computadora IBM, sin mencionar los de otros fabricantes".

No hubo una consideración seria de las variables enteras sin signo, porque la arquitectura para la que se diseñó FORTRAN no tenía ese tipo nativo. La decisión se tomó por esa razón técnica. Las consideraciones sobre cuán útil hubiera sido o no para la física computacional no fueron históricamente importantes para ella.

3 daboulet Aug 25 2020 at 01:47

Fortran se desarrolló teniendo en cuenta la informática científica. Los valores negativos claramente ocurren con bastante frecuencia cuando se hace computación científica o, para el caso, en muchos otros dominios de problemas que los desarrolladores del lenguaje podrían haber considerado.

El soporte de integrales sin firmar habría tenido algún valor, pero el lenguaje aún tendría que admitir tipos de integrales con signos. Dado que casi todos los valores sin signo interesantes se ajustan cómodamente dentro de una variable de entero con signo, es posible que hayan sentido que podían respaldar a su público objetivo (informática científica) al mismo tiempo que proporcionaban un nivel razonable de soporte para aquellos que realmente querían trabajar con valores sin signo. . Alternativamente, es posible que simplemente hayan decidido centrarse en la aritmética con signos sin hacer ningún esfuerzo real para considerar lo que podría significar apoyar la aritmética sin firmar simplemente porque su público objetivo casi todos necesitarían un lenguaje que respaldara los valores con signos.