Apprendre Fortran

9

Je me demandais quelle est la meilleure façon d'apprendre à programmer à Fortran?

Je cherchais des livres, les exemples qui me semblaient corrects étaient "Fortran 95/2003 Explained" et "Fortran For Scientists And Engineers" .

Je ne sais pas ce que vous en pensez?

Une autre chose que je me demande est quel compilateur dois-je utiliser? Je travaille sur une machine Windows 7 (64 bits).

J'espère que vous pourrez m'aider sur ce coup!

Donc, pour mon expérience avec la programmation:

  1. Matlab et maple ont été gentils avec mes premières introductions dans le monde de la programmation. Matlab est un programme dans lequel je suis plutôt bon, j'ai appris à travailler avec des boucles et comment les combiner pour créer des programmes plus efficaces. Maple est plus dans la phase de base (je sais comment chercher la solution aux intégrales simples etc.).
  2. Un an après cela, nous avons eu une introduction au C ++ en Visual Basic. Le professeur est en fait allé vite sur celui-ci, après 2 mois, nous discutions déjà des pointeurs et de l'héritage. Je suis capable d'écrire des programmes simples dans cette langue, seul le travail avec les classes reste une difficulté, mais je crois que c'est juste une question de pratique.
  3. Et un an plus tard, j'avais besoin d'apprendre Mathematica 8, ce qui m'améliore aussi beaucoup de nos jours.

J'ai donc un peu d'expérience en programmation, mais je ne dirai pas que c'est une quantité incroyable!

La raison pour laquelle je veux apprendre Fortran est principalement parce que vous ne pouvez pas faire de la physique théorique seule, vous devez tester vos théories et pour cela, vous devrez être en mesure d'écrire des programmes qui pourraient être en mesure de tester ces théories numériquement. J'ai entendu dire que Fortran est une sorte de langage à utiliser en matière de mathématiques numériques, donc je pense qu'il serait utile de connaître cette langue.

ps: quelle est la différence entre Fortran95 et Fortran 2003?

pseudo
la source
3
Pouvez-vous être un peu plus précis quant à votre provenance et votre destination? Savez-vous déjà comment programmer, c'est-à-dire quels autres langages de programmation connaissez-vous? Et que voulez-vous pouvoir faire à Fortran?
Pedro
Oui, j'aurais peut-être dû le mentionner dans ma question, permettez-moi de le modifier :) @Pedro
Nick
1
Je sais que cela ne répond pas à la question, mais je dois fortement vous recommander d'utiliser Python sur Fortran si vous n'avez pas de besoins de performances spécifiques en tant que débutant. Vous aurez moins de maux de tête face aux mathématiques et à la théorie, car Python vous hurlera moins. Il a également des packages incroyables qui rendent beaucoup de mathématiques numériques très simples (recherchez SciPy, Numpy, Matplotlib). Ces outils rendent Python très similaire à MATLAB dans son utilisation, mais vous disposez également d'un langage complet pour créer un bon logiciel autour de ewll. Sans oublier qu'il est open source.
hadsed
1
Le Fortran 95 ressemble également à Matlab et est une norme ISO. Beaucoup de gens utilisant Python écrivent des noyaux lourds en C / C ++ (même Fortran), ce qui signifie que maintenant vous devez apprendre non pas un mais deux langages. Un pour la performance et l'autre pour la commodité / facilité d'utilisation.
stali

Réponses:

4

Je vais seconder la recommandation de Stali du livre de Chapman. J'ai appris du livre Fortman 90 de Chapman, et ce fut très utile. Il vous apprendra la langue Fortran. Cela ne vous apprendra pas sur les bons flux de travail pour la programmation, et pour cela, vous devriez chercher ailleurs après avoir appris du Fortran et programmé un peu.

La plupart des ressources en ligne pour vous aider avec la programmation Fortran seront basées sur Linux. De même, en informatique, la plupart des documents écrits seront destinés aux utilisateurs de Linux. Pour cette raison, je vous recommande fortement d'installer VirtualBox (ou une sorte de logiciel qui vous permet d'exécuter des systèmes d'exploitation virtuels), puis d'y installer une distribution Linux. Si vous n'avez jamais utilisé Linux auparavant, une distribution conviviale comme Ubuntu, Mint ou Fedora sera probablement votre meilleur choix. Ces distributions nécessitent un minimum de configuration si elles sont exécutées dans un environnement virtuel et disposent d'une bonne interface graphique pour vous aider à naviguer dans le système d'exploitation. Chacune de ces distributions possède un gestionnaire de packages que vous pouvez utiliser pour installer des logiciels supplémentaires. En utilisant le gestionnaire de paquets, vous pouvez installer gfortran.

Vous allez vouloir développer un logiciel dans un éditeur de texte (ou un IDE), donc cela vaut probablement la peine d'apprendre les bases de la ligne de commande. La menuiserie logicielle dispose de bonnes ressources pour cette tâche. (Avertissement: j'ai enseigné une partie d'un atelier de menuiserie logicielle.) Ensuite, vous devriez être en mesure d'aller de l'avant avec l'apprentissage de l'écriture de programmes simples et de les compiler sur la ligne de commande, puis d'apprendre à utiliser Makefile.

Le problème avec tout ce qui est basé sur Windows est que la plupart des documents en ligne que vous verrez en faisant de la science informatique vont supposer que vous utilisez Linux, et les conseils (si c'était bon au début) vont casser vers le bas, et vous coûte du temps. Cygwin est une couche API qui ajoute plus de fonctionnalités de type Linux, mais la correspondance avec Linux n'est pas parfaite, et les logiciels compilés pour Linux ne fonctionneront pas sur votre machine; vous devrez toujours obtenir des versions natives de Windows ou recompiler le logiciel pour Windows. Un compilateur Fortran natif Windows tel que Visual Fortran va coûter de l'argent, et vous aurez toujours le problème que la plupart des utilisateurs de Fortran et des scientifiques informatiques utilisent Linux pour leur développement logiciel, ce qui signifie que vous devrez aller de l'avant avec votre posséder. Cependant, si vous avez vraiment besoin dedistribuer des logiciels basés sur Windows pour une raison quelconque, alors il est logique de passer par tous les efforts pour comprendre comment utiliser quelque chose comme Visual Fortran.

Geoff Oxberry
la source
Merci pour le conseil! Mais je me demande, au lieu d'une machine virtuelle, ne pourrais-je pas créer une sorte de mécanisme de double démarrage dans lequel je peux choisir si je démarre Windows7 ou Linux Ubuntu en premier? Je pense que cela pourrait en effet me faire gagner beaucoup de temps! Et si je devais aller à Windows, alors j'aurai l'expérience de programmation de la version Linux qui me permet de parcourir les étapes sur Windows beaucoup plus rapidement!
Nick
Vous pourriez, si vous le désirez. Je pense que la configuration à double démarrage est moins flexible et nécessite plus de connaissances techniques et de temps (vous devrez peut-être redimensionner les partitions, configurer un chargeur de démarrage de la bonne manière, etc.). Je pense également que les machines virtuelles sont plus faciles à migrer vers une nouvelle machine, ce qui peut être utile si vous souhaitez partager votre travail avec un collègue, ou si vous acquérez un nouvel ordinateur et souhaitez y migrer tout votre travail.
Geoff Oxberry
J'ai finalement trouvé un peu de temps pour passer par toutes les étapes nécessaires. J'ai VirtualBox et j'ai installé Linux (Ubuntu). Maintenant, je me demandais quel pourrait être le meilleur compilateur? Je n'arrive pas à trouver grand-chose en ligne sur cette partie: l'art. J'ai entendu quelqu'un dire gfortran?
Nick
2
gfortran est libre, et probablement le chemin de moindre résistance. La plupart des autres compilateurs nécessitent l'achat d'une licence, avec des exceptions possibles pour un usage personnel ou académique. (Je sais que le compilateur d'Intel peut être téléchargé et utilisé pour un usage personnel uniquement sur une base gratuite, par exemple; vous devrez lire les licences pour plus de détails.) HighPerformanceMark lié à un site Web qui propose des comparaisons de performances pour les compilateurs.
Geoff Oxberry
6

Je pense que le livre Metcalfe est un bon guide annoté des fonctionnalités modernes de Fortran, très utile si vous connaissez déjà une version antérieure du langage mais pas une bonne introduction à la programmation dans le langage.

Pour mon argent, le livre Chiver's and Sleightholme et le livre Brainerd sont tous deux assez bons, bien que je ne pense pas que ce soit aussi bon que le livre d'Ellis et al qui, malheureusement, n'a pas été mis à jour pour Fortran 2003 ou plus tard.

J'ai une forte aversion pour le livre Chapman. Je ne me souviens pas pourquoi je n'aimais pas tellement l'édition 90/95, donc je ne peux plus justifier cette aversion, vous pouvez la considérer comme un préjugé.

Mais le seul livre que je recommande sans hésitation est le livre d'Arjen Markus . Ce n'est probablement pas une introduction idéale pour quelqu'un qui essaie encore de comprendre les caractéristiques de base du langage, mais une fois que vous les maîtrisez, cela vaut son poids dans une substance précieuse.

Quant au compilateur à utiliser, j'utilise le compilateur Intel et j'en suis généralement satisfait. Il s'intègre à Visual Studio, ce qui pourrait être important pour vous. Le compilateur NAG a de meilleurs messages d'erreur et d'avertissement mais produit des exécutables plus lents (généralement et votre expérience peut différer). Le compilateur gfortran est gratuit et obtient assez de bonnes critiques, mais ce n'est pas celui que j'utilise. Si vous voulez en savoir plus, Polyhedron vous le dira.

Marque de haute performance
la source
Le livre de Markus a une grande table des matières.
AlexE
Oui, le livre de Markus semble en effet un excellent livre, c'est donc celui que je considérerai certainement! Pour le compilateur, j'ai juste besoin de quelque chose avec des exécutables rapides (aucune intégration avec Visual Studio n'est nécessaire).
Nick
Je pense que le compilateur Intel est généralement considéré comme rapide.
AlexE
3

Pour les livres, je recommande "Modern Fortran Explained" par Metcalf / Reid / Cohen. C'est plus une référence qu'un manuel, mais cela vous servira bien si vous avez déjà été exposé à la programmation en général (avec disons C).

Outre ce livre, je recommande fortement le site Web d' Ondřej Čertík http://fortran90.org/ . Cela ne vous apprendra pas Fortran en premier lieu, mais cela vous fournira un ensemble de meilleures pratiques. Fortran permet différentes méthodes de programmation - il est compatible avec la descente après tout. Les meilleures pratiques qui y sont données vous aideront à développer un style Fortran cohérent et moderne. De plus, la FAQ qui s'y trouve vous intéressera.

AlexE
la source
2
A voté pour la page des meilleures pratiques F90, cela m'a aussi été très utile.
Daniel Shapero
2

Je pense que le livre de Chapmans est plus convivial pour les débutants et une bonne référence. Les auteurs du second sont tous des experts mais je pense que le livre sera un bon ajout à votre bibliothèque à un stade ultérieur.

Pour commencer, je vous suggère de vous en tenir à Fortran 95, puis de passer plus tard (si nécessaire) à Fortran 2003. Le Fortran 95 est facile à apprendre (presque comme Matlab) et vous serez productif très rapidement.

Sous Linux, vous disposez d'un certain nombre de compilateurs Fortran gratuits (GNU, Solaris Studio, Open64, etc.) en plus d'un ensemble d'outils plus riche, par exemple, valgrind, gdb, gnuplot, (pour une visualisation rapide), svn / hg etc. les paquets précompilés, y compris les bibliothèques numériques (blas / lapack / netcdf / fftw, etc.) sont à distance (au moins sur Debian avec apt-get).

Sur Windows, vous pourriez être mieux avec cygwin car il vous donne un accès facile et rapide à certains des outils / bibliothèques ci-dessus en plus du compilateur GNU Fortran. Alors oui, allez sur cygwin.com et installez le package de base avec gfortran et un éditeur de choix (vim est bon). Ce devrait être un bon début. Plus tard, si vous avez autre chose, je vous suggère d'utiliser le paquet apt-cyg pour installer des trucs.

stali
la source
1
Je ne recommande pas vim (ou d'ailleurs emacs) comme premier éditeur de texte. Il y a trop de fonctionnalités essentielles (couper, copier, coller, trouver, trouver / remplacer) qui impliquent des combinaisons de touches non intuitives pour l'utiliser comme premier éditeur de texte, et toutes ces étapes supplémentaires et inconnues qu'un nouvel apprenant doit prendre pour faire quelque chose de simple est à la fois décourageant et distrait de tout ce qu'ils essaient de faire (ce qui, si vous recommandez un éditeur de texte, est probablement une forme de développement logiciel).
Geoff Oxberry
1
En tant que premier éditeur, je recommande un outil qui a la capacité d'être le seul éditeur dont vous ayez jamais besoin, pas un que vous dépasserez en 3 semaines, 3 mois ou même 3 ans. Pour cette raison, Emacs et Vim sont les premiers éditeurs appropriés. Bien sûr, ils pourraient avoir une courbe d'apprentissage initialement plus abrupte que d'autres, mais beaucoup de programmeurs ont payé ce prix et ont trouvé les récompenses valables.
High Performance Mark
Votre commentaire établit un faux choix: apprenez vim / emacs et disposez d'un éditeur que vous pouvez utiliser à vie, malgré la courbe d'apprentissage abrupte, ou utilisez un autre outil inférieur facile à apprendre que vous dépasserez. De nombreux programmeurs professionnels utilisent d'autres outils avec des courbes d'apprentissage moins raides, comme gedit, Sublime Text, TextMate, TextWrangler, etc., et s'entendent très bien. Vim et emacs sont d'excellents éditeurs - j'utilise les deux - mais ce ne sont pas les seuls choix clairement supérieurs pour la programmation (WolfgangBangerth est également un bon argument pour les IDE).
Geoff Oxberry