Perché nessuna libreria standard fortran?

10

Per essere un linguaggio incentrato sulla matematica e il calcolo scientifico, sono sempre sconcertato dalla totale mancanza di routine matematiche utili nella libreria standard di Fortran. Ci si aspetterebbe che fosse spedito almeno con una routine per calcolare la deviazione standard e la media, ma non è questo il caso. 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 fondamentale mancanza di servizi.

Mi piacerebbe sapere la tua conoscenza del perché questo è il caso.

    
posta Stefano Borini 01.02.2011 - 12:13
fonte

5 risposte

17

Indietro quando FORTRAN è stato sviluppato, non esisteva la portabilità del codice. Era assolutamente normale che il compilatore FORTRAN su una macchina accettasse un linguaggio leggermente diverso da quello del compilatore su un'altra macchina. La variante più comune era la lunghezza del nome. IBM 1130 FORTRAN consentiva cinque caratteri, il DEC-10 ne consentiva sei, il CDC 6600 (la mia prima macchina, il mio primo vero linguaggio assembly) ne consentiva sette. Gli array tridimensionali erano richiesti dal linguaggio; almeno un minicomputer (Varian 76?) FORTRAN consentiva matrici a sette dimensioni.

Le aziende estendevano regolarmente le loro lingue FORTRAN, per rendere le loro macchine più attraenti per i clienti e, mentre le estensioni potevano offrire funzionalità simili, non erano mai identiche. Molti compilatori hanno fornito estensioni per eseguire I / O su file e gestione 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, erano un'industria molto caotica, ei ragazzi che potevano farlo potevano sempre trovare lavoro. (Ho lavorato a due di queste conversioni: ho aiutato a portare il gioco originale "Star Trek" di 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 due tali progetti erano identici.)

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

Inoltre: i programmatori FORTRAN dovevano avere un ragionevole background in metodi numerici. Quasi tutti i programmatori FORTRAN sul pianeta in quei giorni hanno imparato come fare la deviazione media e standard per se stesso, come compito a casa. Ogni programmatore FORTRAN ha imparato la bisezione 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 sesto ordine erano esempi da manuale. (Fu molto più tardi che la gente capì che il 4 ° ordine di Runge-Kutta era il "punto debole" sulla curva del rapporto costo-efficacia).

E: I programmatori hanno RAPIDAMENTE cambiato i computer senza cambiare lavoro. I programmatori che si muovevano in giro erano attesi E NECESSARI essere molto bravi a imparare come funzionavano i nuovi sistemi e a raccogliere le differenze.

In quell'ambiente, ci sarà ben poca richiesta di un codice STDDEV "standard", quando era qualcosa che qualsiasi programmatore FORTRAN competente entry-level poteva scrivere nel sonno.

    
risposta data 01.02.2011 - 14:18
fonte
2

Personalmente ritengo questo fatto a causa della MKL biblioteca. Se stai cercando una libreria matematica ad alte prestazioni, allora MKL è ciò di cui hai bisogno. Non è così costoso, e un laboratorio che esegue calcoli matematici nei suoi progetti può permetterselo.

    
risposta data 01.02.2011 - 12:46
fonte
1

cernlib ha fatto molto di ciò che chiedi per le persone che lavorano nella fisica delle alte energie ed è ancora utile .

    
risposta data 01.02.2011 - 14:33
fonte
0

BLAS e LAPACK sono di fatto librerie Fortran standard.

    
risposta data 21.05.2012 - 13:21
fonte
-1

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

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

    
risposta data 14.02.2011 - 23:54
fonte

Leggi altre domande sui tag