Quelle version de Fortran dois-je apprendre?

17

Je suis un étudiant en génie mécanique intéressé par le domaine de l'ingénierie aérospatiale où, me dit-on, Fortran est encore couramment utilisé.

Quelle version de Fortran dois-je investir mon temps pour apprendre?

user26358
la source
Ne vaut pas une réponse complète, mais il convient de noter que le support du compilateur pour les fonctionnalités Fortran les plus récentes fait gravement défaut. Voir fortranwiki.org/fortran/show/Fortran+2003+status et fortranwiki.org/fortran/show/Fortran+2008+status. Je commencerais par 90/95 et avancerais au besoin.
Doug Lipinski
Après avoir écrit quelques réflexions sur le sujet, veuillez consulter stackoverflow.com/questions/953869/… stackoverflow.com/questions/3549702/… si cela peut vous être utile. En dehors de ce qui précède, je recommanderais F90, puis apprenez les fonctionnalités car vous en aurez besoin.
Tour
1
Notez que Matlab est originaire de Fortran. Sur la base de vos commentaires, je vous recommanderais d'évaluer cette option.
Dennis Jaheruddin
2
Devriez-vous même apprendre Fortran à l'arrêt complet? Cela pourrait être dicté par la quantité de code hérité que vous devez utiliser - qui dicterait également la version de Fortran que vous devriez apprendre.
Damien

Réponses:

27

C'est un peu un terme impropre populaire qu'il existe une "version" de Fortran à connaître. À de rares exceptions près, les dernières normes (et compilateurs) Fortran conservent une excellente rétrocompatibilité avec les anciennes normes. C'est pour une bonne raison: peu de gens utiliseraient Fortran aujourd'hui sans les grandes quantités de code hérité encore utilisées. Autrement dit, un code Fortran77 conforme aux normes fonctionnera presque toujours avec les derniers compilateurs.

Vous devez apprendre à utiliser la version la plus moderne de la langue disponible. Le F2008 n'a peut-être rien ajouté de terrible à un débutant, mais l'introduction par le F2003 de concepts orientés objet est certainement un gros problème. "Modern Fortran Explained" est un bon point de départ, et "Scientific Software Design: The Object Oriented Way" est également assez bon pour réellement apprendre à le mettre en pratique.

De façon pragmatique, si vous allez travailler sur du code hérité (disons F77 ou plus tôt), à un moment donné, vous devrez apprendre certaines des choses qu'ils ont faites en raison d'un manque de fonctionnalités F90 +. Par exemple, si vous écrivez du code Fortran pour quelque chose, vous ne devriez jamais utiliser ce qu'on appelle un "bloc COMMUN", mais vous les verrez invariablement apparaître dans le code F77 que vous devrez peut-être utiliser.

Je ne recommanderais jamais à quelqu'un de commencer à travailler à Fortran sans au moins les jeux de fonctionnalités F90 / 95.

Cela dit, si vous ne connaissez pas bien la programmation dans une autre langue, vous trouverez probablement un consensus sur le fait que Fortran n'est pas la meilleure langue à apprendre en tant que première, même si vous recherchez l'aérospatiale. (Et je dis cela en tant que personne dans l'aérospatiale qui utilise Fortran régulièrement et l'a eu comme première langue).

Aurelius
la source
2
+1 "Je ne recommanderais jamais à quelqu'un de commencer à travailler à Fortran sans au moins les fonctions F90 / 95." . Je suis d'accord. Commencez avec F90, apprenez toutes les fonctionnalités de base, pratiquez quelques programmes, puis passez aux versions plus récentes
Tymric
SI ce n'est pas Fortran, quelle langue mérite d'être apprise et sera pratique à utiliser en ingénierie? Comment va Matlab? J'en ai besoin pour un cours que je prends le semestre prochain.
user26358
@ user26358 Python pour la programmation à usage général, il a beaucoup de traction dans la communauté scientifique. R pour l'analyse statistique. MATLAB, Mathematica ou Maple (quelle que soit votre classe utilise) pour le calcul numérique. SQL pour les bases de données relationnelles. Javascript pour les trucs web et parce qu'il devient la lingua franca. Je ne m'embêterais pas avec Fortran jusqu'à ce que l'un d'entre eux ne puisse pas faire le travail, ce n'est pas une langue agréable à apprendre comme première.
Schwern
@Aurelius, je suis d'accord avec votre dernier paragraphe. Je crois que la bonne façon d'apprendre la programmation scientifique est exactement le contraire que j'ai vécu: python-> C ++ et au cas où vous en auriez besoin Fortran.
Nicola Cavallini
@ user26358 Matlab est bon et vous l'utiliserez probablement beaucoup à l'école. Python est un bon endroit pour commencer avec une programmation à usage général, et ses modules numpy / scipy peuvent faire la plupart des choses que vous ferez probablement dans Matlab, et c'est un bon endroit pour apprendre les bases de l'écriture de logiciels. Vous devriez certainement avoir au moins une langue compilée sous votre ceinture aussi; C ++ serait le choix le plus populaire.
Aurelius
1

Je suis en désaccord avec vous deux. C ++ et Python ne sont toujours pas aussi optimisés que FORTRAN. Je suis tout à fait d'accord pour dire que FORTRAN 90/95 est le minimum. Cependant, il est toujours utile d'utiliser d'autres versions plus modernes. Le défi avec FORTRAN est que si vous l'apprenez avant d'apprendre des langages orientés objet, c'est facile à comprendre. Il est beaucoup plus difficile d'apprendre si vous avez l'habitude de penser avec des objets. J'enseigne ici la classe de supercalcul et je force mes étudiants à utiliser FORTRAN. Cela les oblige à utiliser une logique différente dans la programmation. Ils ne l'aiment pas parce qu'il ne "pense" pas comme Python ou C ++. Tout dépend vraiment de ce que vous avez l'intention de faire et de l'importance de la parallélisation et des performances.

tmwitten
la source
Bienvenue sur SciComp.SE. Cela ressemble plus à une opinion qu'à une question pour le site. Si vous considérez que Fortran "[...] les oblige à utiliser un autre type de logique dans la programmation", vous devriez élaborer l'argument et nous expliquer pourquoi. Et aussi, quelle est cette "sorte de logique" que vous mentionnez.
nicoguaro
2
@tmwitten: Cette réponse est-elle censée être un commentaire? C'est probablement trop long pour être un commentaire, et hors contexte, cela ressemble à un non séquencé (par exemple, C ++ et Python ne sont pas mentionnés dans la question, "vous deux" semble faire référence à Nicola et Aurelius).
Geoff Oxberry