11.5.4 : Fortran



Fortran (FORmula TRANslator) est un langage dédié au calcul numérique, fortement optimisé pour la manipulation de tableaux et de nombres en virgule flottantes.

Ce langage vénérable, initialement conçu à l'époque des ordinateurs à carte perforées, a vécu très difficilement la transition vers les ordinateurs modernes ne possédant plus les mêmes contraintes de conception noteFortran a longtemps conservé des contraintes de conception issues des machines à cartes perforées, par exemple une limitation à des lignes de texte de 80 caractères dont certains sont réservés pour la machine, ou des contraintes très strictes sur le nombre de caractère des identifiants., et n'a intégré les innovations ergonomiques de sa surcouche MATLAB qu'après plusieurs décennies. Mais cette période de transition est désormais terminée, et les versions modernes de ce langage (à partir de Fortran 90) offrent des caractéristiques très intéressantes pour les codes de calcul pur.

Contrairement à la famille C, le langage Fortran marque une distinction stricte entre pointeurs et tableaux, ce qui lui permet de détecter automatiquement davantage d'erreurs de programmation et d'optimiser davantage les manipulations de tableaux (d'une façon analogue à l'utilisation de "\keywordrestrict" en C), tout en évitant à ses utilisateurs les pièges des pointeurs lorsque l'utilisation de ceux-ci n'est pas vraiment nécessaire.

La sémantique des opérations en virgule flottante est aussi très différente. Contrairement au C, qui vise à donner au programmeur un contrôle précis sur les opérations machine, Fortran se veut être un traducteur de formules mathématiques et autorise donc le compilateur à réordonner les opérations en virgule flottante, ce qui change les résultats. Ce comportement complique l'écriture de calculs numériquement instables, en contrepartie de quoi un compilateur peut davantage optimiser les calculs automatiquement.

Ce langage montre ses limites dans les applications de grande taille (où ses faibles capacités d'abstraction se font sentir), dans les applications qui font autre chose que du calcul flottant (de la visualisation ou des interfaces graphiques par exemple), et lorsqu'on souhaite avoir recours à des bibliothèques tierce partie (qui exposent rarement une interface vers ce langage). Il est donc à réserver à des programmes de calcul pur de taille petite à moyenne, tels que des générateurs d'événements en HEP. Lorsqu'il est utilisé dans ce cadre, il demeure compétitif aujourd'hui.

Malheureusement, la transition vers le Fortran 90 fut si longue, et l'inertie du code ancien est si grande, que le langage a acquis une image désuète et perdu beaucoup de ses pratiquants dans ce processus. Autrefois un des principaux langages de programmations utilisés, il est aujourd'hui cantonné à la niche du calcul intensif, et l'on l'enseigne de plus en plus rarement, lui préférant d'autres langages comme Python. Ce manque de popularité pourrait devenir un problème à l'avenir, car il limite le flux des nouveaux programmeurs et l'écriture des nouvelles bibliothèques.

Le Fortran est généralement compilé en binaire natif pour un système d'exploitation et une machine cible donnée. On parle de compilation statique.