Le richieste che hai posto in realtà mettono Fortran in cima alla lista, per problemi come questo:
a) numero scricchiolante
b) paralellabile
c) era ed è ancora la lingua di fatto insegnata al di fuori degli studi cs (agli ingegneri che non sono programmatori professionisti).
d) ha un incredibile (!) sostegno del settore, per quanto riguarda il numero di compilatori di livello industriale, con nessuno dei venditori che mostra i minimi segni di abbandono di quel ramo. Uno dei rappresentanti di Intel non molto tempo fa ha rivelato che le vendite dei loro prodotti Fortran sono superiori a qualsiasi altra nei loro strumenti di sviluppo.
È anche una lingua che è incredibilmente facile da imparare. Non sono d'accordo sul fatto che ci vuole tempo per accelerare gli assistenti di ricerca. Il mio primo libro di testo non conteneva più di, oh, non lo so, 30 (?) Pagine di testo stampato sparse. È una lingua in cui dopo aver appreso 10 parole chiave, si possono scrivere programmi di medie dimensioni. Oserei dire che quelle 30 pagine scritte nel testo predefinito di Word renderebbero un "manuale Fortran" più completo per la maggior parte degli utenti.
Se sei interessato a CUDA, potresti voler controllare il compilatore di Portland Group , che lo supporta . Non ho familiarità con i dettagli più fini, ma la gente generalmente ne parla con lode.
A parte questo, per i programmi in parallelo hai a disposizione OpenMP, MPI e ora i prossimi (e tanto attesi) co-array, che il compilatore Intel ha recentemente implementato. Per non sprecare parole, Fortran ha una gamma molto fine di "librerie" per parallelizzare i programmi.
Le librerie numeriche standard del settore sono sviluppate principalmente per questo, altre lingue seguono più o meno nel portafoglio funzioni / routine.
Detto questo, consiglierei comunque (dipende da quando è stato scritto in origine) se diciamo, codice F77 o precedente, riscrivendolo parzialmente nel tempo a dialetti più recenti - almeno F90, se possibile con le funzionalità F2003. Di recente è stato pubblicato un documento / tesi sull'argomento (file PDF di medie dimensioni in anticipo). Non solo ciò, se fatto correttamente, garantisce la portabilità su più piattaforme, ma renderà anche più facile la manutenzione futura.
ps Per quanto riguarda la "manutenzione futura", solo un aneddoto che a volte mi piace menzionare. Mentre scrivevo la mia tesi, ho riutilizzato un po 'di codice dal mio mentore, scritto 35 anni fa dal momento in cui ho scritto. Si è compilato con un solo errore; una dichiarazione mancante alla fine, a causa di un errore di copia incolla :)
@DaveMateer (risposta al commento) - Farò un commento nel seguito che può essere un po 'scortese, ma per favore non prenderlo nel modo sbagliato, perché è nelle giuste intenzioni.
Mi sembra che tu stia affrontando questo "problema" in modo sbagliato. Cosa intendo in alcuni punti brevi (perché è molto tardi qui, e la mia capacità di inventare frasi leggibili (per non parlare comprensibili) mi lascia dopo le 22:00)
a) hai detto che stai cercando di ridurre al minimo i tempi di codifica aggiuntivi, ma stai prendendo in considerazione una riscrittura da una lingua specializzata in calcolo numerico a una da una scelta colorata di lingue , se perdonerai la mia espressione
- alcuni dei quali non supportano matrici multidimensionali, tra le altre cose
- la maggior parte di questi non è adatta per lavori numerici pesanti (ammetto che Haskell e Hadoop hanno capacità di elaborazione parallele, non ne so nulla ... ma non li ho mai sentiti menzionati nemmeno in quegli ambienti)
- forse è stato provato, ma non ho mai sentito parlare di una riscrittura da Fortran, un linguaggio per problemi discretizzati, in un linguaggio funzionale
- recentemente c'è stata una discussione su comp.lang.fortran (prova a cercare tra i gruppi di google) sugli aspetti dell'informatica scientifica "nel cloud"
(non mi piacerebbe de-motivarti, ma ad essere onesti, nessuno era davvero sicuro di ciò che quel termine rappresenti, meno da solo ha avuto un esempio di un'applicazione di successo. La maggior parte delle persone ha concordato che esiste il potenziale, ma finora sono felici del modo in cui le cose funzionano per ora.). Molti problemi non sono adatti nemmeno per quel tipo di parallelizzazione.
b) quali sarebbero i costi di tale riscrittura? persone / ora.
c) -corretta versione delle librerie da compilare ...- è un problema in qualsiasi lingua, che non può essere evitato, comunque tu lo guardi.
d) Ho sentito parlare di Python (un bel linguaggio davvero) usato in applicazioni parallele in alcune occasioni, ma la sua penetrazione in quel mercato non sembra ancora essere in aumento, e la sua natura in continua evoluzione lo rende una scelta molto scarsa per un progetto a lungo termine (pensa alla retrocompatibilità). Ad alcune persone piace molto come un linguaggio "colla".
Se penso a qualcos'altro, lo aggiungerò domani. Devo dormire un po '...