Perché nessuna libreria standard fortran?


10

Per essere un linguaggio incentrato sulla matematica e sull'informatica scientifica, sono sempre sconcertato dalla totale mancanza di utili routine matematiche nella biblioteca standard di Fortran. Ci si aspetterebbe che fosse spedito almeno con una routine per calcolare la deviazione standard e la media, ma non è così. In particolare con l'introduzione di Fortran 90 e l'aggiunta di moduli (riducendo così l'inquinamento dello spazio dei nomi), non vedo alcun motivo per cui questa critica mancanza di servizi.

Vorrei sentire la tua conoscenza del perché questo è il caso.


Sono passati 20 anni da quando ho usato fortran e in quei giorni non prestavo molta attenzione a ciò che gli standard dicevano che usavo solo quello che era successo sulle macchine. Ho scoperto che la quantità di librerie matematiche disponibili era enorme e coerente tra le macchine che ho usato. Mi chiedo se questo perché, sebbene le librerie non siano standard, sono onnipresenti? (Non ho idea che sia una domanda).
Martin York,

Risposte:


17

Ai tempi dello sviluppo di FORTRAN, non esisteva la portabilità del codice. Era assolutamente normale che il compilatore FORTRAN su una macchina accettasse un linguaggio leggermente diverso rispetto al compilatore su un'altra macchina. La variante più comune era la lunghezza del nome. L'IBM 1130 FORTRAN consentiva cinque caratteri, il DEC-10 ne consentiva sei, il CDC 6600 (la mia prima macchina, il mio primo linguaggio di assemblaggio reale) ne consentiva sette. Le matrici tridimensionali erano richieste dalla lingua; almeno un minicomputer (Varian 76?) FORTRAN ha consentito array a sette dimensioni.

Le aziende estendevano abitualmente le loro lingue FORTRAN, per rendere le loro macchine più interessanti per i clienti e, sebbene le estensioni potessero fornire funzionalità simili, non erano mai identiche. Molti compilatori hanno fornito estensioni per eseguire l'I / O dei file e la gestione degli overlay, e non sono mai stati identici. A volte non erano nemmeno vicini.

Le conversioni da FORTRAN a FORTRAN, il porting di un programma da una macchina all'altra, era un'industria di cottage molto impegnata, e i ragazzi che potevano farlo potevano sempre trovare lavoro. (Ho lavorato due di queste conversioni: ho aiutato il porting del gioco originale "Star Trek" Matuszek-Reynolds-McGehearty-Cohen dal CDC 6600 al DEC-10, e ho portato un programma di analisi ECG da Varian 76 a TI 990. No two tali progetti erano identici).

Questo genere di cose ha reso molto, molto difficile fornire librerie "standard", anche se alcune persone ci hanno provato. La libreria IMSL era la più grande, ma era spedita in forma di codice sorgente e al cliente era richiesto di farlo funzionare sul suo sistema.

Inoltre: ci si aspettava che i programmatori FORTRAN avessero un background ragionevole in metodi numerici. Quasi tutti i programmatori FORTRAN sul pianeta in quei giorni hanno imparato a fare la deviazione media e standard per se stesso, come compito a casa. Ogni programmatore FORTRAN ha imparato la bisection e l'iterazione di Newton-Raphson (oggi chiamata "Metodo di Newton") a scuola. I metodi di Runge-Kutta venivano insegnati, di solito a memoria, e, a quel tempo, gli integratori di Runge-Kutta del 6 ° ordine erano esempi di libri di testo. (È stato molto più tardi che la gente ha capito che Runge-Kutta del 4 ° ordine era il "punto debole" sulla curva del rapporto costo-efficacia.)

E: I programmatori hanno raramente cambiato computer senza cambiare lavoro. Quei programmatori che si sono mossi si aspettavano E RICHIESTAvano di essere molto bravi nell'apprendere come funzionavano i nuovi sistemi e nel raccogliere le differenze.

In quell'ambiente, ci sarà pochissima chiamata per un codice "standard" STDDEV, quando si tratta di qualcosa che qualsiasi programmatore FORTRAN di livello base competente potrebbe scrivere nel sonno.


> Inoltre: ci si aspettava che i programmatori FORTRAN avessero un background ragionevole nei metodi numerici - al contrario di oggi, quando sembra che i programmatori la prima abilità sia imparare come usare google :-)
AndersK,

3
Tutti usavano comunque NAG
Martin Beckett il

1
@MartinBeckett: era molto tempo prima di NAG.
John R. Strohm,

1
@Rook, temo che tu sia destinato ad essere orribilmente deluso.
John R. Strohm,

1
@Rook Posso sicuramente farli, ma non ho idea di farli in modo efficiente e numericamente stabile al primo tentativo.
Ixrec,

2

Personalmente penso che questo fatto sia dovuto alla libreria MKL . Se stai cercando una libreria matematica ad alte prestazioni, MKL è ciò di cui hai bisogno. Non è così costoso e un laboratorio che esegue calcoli matematici nei suoi progetti può permetterselo.


ti dispiacerebbe spiegarlo in modo più dettagliato - come e perché risponde alla domanda posta? Le "risposte solo link" non sono del tutto benvenute allo Stack Stack
moscerino



-1

Il linguaggio FORmulaTRANslation è stato progettato per semplificare la scrittura di formule personalizzate. Perché Fortran dovrebbe definire una funzione media quando è possibile scrivere in Fortran 90 in poi

xmean = sum (x) / max (size (x), 1)?


3
Stai presupponendo che l'array x sia pieno di valori. Questo di solito è un pessimo presupposto da fare.
John R. Strohm,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.