Les demandes que vous avez faites placent en fait Fortran en tête de liste, pour des problèmes comme celui-ci:
a)
calcul des nombres b) paralellable
c) c'était et est toujours la langue de facto enseignée en dehors des études cs (aux ingénieurs qui ne sont pas des programmeurs professionnels).
d) bénéficie d'un incroyable soutien de l'industrie (!), en ce qui concerne le nombre de compilateurs de qualité industrielle, aucun des fournisseurs ne montrant le moindre signe d'abandon de cette branche. Il y a peu, l'un des représentants d'Intel a révélé que les ventes de leurs produits Fortran sont plus élevées que toutes les autres dans leurs outils de développement.
C'est aussi une langue incroyablement facile à comprendre. Je ne suis pas d'accord pour dire qu'il faut du temps pour mettre à jour les assistants de recherche. Mon premier manuel ne contenait pas plus, oh, je ne sais pas, 30 (?) Pages de texte imprimé clairsemé. C'est une langue dans laquelle après avoir appris 10 mots-clés, on peut écrire des programmes de taille moyenne. J'oserais dire que ces 30 pages écrites en texte Word par défaut constitueraient un "manuel Fortran" plus complet pour la plupart des utilisateurs.
Si vous êtes intéressé par CUDA, vous voudrez peut-être vérifier le compilateur de Portland Group , qui le prend en charge . Je ne connais pas les détails les plus fins, mais les gens en parlent généralement avec éloge.
En dehors de cela, pour les programmes en parallèle, vous avez disponible OpenMP, MPI et maintenant les co-matrices à venir (et attendues depuis longtemps), que le compilateur d'Intel a récemment implémentées. Pour ne pas gaspiller ses mots, Fortran dispose d'un gamma très fin de "bibliothèques" pour paralléliser les programmes.
Des bibliothèques numériques standard de l'industrie sont développées pour cela avant tout, d'autres langues suivent plus ou moins dans le portefeuille de fonctions / routines.
Tout cela étant dit, je recommanderais cependant (selon le moment où il a été écrit à l'origine) s'il s'agit, disons, du code F77 ou plus ancien, en le réécrivant partiellement dans le temps vers des dialectes plus récents - F90 au moins, si possible avec les fonctionnalités F2003. Un article / thèse sur ce sujet a été récemment publié (fichier PDF de taille moyenne à venir). Non seulement cela, s'il est fait correctement, garantit la portabilité sur plusieurs plates-formes, mais il facilitera également la maintenance future.
ps En ce qui concerne la "maintenance future", juste une anegdote que j'aime parfois mentionner. Lors de la rédaction de ma thèse, j'ai réutilisé du code de mon mentor, écrit il y a 35 ans à partir du moment de la rédaction. Il a compilé avec une seule erreur; une déclaration manquante à la fin, en raison d'une erreur de copier-coller :)
@DaveMateer (réponse au commentaire) - Je vais faire un commentaire dans ce qui suit qui peut être un peu impoli, mais ne le prenez pas mal, car c'est dans les bonnes intentions.
Il me semble que vous abordez ce «problème» de manière erronée. Ce que je veux dire en quelques points courts (car il est très tard ici, et ma capacité à composer des phrases lisibles (et encore moins compréhensibles) me laisse après 22 heures)
a) vous avez mentionné que vous essayez de minimiser le temps de codage supplémentaire, mais vous envisagez une réécriture d'un langage spécialisé pour l'informatique numérique à un parmi un choix coloré de langues , si vous me pardonnez mon expression
- dont certains ne prennent pas en charge les tableaux multidimensionnels, entre autres
- la plupart d'entre eux ne conviennent pas aux travaux numériques lourds (des capacités de traitement parallèle de Haskell et Hadoop, je l'admets, je n'en sais rien ... mais je ne les ai jamais entendues, même mentionnées dans ces cercles)
- il a peut-être été essayé, mais je n'ai jamais entendu parler d'une réécriture de Fortran, un langage pour les problèmes discrétisés, vers un langage fonctionnel
- il y a eu récemment une discussion sur comp.lang.fortran (essayez de chercher dans les groupes google) sur les aspects du calcul scientifique "dans le cloud"
(je ne voudrais pas vous démotiver, mais pour être honnête, personne n'était vraiment sûr de ce que ce terme représente même, moins seul avait un exemple d'application réussie. La plupart des gens ont convenu que le potentiel existe mais jusqu'à présent, ils sont satisfaits de la façon dont les choses fonctionnent pour l'instant.). De nombreux problèmes ne conviennent pas non plus à ce type de parallélisation.
b) quels seraient les coûts d'une telle réécriture? personnes / heures.
c) -les versions correctes des bibliothèques à compiler ...- est un problème dans n'importe quelle langue, qui ne peut être évité, quelle que soit la façon dont vous le regardez.
d) J'ai entendu parler de Python (un joli langage vraiment) utilisé dans des applications parallèles à quelques reprises, mais sa pénétration sur ce marché ne semble toujours pas augmenter, et sa nature en constante évolution en fait un choix très mauvais pour un projet à long terme (pensez à la compatibilité descendante). Certaines personnes l'aiment beaucoup comme un langage "collant".
Ugh, si je pense à autre chose, je l'ajouterai demain. Je dois dormir un peu ...