Soyez curieux et apprenez: le Fortran moderne en bref

Les progrès de la science et de l'ingénierie reposent toujours sur Fortran plus que sur toute autre langue par de nombreuses mesures importantes. Surpris? Vous ne devriez pas l'être, bien que beaucoup de gens qui se disent programmeurs n'ont jamais vraiment appris Fortran. Je vais vous apprendre Fortran en cinq minutes ou moins. Cela ne fera pas de mal et vous saurez quel est probablement le langage de programmation le plus important et le plus influent de tous les temps.

Les informaticiens peuvent se comporter comme si Fortran n'existe pas, mais la culture populaire ( Les Simpsons , saison 26, épisode 10) a fait mieux avec la sage observation: «Fortran, le plus grand des langages de programmation!» En fait, plus de la moitié du calcul fait par les ordinateurs les plus puissants du monde vient de Fortran. Dans certains grands systèmes, le code Fortran peut être responsable de 80 à 100% du calcul.

C'est aussi incroyablement facile à apprendre, comme vous le verrez avec cette brève introduction à la programmation Fortran. Je suppose que vous savez déjà programmer dans autre chose que Fortran (si vous êtes complètement nouveau dans la programmation, je vous recommande fortement d'apprendre Fortran avec «Un livre de coloriage Fortran»).

 Commençons

 programme bonjour

    print *, "Bonjour le monde!"

fin du programme bonjour

Tapez (utilisez l'extension .f95 ou .f90 pour votre fichier), compilez, exécutez ceci, et il affiche «Hello, World!». Le «*» dans l'instruction d'impression signifie essentiellement le formatage automatiquement .

Mon deuxième exemple fait des calculs et se termine par des instructions 'if / then / else':

programme mymath

  implicite aucun

  real :: answer, x, y, sum, prod, cubedx, cubedy

  print *, 'Tapez deux nombres (x et y)'

  lire *, x                                          

  prêt                                          

  somme = x + y  

  prod = x * y                                       

  cubedx = x ** 3;

  cube = y ** 3;

  print *, 'La somme x + y est', somme

  print *, 'Le produit x * y est', prod

  print *, 'Cubed x and y', cubedx, cubedy

  print *, 'sinus de x et y', sin (x), sin (y)

  si (x> y) alors

    print *, 'J'ai remarqué que x est plus grand que y'

  autre

    print *, 'Il semble que y n'est pas plus petit que x'

  fin si

fin du programme mymath  

Vous remarquerez peut-être que j'ai glissé dans "aucun implicite". C'est normal dans Fortran moderne - cela dit au compilateur d'exiger que les variables soient explicitement déclarées afin que les variables inconnues soient marquées comme des erreurs. Sans cela, Fortran suppose que les variables commençant par «i» à «n» (les deux premières lettres de l'entier) sont des nombres entiers et les autres sont des nombres à virgule flottante («réels»). Cela a réduit le nombre de cartes que nous devions perforer il y a des décennies, mais est généralement mal vu en ces temps modernes.

 L'exécution de ce programme (et la saisie de 3.14 et 1.57) donne les résultats suivants:

Tapez deux nombres (x et y)

3.14

1,57

 La somme x + y est 4,71000004   

 Le produit x * y est 4.92980051   

 Cubes x et y 30,9591484 3,86989355   

 sinus de x et y 1,59254798E-03 0,999999702

 J'ai remarqué que x est plus grand que y   

Fortran est conçu pour les mathématiques (FORmula TRANslation), notez que «sin (…)» est intégré sans qu'il soit nécessaire d'inclure un en-tête ou un package. Bien sûr, Fortran prend en charge les nombres à virgule flottante et les nombres entiers, mais également les nombres complexes. Aucun additif nécessaire.

Mon troisième exemple concerne les boucles (appelées «do» en Fortran):

 boucle de programme

  implicite aucun    

  entier :: i, j, garder (100,2), w

  w = 0

  est-ce que je = 10, 50, 5

    faire j = i, 20, 5

       imprimer *, i, j

       w = w + 1

       garder (w, 1) = i

       garder (w, 2) = j

    fin faire

  fin faire

  est-ce que je = 1, w

    imprimer *, 'garder:', garder (i, 1), garder (i, 2)

  fin faire

boucle de fin de programme

La ligne d'impression dans mon exemple de programme ne s'exécute que si la j do-loop s'exécute. La boucle j ne s'exécute pas du tout lorsque i dépasse 20. Cet exemple présente également des tableaux avec l'utilisation d'un tableau nommé «keep». Fortran commence la numérotation des tableaux à «1» au lieu de zéro, ce qui revient à la même façon que les Américains numérotent les étages des immeubles (l'étage n ° 2 fait référence au rez-de-chaussée qui est supposé être «1»). D'autres endroits dans le monde utilisent la numérotation à base zéro pour leurs bâtiments (le «premier étage» est ce que les Américains appellent le «deuxième étage») comme le font C et C ++ pour les tableaux. La sortie de cet exemple de 'boucle de programme' est indiquée ci-dessous:

           10 10

          10 15

          10 20

          15 15

          15 20

          20 20

 garder: 10 10

 garder: 10 15

 garder: 10 20

 garder: 15 15

 garder: 15 20

 garder: 20 20

 Dans mon dernier exemple, je définirai un sous-programme (fonction) appelé «ave» pour prendre la moyenne de trois nombres que je définis statiquement. Vous remarquerez que je suis paresseux et que je viens d'écrire «fin» après le programme et la fonction. Ce n'est pas grave, mais si vous utilisez des noms, comme je l'ai fait précédemment, le compilateur vous aidera à vérifier que la fin correspond à ce que vous vouliez qu'elle corresponde.

Programme callret

  implicite aucun

  réel a, b, c

  réel av, avsq1, avsq2

  vrai ave

  données a, b, c / 5.0,2.0,3.0 /

  av = ave (a, b, c)

  print *, 'La moyenne de', a, b, c, 'est:', AV

fin

fonction réelle ave (x, y, z)

  réel x, y, z, somme

  somme = x + y + z

  moy = somme / 3,0

  revenir

fin

 Cela imprime:

 La moyenne de 5.00000000 2.00000000 3.00000000 est: 3.33333325 

 Oui, Fortran peut formater la sortie. Si nous remplaçons le "print" ci-dessus comme suit:

  print 8, 'La moyenne de', a, b, c, 'est', AV

8 format (a, 2 (f4.2, ','), f4.2, a, f7.5)

La sortie deviendra:

La moyenne de 5,00, 2,00, 3,00 est 3,33333

Le formatage Fortran peut également se faire sur une seule ligne et avoir le même joli résultat:

print "(a, 2 (f4.2, ','), f4.2, a, f7.5)", 'La moyenne de', a, b, c, 'est', AV

Si vous avez été amené à croire que Fortran est bizarre, vous avez été induit en erreur. J'ai écrit tous ces exemples dans ce que les programmeurs Fortran appellent «forme libre». Cela a officiellement fait partie de Fortran avec le standard 'Fortran 90' (d'où mes instructions pour utiliser .f90 ou .f95 comme extensions de fichier; celles-ci indiquent au compilateur, sans options spéciales, que nous utilisons une forme libre). Gardez à l'esprit qu'en 1956, les utilisateurs voulaient quelque chose destiné aux poinçons de cartes. Je pourrais continuer pendant des heures sur la façon dont Fortran gère cela avec des formats orientés colonnes et des caractères de continuation, etc. Mais, comme je l'ai montré, vous n'avez vraiment pas besoin d'apprendre cela pour écrire ou lire du code Fortran.

Alors pourquoi Fortran est-il évité par les informaticiens? Excellente question. Le fortran est la langue la plus ancienne (vers 1956). Cela a commencé à une époque de cassettes, de cartes perforées et de remplacement des ordinateurs humains. Il est antérieur à la programmation structurée par blocs, à la théorie d'analyse et aux graphiques. En cours de route, les informaticiens ont exploré les progrès de l'informatique tout en introduisant des milliers de langages de programmation, dont la plupart ont échoué. Néanmoins, dans tous les domaines de l'activité humaine, «sortir avec l'ancien, entrer avec le nouveau» est à la mode. L'informatique n'est pas différente. 

Mais lorsque le calcul des nombres est important, rien n'est meilleur ou plus facile que Fortran. Je suggère que nous devrions tous connaître de nombreux outils et utiliser le meilleur outil pour le travail. Ce n'est pas parce que mon fidèle marteau est dans ma boîte à outils que je n'en ai pas besoin pour le bon travail. Fortran n'est pas différent.

Fortran n'est pas seulement le langage de programmation original de haut niveau, il est vivant, important et largement utilisé. Qui a lancé les rumeurs pour suggérer le contraire?

 Ressources

  • Intel Fortran - fortement utilisé pour x86 (Intel / AMD), haute performance
    • Vous pouvez bénéficier d'un compilateur gratuit (et d'autres outils)
    • Copies d'essai disponibles avec option d'achat plus tard
    •  La version bêta 2018 se déroule jusqu'en juillet 2018: essayez cette dernière et meilleure version bêta entièrement fonctionnelle, y compris Fortran et les outils associés, jusque-là gratuitement: Intel Parallel Studio XE 2018 Beta - Inscrivez-vous
  • GNU Fortran - prise en charge plus large (nombreux processeurs, nombreux systèmes), performances inférieures
    • open source et gratuit
    • sur mon MacBook Air… je n'avais qu'à dire «brew install gcc» et j'obtiens gfortran gratuitement

Cliquez ici pour télécharger votre essai gratuit de 30 jours d'Intel Parallel Studio XE