« Fortran » : différence entre les versions
→Compilateurs actuels : Ajout de titres de niveau 2 |
→Bibliographie : Ajout de livres sur le Fortran moderne |
||
Ligne 185 : | Ligne 185 : | ||
{{Autres projets|wiktionary=Fortran}} |
{{Autres projets|wiktionary=Fortran}} |
||
=== Bibliographie === |
=== Bibliographie === |
||
* {{article|titre=The History of Fortran I, II, and III|auteur=[[John Backus]]|date=août 1978|périodique=ACM SIGPLAN Notices|volume=13|numéro=8|pages=165-180|doi=10.1145/960118.808380}}. |
* {{en}} {{article|titre=The History of Fortran I, II, and III|auteur=[[John Backus]]|date=août 1978|périodique=ACM SIGPLAN Notices|volume=13|numéro=8|pages=165-180|doi=10.1145/960118.808380}}. |
||
** Autre version : {{article|titre=The History of Fortran I, II, and III|auteur=[[John Backus]]|date=octobre 1998|périodique=IEEE Annals of the History of Computing|volume=20|numéro=4|doi=10.1109/85.728232}}. |
** Autre version : {{article|titre=The History of Fortran I, II, and III|auteur=[[John Backus]]|date=octobre 1998|périodique=IEEE Annals of the History of Computing|volume=20|numéro=4|doi=10.1109/85.728232}}. |
||
* {{Cite book| publisher = Springer London| isbn = 978-1-84882-543-7| last = Brainerd| first = Walter S.| title = Guide to Fortran 2003 Programming| location = London| accessdate = 2020-04-17| date = 2009| url = http://link.springer.com/10.1007/978-1-84882-543-7}} |
|||
* {{Cite book| publisher = Springer International Publishing| isbn = 978-3-319-75502-1| last1 = Chivers| first1 = Ian| last2 = Sleightholme| first2 = Jane| title = Introduction to Programming with Fortran| location = Cham| accessdate = 2020-05-03| date = 2018| url = http://link.springer.com/10.1007/978-3-319-75502-1}} |
|||
* {{Cite book| publisher = Oxford University Press| isbn = 978-0-19-185002-8| last1 = Metcalf| first1 = Michael| last2 = Reid| first2 = John| last3 = Cohen| first3 = Malcolm| title = Modern Fortran Explained: Incorporating Fortran 2018| accessdate = 2021-03-07| url = https://oxford.universitypressscholarship.com/view/10.1093/oso/9780198811893.001.0001/oso-9780198811893}} |
|||
=== Articles connexes === |
=== Articles connexes === |
Version du 7 mars 2021 à 17:41
Fortran | ||
Date de première version | 1957 | |
---|---|---|
Paradigme | Multi-paradigme : impératif (procédural, structuré, orienté-objet), générique | |
Auteur | John Backus | |
Développeur | John Backus & IBM | |
Dernière version | Fortran 2018 (ISO/IEC 1539-1:2018) (le 2018 novembre 28 | )|
Typage | fort, statique | |
Normes | ISO/IEC 1539 | |
Influencé par | Speedcoding | |
A influencé | Algol 58, BASIC, C, PL/I, PACT I, MUMPS, Ratfor | |
Implémentations | Absoft, Cray, GFortran, G95, IBM, Intel, Lahey/Fujitsu, Open Watcom, PathScale, PGI, Silverfrost, Oracle, XL Fortran, Visual Fortran, etc. | |
Système d'exploitation | Multiplateforme | |
Licence | Licence MIT | |
Site web | fortran-lang.org | |
Extension de fichier | f, for et f90 | |
modifier |
Fortran (FORmula TRANslator) est un langage de programmation généraliste dont le domaine de prédilection est le calcul scientifique et le calcul numérique. Inventé en 1954, c'est le premier langage de programmation de haut niveau, suivi notamment par Lisp (1958), Algol (1958) et COBOL (1959).
Le nombre de bibliothèques scientifiques écrites en Fortran et les efforts continus consacrés aux compilateurs pour exploiter au fil des décennies les nouvelles possibilités des calculateurs (vectorisation, coprocesseurs, parallélisme) ont maintenu l'usage de ce langage qui ne cesse d'évoluer. Il est utilisé aussi bien sur ordinateur personnel que sur les superordinateurs, où il est en particulier utilisé pour tester leurs performances dans le cadre du TOP500 avec la librairie LINPACK.
Parmi les fonctionnalités ajoutées ces dernières décennies, on citera le calcul sur les tableaux, la programmation modulaire, la programmation générique (Fortran 90), le calcul haute performance (Fortran 95), la programmation orientée objet (Fortran 2003), la programmation concurrente (Fortran 2008), et le calcul parallèle de façon native (Coarray Fortran 2008/2018), en plus de l'interface OpenMP et de la bibliothèque Message Passing Interface.
Historique
John Backus, ingénieur en radiophonie recruté quatre ans plus tôt par IBM, publie en 1954 un article intitulé Preliminary Report, Specifications for the IBM Mathematical FORmula TRANslating System, FORTRAN[1]. Il faut ensuite deux ans d'efforts à l'équipe qu'il dirige au sein d'IBM pour écrire le premier compilateur Fortran (25 000 lignes[2], pour l'IBM 704)[3].
Le nom du langage est parfois écrit conventionnellement en majuscules (FORTRAN) pour désigner les versions du langage jusqu'au Fortran 77, par opposition aux versions à syntaxe libre, depuis Fortran 90[4]. Par ailleurs, dans le standard Fortran 77, les lettres minuscules ne font pas partie du langage, même si la plupart des compilateurs les prennent en charge, en extension au standard. Depuis les années 2010, on utilise beaucoup l'expression "Fortran moderne" pour distinguer la forme actuelle du langage de ses formes historiques.
Avant la norme Fortran 90 qui introduit une syntaxe « libre », le Fortran, créé à l'époque des cartes perforées (en particulier avec le système FMS), utilise une mise en page adaptée à ces supports. Le code commence à partir de la 7e colonne et ne doit pas dépasser la 72e. Il se présente alors ainsi :
- la colonne 1 peut contenir la lettre C indiquant un commentaire. Le caractère * est aussi accepté ;
- les colonnes 1 à 5 peuvent contenir une étiquette numérique (facultative) de l'instruction, dont la valeur peut être limitée à 32 767 ou 9 999 suivant le compilateur (en Fortran II des ordinateurs Advanced Scientific Instruments ASI 210 et ASI 2100) ;
- la colonne 6 indique une suite de l'instruction précédente ;
- les colonnes 73 à 80 servent à l'identification et la numérotation des cartes perforées (souvent les trois initiales du projet, du chef de projet ou du programmeur, suivies de numéros de cinq chiffres attribués de dix en dix pour permettre des insertions de dernière minute).
Également, avant Fortran 90, les espaces n'ont pas de signification entre la 7e et la 72e colonnes. Ainsi, la boucle DO 10 I=1,5
peut aussi s'écrire DO10I=1,5
. En revanche, DO 10 I=1.5
est équivalent à DO10I=1.5
, affectation de la valeur 1.5 à la variable DO10I
. Le 10 représente ici le label de fin de boucle, obligatoire avant Fortran 90 : ce dernier a introduit le END DO
, qui était déjà pris en charge par de nombreux compilateurs sous forme d'extension au standard Fortran 77. L'extension MIL-STD-1753 du département de la Défense américain avait déjà introduit ce END DO
en Fortran 77 (à la place d'une instruction ou de CONTINUE
), dès 1978, mais le label restait obligatoire[5].
Depuis la norme Fortran 90, le code source est écrit suivant un format dit libre : il n'y a plus de colonne particulière, les lignes font au maximum 132 caractères (mais elles peuvent être continuées à l'aide du caractère &
), les commentaires sont introduits par un point d'exclamation (éventuellement disposé à la suite d'une instruction Fortran). L'extension de nom de fichier la plus courante est alors .f90
, même si le programme utilise des fonctionnalités de normes plus récentes telles que Fortran 2018.
De nombreux codes industriels ont été écrits en Fortran (Nastran, bibliothèques NAG et IMSL, etc.) et la compatibilité des nouvelles versions avec les précédentes est indispensable, au prix de conserver des notions qui ne s'imposent plus. Pour cette raison, Fortran 90 est complètement compatible avec Fortran 77. Les versions suivantes du standard ont cependant introduit des incompatibilités.
Mais beaucoup de programmes scientifiques sont à présent écrits en C et C++[6], dont les compilateurs sont disponibles sur la plupart des machines. D'autres langages compilés tels que Julia peuvent être utilisés pour le calcul scientifique, des langages interprétés tels que Python et des logiciels tels que Scilab, Matlab ou GNU Octave. Scilab et Matlab incorporent d'ailleurs les bibliothèques BLAS et LAPACK, développées en Fortran[7],[8]. Matlab était à l'origine un programme en Fortran, distribué aux universités et aux centres de recherche[9]. Par ailleurs, des langages de programmation sont en cours de développement, pour faciliter la programmation parallèle sur les superordinateurs, un domaine où Fortran est très utilisé. On peut citer X10, développé par IBM depuis 2004, et Chapel, développé par Cray depuis 2009. Un autre langage, Fortress, apparu en 2006 et développé par Sun Microsystems, a été abandonné en 2012. Ces trois langages font partie du projet High Productivity Computing Systems (en) de la DARPA.
Dans les années 2020, le langage Fortran reste néanmoins très utilisé pour plusieurs raisons :
- la présence de très nombreuses bibliothèques de fonctions, mises au point et améliorées durant de nombreuses années ;
- l'existence de logiciels en Fortran ayant demandé des ressources très importantes pour leur développement, et dont le passage à un autre langage est jugé trop coûteux ;
- l'existence de compilateurs performants qui produisent des exécutables très rapides ;
- des fonctionnalités introduites par les normes récentes, en particulier concernant le calcul parallèle ou l'interopérabilité avec les bibliothèques du langage C.
Versions de Fortran
Le langage Fortran a connu de nombreuses évolutions[10]. Il est normalisé depuis le milieu des années 60 et est devenu une norme ISO depuis Fortran 90. Chaque version de la norme ajoute des fonctionnalités ou clarifie des points restés ambigus, mais peut aussi rendre obsolescentes d'anciennes fonctionnalités.
- 1956 : Fortran I n'avait que des expressions arithmétiques et donc logiquement le branchement conditionnel était le « IF-arithmétique » à trois adresses :
IF (A-B) 10, 20, 30
indiquait de sauter aux instructions d'étiquette 10, 20 ou 30 selon que A-B était négatif, nul ou positif. - 1958 : Fortran II[11],[12] apportait les fonctions
FUNCTION
et les sous-programmesSUBROUTINE
que l’on appelle par l’instructionCALL
. - 1959 : Fortran III permettait d’y insérer du langage assembleur symbolique, mais n'est jamais sorti sous forme de produit.
- 1962 : Fortran IV introduit, entre autres, l'instruction « IF-logique », permettant d'écrire
IF (A .GE. B) GOTO 10
(aller à 10 si A est supérieur ou égal à B). - 1964 : Fortran V était le nom envisagé au départ pour PL/I, langage de programmation universel d'IBM qui devait réunir les meilleurs aspects de Fortran (pour les applications scientifiques), de COBOL (pour les applications de gestion), avec quelques emprunts à Algol.
- 1965 : le standard ECMA Fortran[13], situé à cheval entre le « Basic Fortran » et le « Fortran USASI ».
- 1966 : Fortran 66 (USASI X3.9-1966)[14] est la première version officiellement standardisée (par l'American Standards Association) de Fortran. On la confond souvent avec Fortran IV.
- 1978 : Fortran 77 (ANSI X3.9-1978)[15],[16], est une évolution majeure qui apporte entre autres améliorations, la programmation structurée avec les blocs
IF / THEN / ELSE / END IF
. Egalement en 1978, une extension du DOD introduit entre autres les blocksDO WHILE / END DO
[17]. - 1991 : Fortran 90 (ISO/IEC 1539:1991, puis ANSI X3.198-1992)[18] : modules, récursivité, surcharge des opérateurs, nouveaux types de données, etc. C'est une mise à jour importante pour mettre Fortran au niveau des autres langages modernes. Les restrictions concernant la mise en forme des programmes (colonnes 1 à 72) disparaissent : l'écriture se fait en format libre.
- 1992 : IEEE 1003.9-1992, volet Fortran 77 du standard POSIX[19].
- 1994 : ISO/IEC 1539-2:1994, qui définit des chaînes de caractères de longueur variable[20]. Ce standard a été révisé en 2000[21].
- 1997 : Fortran 95 (ISO/CEI 1539-1:1997)[22] : quoique mise à jour mineure, cette norme introduit en particulier les instructions
FORALL
etWHERE
pour le calcul vectoriel, les procéduresPURE
etELEMENTAL
et rend obsolescentes certaines fonctionnalités telles que les boucles à compteur réel ou l'instructionPAUSE
. - 1999 : ISO/IEC 1539-3:1999, qui définit des directives de compilation conditionnelle. Ce standard a été abandonné en 2011[23].
- 2004 : Fortran 2003 (ISO/CEI 1539-1:2004)[24] : comme le COBOL 2002, Fortran supporte maintenant la programmation orientée objet[25]. L'interface avec le langage C est assurée par le module interne ISO_C_BINDING et les mots-clés
BIND
etVALUE
, qui permettent à un programme Fortran d'accéder facilement aux bibliothèques disponibles en C. - 2010 : Fortran 2008 (ISO/CEI 1539-1:2010)[26] : bien que version mineure, cette norme introduit les co-tableaux (co-arrays) comme paradigme de programmation parallèle, ainsi que les boucles
DO CONCURRENT
pour la parallélisation des itérations sans interdépendance. Les modules peuvent désormais comporter des sous-modules. Et les structuresBLOCK...END BLOCK
permettent de déclarer des variables à portée limitée n'importe où à l'intérieur d'une routine. - 2018 : Fortran 2018 (ISO/CEI 1539-1:2018)[27] : cette version majeure incorpore en particulier :
- ISO/IEC TS 29113:2012 Interopérabilité ultérieure de Fortran avec C
- ISO/IEC TS 18508:2015 Caractéristiques parallèles supplémentaires en Fortran
- ISO/IEC/IEEE 60559:2011 Systèmes de microprocesseurs — Arithmétique flottante
- 2020 : une communauté d'utilisateurs fortran-lang.org est créée afin de fédérer les efforts dans l'écosystème Fortran, sur le modèle de langages plus jeunes. Elle se propose entre autres de développer une librairie standard Fortran (stdlib) similaire à celle du C, et un gestionnaire de paquets Fortran (fpm) faisant également office de système de compilation.
- 2021 : le planning pour la version suivante, informellement dénommée Fortran 202x, a démarré en juin 2017[28]. La publication du committee draft est envisagée en juillet 2021. Un working draft est disponible[29].
Syntaxe du Fortran moderne
program degrad
! =================================================
! Imprime une table de conversion degrés -> radians
! avec 32 chiffres significatifs (réels 128 bits)
! =================================================
use iso_fortran_env, only: wp=>real128
implicit none
! Déclaration des variables
integer :: deg
real(wp) :: radians(0:90)
! Déclaration des constantes
real(wp), parameter :: pi = 4.0_wp * atan(1.0_wp)
real(wp), parameter :: coeff = (2.0_wp * pi) / 360.0_wp
character(*), parameter :: ligne_horizontale = "(49('-'))"
! Remplissage du tableau :
radians = (/ (coeff * deg, deg=0,90) /)
! En-tête de la table
write (*, ligne_horizontale)
write (*, "('| Degrés |', 15(' '), 'Radians', 16(' '), '|')")
write (*, ligne_horizontale)
! Affichage formaté
do deg = 0, 90
write (*, "('| ', I2,' | ', F34.32,' |')") deg, radians(deg)
end do
! Fin de la table
write (*, ligne_horizontale)
end program degrad
Notes :
- ce programme est écrit en Fortran moderne[30]. Il nécessite un compilateur implémentant les bases de la norme Fortran 2008 ;
- le symbole
!
introduit un commentaire qui peut être soit seul sur une ligne soit à la suite d'une instruction Fortran ; - l'instruction
use
permet d'importer le module intrinsèqueiso_fortran_env
qui définit des constantes, en particulier pour les types de réels disponibles (real32, real64, real128
). Ici seule est importée la constantereal128
qui sera désignée par l'aliaswp
(working precision). Les nombres réels apparaissant dans le programme sont suffixés par cet alias afin de définir leur type. Il suffirait ainsi de remplacerreal128
parreal64
oureal32
pour modifier de façon cohérente la précision numérique utilisée dans l'ensemble du programme, pour autant que le compilateur prenne en charge la précision correspondante ; - l'instruction
implicit none
rend la déclaration des variables obligatoire. Historiquement, elle est facultative en Fortran (les variables dont le nom commence par une des lettres I, J, K, L, M ou N sont par défaut de typeinteger
, les autres de typereal
) mais ce mécanisme est désormais fortement déconseillé ; - la déclaration se fait en début de routine. Le type de données et les noms de variables sont séparés par
::
. On utilise les entiers par défaut pourdeg
. La numérotation des tableaux commence par défaut à 1 en Fortran mais ici on la fait commencer à 0 pour le tableauradians(0:90)
. Les constantes, qui peuvent être calculées, sont spécifiées par l'attributparameter
. Les chaînes de caractères sont de longueur fixe, mais ici l'étoile indique que la longueur de la chaîne doit être définie en fonction de la longueur de son contenu ; - le contenu du tableau
radians()
est calculé à l'aide d'un constructeur, avecdeg
pour variable de boucle variant de 0 à 90. Le Fortran permettant de calculer directement sur des tableaux, on aurait pu écrire égalementradians = deg * (/ (coeff, deg=0,90) /)
; - l'instruction
write
se réfère à une unité d'entrée-sortie (*
désigne le terminal) et une spécification de format. Ce format est ici stocké dans la chaîneligne_horizontale
et décrit qu'il faudra afficher 49 tirets. On aurait également pu utiliser une déclarationformat
située sur une autre ligne et précédée d'un label numérique ; - l'instruction
do deg = 0, 90
indique de répéter en boucle les instructions qui suivent (jusqu'auend do
) pour toutes les valeurs dedeg
de 0 à 90 par pas de 1 ; - le
write
à l'intérieur de la boucle permet d'écrire sur le terminal les valeurs des variablesdeg
etradians(deg)
en utilisant deux caractères pourdeg
(qui est un entier) et 34 caractères dont 32 après la virgule pourradians(deg)
qui est un réel.
Compilateurs
De nombreux compilateurs commerciaux ou libres sont disponibles. Le Fortran étant un langage normalisé, il s'écoule généralement un certain nombre d'années entre la publication d'une nouvelle norme et la prise en charge complète de ses nouvelles fonctionnalités dans les compilateurs[31],[32].
Compilateurs actuels
Compilateurs libres
Avant sa version 4.0, le compilateur libre GCC incluait le compilateur g77[33],[34] pour le Fortran 77, qui a été remplacé en 2005[35],[36] par le compilateur GFortran[37], lui-même issu d'un fork réalisé en 2003 de G95 , autre compilateur libre développé entre 2000 et janvier 2013. Début 2021, GFortran prend en charge quasiment intégralement Fortran 2003[38], presque tout Fortran 2008[39] et environ 20 % de Fortran 2018[40].
Compilateurs commerciaux
On trouve de nombreux compilateurs commerciaux[41], parmi lesquels : Lahey[42], Absoft[43], Portland Group (en)[44] (filiale de NVidia), NAG, etc. La plupart des fabricants de stations de travail ou d'ordinateurs destinés au calcul intensif, proposent également un compilateur de Fortran : Intel[45], IBM[46], Oracle (à la suite du rachat de Sun Microsystems[47]), Cray[48], etc. Le compilateur Intel Visual Fortran est l'héritier de DEC Visual Fortran, devenu Compaq Visual Fortran puis HP Visual Fortran.
Certains de ces compilateurs commerciaux ont des versions gratuites pour une utilisation non commerciale : c'est le cas d'Intel[49], Oracle[50], Portland Group[51].
Compilateurs en cours de développement
Début 2021, de nouveaux compilateurs Fortran basés sur LLVM sont en développement : LFortran [52] qui vise à permettre de tester du code de façon interactive, Flang[53] et Intel Fortran Compiler ifx[54].
Compilateurs non maintenus
- Open64 (en)[55] est un compilateur Fortran 95 libre arrêté en 2011.
- Compilateur Fortran 77 libre Open Watcom[56] : arrêté en 2010.
- PathScale (en)[57] : arrêté en 2013.
- HP.
- Unisys.
- Certains fabricants ont disparus[58], tels que CDC ou DEC.
Bibliothèques
Bibliothèques de calcul scientifique
- LAPACK[59].
- Basic Linear Algebra Subprograms (BLAS).
- Physics Analysis Workstation (PAW).
- International Mathematics and Statistics Library (IMSL).
- NAG Fortran Library.
Bibliothèques graphiques
Les normes Fortran n'incluant pas d'instructions graphiques ou d'instructions pour construire des interfaces graphiques, la visualisation peut se faire soit avec des outils externes tels que ParaView, soit à l'aide de bibliothèques :
- gtk-fortran : interface GTK / Fortran, utilisant le module ISO_C_BINDING (Fortran >2003). Multiplateforme (Linux, Windows, macOS, FreeBSD, Raspberry Pi...). Licence GPL 3. Supporte aussi bien GTK 3 que GTK 4, ainsi que la GLib et PLplot.
- Quickwin : bibliothèque graphique fournie avec le Compaq Visual Fortran (désormais Intel Visual Fortran). Ne fonctionne que sous Windows.
- Winteracter : interface graphique et outils de visualisation. Logiciel commercial pour Windows, Linux et MacOS X.
- DISLIN : bibliothèque graphique créée par le Max Planck Institute for Solar System Research. Multiplate-formes (UNIX, Linux, FreeBSD, OpenVMS, Windows et MS-DOS). Fonctionne avec de nombreux compilateurs. Gratuit pour un usage non-commercial.
- JAPI (Java Application Programming Interface) : interface Java/Fortran permettant de créer une interface graphique complète pour les programmes Fortran. Multiplate-formes (Windows, Linux, Solaris). Fonctionne avec de nombreux compilateurs (entre autres gfortran, Compaq Visual Fortran…). Logiciel libre sous licence LGPL.
- GrWin Graphics Library : logiciel libre pour Windows.
- PLplot : bibliothèque pour tracer des courbes scientifiques. Multiplate-formes (Linux, OpenSolaris, Unix, MS-DOS, Windows, Mac OS X). Logiciel libre sous licence LGPL.
Début 2021, les bibliothèques suivantes ne sont plus maintenues depuis au moins 10 ans :
- f90gl : interface du Fortran 90 avec OpenGL, GLU et GLUT. Multiplate-formes. Fonctionne avec de nombreux compilateurs. Licence : domaine public.
- Ftcl : interface Fortran-Tcl/TK. gratuit, open-source.
- g2 graphical library : pour Linux, AIX, Digital Unix, SunOS, IRIX, OpenVMS, Windows. Logiciel libre sous licence LGPL.
- PGPLOT : bibliothèque de routines graphiques, interactive, gratuite, multiplate-forme, gère beaucoup de périphériques de sortie.
- pilib (Platform Independent Library for Fortran) : interface Fortran 90-95 / GTK. Développement arrêté. Logiciel libre.
- PSPLOT : générer des dessins en PostScript.
- SansGUI : interface commerciale pour Windows et Compaq Visual Fortran.
- Xeffort : bibliothèque graphique pour Visual Fortran. Logiciel libre pour Windows.
Voir aussi
Bibliographie
- (en) John Backus, « The History of Fortran I, II, and III », ACM SIGPLAN Notices, vol. 13, no 8, , p. 165-180 (DOI 10.1145/960118.808380).
- Autre version : John Backus, « The History of Fortran I, II, and III », IEEE Annals of the History of Computing, vol. 20, no 4, (DOI 10.1109/85.728232).
- (en) Walter S. Brainerd, Guide to Fortran 2003 Programming, London, Springer London, (ISBN 978-1-84882-543-7, lire en ligne)
- (en) Ian Chivers et Jane Sleightholme, Introduction to Programming with Fortran, Cham, Springer International Publishing, (ISBN 978-3-319-75502-1, lire en ligne)
- (en) Michael Metcalf, John Reid et Malcolm Cohen, Modern Fortran Explained: Incorporating Fortran 2018, Oxford University Press (ISBN 978-0-19-185002-8, lire en ligne)
Articles connexes
Liens externes
- (en) Sites des normes Fortran : WG5 et J3.
- (en) Communauté fortran-lang.org visant à promouvoir le Fortran.
- (fr) Cours de Fortran de l'IDRIS (CNRS).
- (fr) Fortran sur developpez.com : cours, forum, FAQ, livres.
- (en) Fortran Wiki, édité par les utilisateurs du langage, propose de nombreuses ressources.
- (en) Blog Dr. Fortran de Steve Lionel.
- (en) Comparaison de différents compilateurs Fortran.
- (en) Fortran II Reference Manual for the IBM 704 (1958) [PDF].
- (en) Description of /360 WATFOR - A Fortran IV Compiler, Université de Waterloo, 1968 [PDF].
Notes et références
- Preliminary Report, Specifications for the IBM Mathematical FORmula TRANslating System, FORTRAN [PDF].
- « John Backus », sur IBM Archives (consulté le ).
- Interrogé à ce sujet, John Backus expliqua dans un entretien, qu'il ne pouvait en être autrement, bien qu'en 1990 tout binôme d'étudiants en informatique puisse en écrire un en quelques mois : « Nous n'avions pas les concepts. Nous n'avions pas davantage les outils ». Il explique dans le même entretien[réf. souhaitée] que ce qui avait donné le plus de travail à l'équipe était la génération d'un code indexant de façon pas trop inefficace les tableaux.
- Toutefois, on trouve déjà l'écriture « Fortran » dans le premier manuel de Fortran, remontant à 1956.
- MIL-STD-1753.
- Par exemple la GSL écrite en C, et Blitz++ ou IML++, en C++.
- MATLAB Incorporates LAPACK.
- Computation in Scilab.
- Code source de la première version de Matlab.
- Voir aussi les sites du Working Group 5 et du comité J3 pour plus d'informations sur l'évolution actuelle du standard.
- (en) John Backus, « The history of FORTRAN I, II, and III », ACM SIGPLAN Notices, vol. 13, no 8, , p. 165-180 (DOI 10.1145/960118.808380, lire en ligne).
- (en) Irving N. Rabinowitz, « Report on the algorithmic language FORTRAN II », Communications of the ACM, vol. 5, no 6, , p. 327-337 (DOI 10.1145/367766.368151).
- [PDF] Standard ECMA Fortran.
- [PDF] Standard Fortran 66.
- [PDF] Standard Fortran 77.
- (en) Frank Engel, Jr., « Draft proposed ANS FORTRAN BSR X3.9 X3J3/76 », ACM SIGPLAN Notices, vol. 11, no 3, , p. 1-212 (DOI 10.1145/956013.1070892).
- [PDF] MIL-STD-1753, Military Standard: Fortran, DOD Supplement to American National Standard X3.9-1978.
- [PDF] Standard Fortran 90.
- IEEE 1003.9-1992 - POSIX(R) FORTRAN 77 Language Interfaces - Part 1: Binding for System Application Program Interface (API).
- ISO/IEC 1539-2:1994 -- Information technology -- Programming languages -- FORTRAN -- Part 2: Varying length character strings.
- ISO/IEC 1539-2:2000 -- Information technology -- Programming languages -- Fortran -- Part 2: Varying length character strings.
- [PDF] Standard Fortran 95.
- ISO/IEC 1539-3:1999 -- Information technology -- Programming languages -- Fortran -- Part 3: Conditional compilation.
- [PDF] Standard Fortran 2003.
- initiée par Simula 67 et popularisée par C++ et Java.
- [PDF] Standard Fortran 2008.
- [PDF] Standard Fortran 2018.
- Fortran 202x - Development Schedule.
- WD 1539-1 J3/21-007 (Draft Fortran 202x), 16 décembre 2020
- (en) Metcalf, Michael; Reid, John; Cohen, Malcolm, Modern Fortran Explained: Incorporating Fortran 2018, Oxford Univ. Press, (ISBN 978-0198811886)
- Compiler Support for the Fortran 2003 Standard.
- Compiler Support for the Fortran 2008 Standard.
- Copie de l'ancien site de g77.
- g77 pour Windows sur le site de l'USGS.
- GCC 4.0 Release Series - Changes, New Features, and Fixes.
- Code source de GCC 4.0.0.
- GCC Wiki - GFortran.
- gfortran - Fortran 2003 status.
- gfortran - Fortran 2008 status.
- gfortran - Fortran 2018 status.
- Polyhedron Software - Fortran Compiler Comparisons.
- Lahey Fortran.
- Absoft Fortran.
- Portland Group Fortran.
- Intel Fortran Compilers.
- IBM - Fortran Compilers family.
- Oracle Solaris Studio.
- CrayDoc - Customer Documentation0
- Intel - Téléchargement de logiciels à usage non commercial.
- Téléchargement de Oracle Solaris Studio.
- PGI Community Edition, pour Linux et macOS.
- LFortran
- Flang
- Intel Fortran Compiler ifx
- Il est aujourd'hui abandonné, la dernière version remonte à novembre 2011.
- Open Watcom.
- PathScale EKOPath.
- Bitsavers - documentation d'ordinateurs anciens.
- http://www.netlib.org/lapack/.