Die Anforderungen, die Sie gestellt haben, haben Fortran für Probleme wie dieses an die Spitze der Liste gesetzt:
a) Zahlenkalkulation
b) Paralellierbar
c) Es war und ist die De-facto- Sprache, die außerhalb des CS-Studiums unterrichtet wurde (für Ingenieure, die keine professionellen Programmierer sind).
d) hat einen unglaublichen (!) Branchen-Rückhalt, in Bezug auf die Anzahl der Industrie-Compiler, wobei keiner der Anbieter die geringsten Anzeichen dafür aufweist, diesen Zweig aufzugeben. Ein Vertreter von Intel hat vor kurzem bekannt gegeben, dass die Verkäufe seiner Fortran-Produkte in ihren Entwicklungstools höher sind als in allen anderen.
Es ist auch eine Sprache, die unglaublich einfach zu erlernen ist. Ich bin nicht einverstanden, dass es Zeit braucht, um wissenschaftliche Mitarbeiter auf den neuesten Stand zu bringen. Mein erstes Lehrbuch hatte nicht mehr als 30 (?) Seiten spärlich gedruckten Text. Es ist eine Sprache, in der man nach dem Erlernen von 10 Stichwörtern mittelgroße Programme schreiben kann. Ich würde sagen, dass diese 30 Seiten, die in Word-Standardtext geschrieben sind, für die meisten Benutzer ein umfassenderes "Fortran-Handbuch" darstellen.
Wenn Sie an CUDA interessiert sind, sollten Sie den Compiler der Portland Group überprüfen , der dies unterstützt . Ich kenne die feineren Details nicht, aber die Leute reden im Allgemeinen mit Lob darüber.
Außerdem stehen für die Parallelisierung von Programmen OpenMP, MPI und jetzt die kommenden (und lange erwarteten) Co-Arrays zur Verfügung, die Intels Compiler kürzlich implementiert hat. Um keine Worte zu verschwenden, hat Fortran ein sehr feines Gamma von "Bibliotheken" zum Parallelisieren von Programmen.
Zuallererst werden dafür standardisierte numerische Bibliotheken entwickelt, andere Sprachen folgen mehr oder weniger dem Funktions- / Routinenportfolio.
Abgesehen davon würde ich jedoch (je nachdem, wann es ursprünglich geschrieben wurde) empfehlen, wenn es sich beispielsweise um F77-Code oder älteren Code handelt, und ihn teilweise im Laufe der Zeit auf neuere Dialekte umschreiben - zumindest F90, wenn möglich mit F2003-Funktionen. Ein Papier / Diplomarbeit zu diesem Thema wurde vor kurzem veröffentlicht (mittlere Größe PDF - Datei vor). Wenn dies ordnungsgemäß durchgeführt wird, kann nicht nur die Portabilität über mehrere Plattformen sichergestellt, sondern auch die zukünftige Wartung vereinfacht werden.
ps Was "zukünftige Wartung" angeht, nur eine Anegdote, die ich manchmal erwähnen möchte. Während ich meine Diplomarbeit schrieb, habe ich einen Code von meinem Mentor wieder verwendet, der vor 35 Jahren ab dem Zeitpunkt des Schreibens geschrieben wurde. Es kompilierte mit nur einem Fehler; eine Aussage fehlt am Ende, aufgrund eines Kopierfehlers :)
@ DaveMateer (Antwort auf Kommentar) - Ich werde im Folgenden einen Kommentar abgeben, der vielleicht etwas unhöflich ist, aber verstehe es bitte nicht falsch, denn es liegt in den fairen Absichten.
Mir scheint, dass Sie dieses "Problem" falsch angehen. Was ich in ein paar kurzen Worten meine (denn hier ist es sehr spät, und meine Fähigkeit, lesbare (geschweige denn verständliche) Sätze zu formulieren, lässt mich nach 22 Uhr.)
a) Sie haben erwähnt, dass Sie versuchen, die zusätzliche Codierungszeit zu minimieren, erwägen jedoch eine Umschreibung von einer auf numerisches Rechnen spezialisierten Sprache in eine von einer farbenfrohen Sprachauswahl , wenn Sie meinen Ausdruck verzeihen
- Einige von ihnen unterstützen unter anderem keine mehrdimensionalen Arrays
- Die meisten von ihnen sind für schwere numerische Arbeiten ungeeignet (von Parallelverarbeitungsfähigkeiten von Haskell und Hadoop gebe ich zu, ich weiß nichts über ... aber ich habe sie noch nie in diesen Kreisen erwähnt)
- Möglicherweise wurde es versucht, aber ich habe noch nie von einem Umschreiben von Fortran, einer Sprache für diskretisierte Probleme, in eine funktionale Sprache gehört
- Kürzlich gab es eine Diskussion über comp.lang.fortran (versuchen Sie, in Google-Gruppen zu suchen) zu den Aspekten des wissenschaftlichen Rechnens "in der Cloud"
(ich möchte Sie nicht desmotivieren , aber um fair zu sein, war es niemand wirklich Sicher, was dieser Begriff überhaupt bedeutet, weniger allein hatte ein Beispiel für eine erfolgreiche Anwendung. Die meisten Leute waren sich einig, dass Potenzial vorhanden ist, aber bisher sind sie glücklich darüber, wie die Dinge im Moment funktionieren.). Viele Probleme eignen sich auch nicht für diese Art der Parallelisierung.
b) Was wären die Kosten für ein solches Umschreiben? Menschen / Stunden.
c) -korrekte Versionen der zu kompilierenden Bibliotheken ...- ist ein Problem in jeder Sprache, das nicht vermieden werden kann, wie auch immer Sie es betrachten.
d) Ich habe von Python (eine wirklich nette Sprache) gehört, das einige Male in parallelen Anwendungen verwendet wurde, aber seine Durchdringung dieses Marktes scheint immer noch nicht zuzunehmen, und seine sich ständig ändernde Natur macht es zu einer sehr schlechten Wahl für ein langfristiges Projekt (denken Sie an Abwärtskompatibilität). Manche Leute mögen es sehr als "Klebesprache".
Ugh, wenn ich an etwas anderes denke, werde ich es morgen hinzufügen. Muss ein bisschen schlafen ...