¿Por qué no hay una biblioteca estándar fortran?


10

Para ser un lenguaje centrado en las matemáticas y la computación científica, siempre estoy desconcertado por la falta total de rutinas matemáticas útiles en la biblioteca estándar de Fortran. Uno esperaría que se envíe al menos con una rutina para calcular la desviación estándar y la media, pero este no es el caso. En particular, con la introducción de Fortran 90 y la adición de módulos (reduciendo así la contaminación del espacio de nombres), no veo ninguna razón por esta crítica falta de servicios.

Me gustaría escuchar su conocimiento sobre por qué este es el caso.


Han pasado 20 años desde que usé fortran y en esos días no presté tanta atención a lo que decían los estándares que solo usé lo que sucedió en las máquinas. Descubrí que la cantidad de bibliotecas matemáticas disponibles eran enormes y consistentes en todas las máquinas que usaba. Me pregunto si esto se debe a que, aunque las bibliotecas no son estándar, ¿son ubicuas? (No tengo idea de que es una pregunta).
Martin York

Respuestas:


17

Cuando se desarrolló FORTRAN, no existía la portabilidad del código. Era absolutamente rutinario para el compilador FORTRAN en una máquina aceptar un lenguaje ligeramente diferente que el compilador en otra máquina. La variación más común fue la longitud del nombre. El IBM 1130 FORTRAN permitió cinco caracteres, el DEC-10 permitió seis, el CDC 6600 (mi primera máquina, mi primer lenguaje de ensamblaje real) permitió siete. Las matrices tridimensionales fueron requeridas por el lenguaje; al menos un miniordenador (¿Varian 76?) FORTRAN permitió matrices de siete dimensiones.

Las empresas ampliaron habitualmente sus idiomas FORTRAN, para que sus máquinas fueran más atractivas para los clientes y, aunque las extensiones podrían proporcionar una funcionalidad similar, nunca fueron idénticas. Muchos compiladores proporcionaron extensiones para hacer E / S de archivos y administración de superposición, y nunca fueron idénticos. A veces ni siquiera estaban cerca.

Las conversiones de FORTRAN a FORTRAN, portar un programa de una máquina a otra, era una industria casera muy ocupada, y los tipos que podían hacerlo siempre podían encontrar trabajo. (Trabajé en dos de esas conversiones: ayudé a portar el juego original "Star Trek" de Matuszek-Reynolds-McGehearty-Cohen del CDC 6600 al DEC-10, y porté un programa de análisis de EKG de Varian 76 a TI 990. No hay dos tales proyectos fueron idénticos)

Este tipo de cosas hacía muy, muy difícil proporcionar bibliotecas "estándar", aunque algunas personas lo intentaron. La biblioteca IMSL era la más grande, pero se enviaba en forma de código fuente y se requería que el cliente funcionara en su sistema.

Además: se esperaba que los programadores de FORTRAN tuvieran una formación razonable en métodos numéricos. Casi todos los programadores de FORTRAN en el planeta en esos días aprendieron a hacer desviaciones estándar y malas para sí mismos, como tarea. Todos los programadores de FORTRAN aprendieron bisección e iteración Newton-Raphson (hoy en día llamado "Método de Newton") en la escuela. Los métodos de Runge-Kutta se enseñaron, generalmente de memoria, y, en ese momento, los integradores de Runge-Kutta de sexto orden eran ejemplos de libros de texto. (Fue mucho más tarde que la gente descubrió que Runge-Kutta de cuarto orden era el "punto óptimo" en la curva de rentabilidad).

Y: los programadores RARAMENTE cambiaron las computadoras sin cambiar también los trabajos. Se esperaba que los programadores que se movieron y se les exigiera que fueran muy buenos para aprender cómo funcionaban los nuevos sistemas y para detectar las diferencias.

En ese entorno, habrá muy poca necesidad de un código STDDEV "estándar", cuando era algo que cualquier programador FORTRAN de nivel de entrada competente podría escribir mientras dormía.


> También: se esperaba que los programadores de FORTRAN tuvieran una base razonable en métodos numéricos, a diferencia de hoy, cuando parece que la primera habilidad de los programadores es aprender a usar google :-)
AndersK

3
Todos usaron NAG de todos modos
Martin Beckett el

1
@ MartinBeckett: Esto fue mucho antes de NAG.
John R. Strohm

1
@Rook, me temo que estás destinado a estar terriblemente decepcionado.
John R. Strohm

1
@Rook Definitivamente puedo hacerlo, pero no tengo idea de que lo haría de manera eficiente y numéricamente estable en el primer intento.
Ixrec

2

Personalmente, creo que este hecho se debe a la biblioteca MKL . Si está buscando una biblioteca matemática de alto rendimiento, entonces MKL es lo que necesita. No es tan caro, y un laboratorio que realiza computación matemática en sus proyectos puede permitírselo.


¿Le importaría explicar esto con más detalle? ¿Cómo y por qué responde a la pregunta que se hace? Las "respuestas de solo enlace" no son del todo bienvenidas en Stack Exchange
mosquito



-1

El lenguaje FORmulaTRANslation fue diseñado para facilitarle la escritura de sus propias fórmulas. ¿Por qué debería Fortran definir una función media cuando puede escribir en Fortran 90 en adelante?

xmean = sum (x) / max (tamaño (x), 1)?


3
Está suponiendo que la matriz x está llena de valores. Por lo general, esta es una suposición muy mala.
John R. Strohm
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.