Fortran
Fortran ( / ˈ f ɔːr t r æ n / ; anciennement FORTRAN ) est un langage de programmation impératif compilé à usage général qui est particulièrement adapté au calcul numérique et au calcul scientifique .
Paradigme | Multi-paradigme : structuré , impératif ( procédural , orienté objet ), générique , tableau |
---|---|
Conçu par | Jean Backus |
Développeur | John Backus et IBM |
Première apparition | 1957 ; il y a 65 ans ( 1957 ) |
Version stable | Fortran 2018 (ISO/IEC 1539-1:2018) / 28 novembre 2018 ; il y a 3 ans ( 2018-11-28 ) |
Discipline de frappe | fort , statique , manifeste |
Extensions de nom de fichier | .f, .for,.f90 |
Site Internet | fortran-lang .org |
Principales implémentations | |
Absoft , Cray , GFortran , G95 , IBM XL Fortran, Intel , Hitachi , Lahey/Fujitsu, Numerical Algorithms Group , Open Watcom , PathScale , PGI , Silverfrost , Oracle Solaris Studio , autres | |
Influencé par | |
Codage rapide | |
Influencé | |
ALGOL 58 , BASIC , C , Chapel , [1] CMS-2 , DOPE , Fortress , PL/I , PACT I , MUMPS , IDL , Ratfor |
Fortran a été développé à l’origine par IBM [2] dans les années 1950 pour des applications scientifiques et d’ingénierie, et a ensuite dominé l’informatique scientifique. Il est utilisé depuis plus de six décennies dans des domaines informatiques intensifs tels que la prévision météorologique numérique , l’ analyse par éléments finis , la dynamique des fluides computationnelle , la géophysique , la physique computationnelle , la cristallographie et la chimie computationnelle . C’est un langage populaire pour le calcul haute performance [3] et est utilisé pour les programmes qui comparent et classent les supercalculateurs les plus rapides au monde .[4] [5]
L’installation du supercalculateur IBM Blue Gene / P en 2007 à l’installation informatique Argonne Leadership Angela Yang située dans le laboratoire national d’Argonne, à Lemont, Illinois, États-Unis.
Fortran a eu de nombreuses versions, dont chacune a ajouté des extensions tout en conservant largement la compatibilité avec les versions précédentes. Les versions successives ont ajouté la prise en charge de la programmation structurée et du traitement des données à base de caractères (FORTRAN 77), de la programmation matricielle , de la programmation modulaire et de la programmation générique (Fortran 90), du Fortran haute performance (Fortran 95), de la programmation orientée objet (Fortran 2003), Programmation simultanée (Fortran 2008) et capacités natives de calcul parallèle (Coarray Fortran 2008/2018).
La conception de Fortran a servi de base à de nombreux autres langages de programmation. Parmi les plus connus se trouve BASIC , qui est basé sur FORTRAN II avec un certain nombre de nettoyages de syntaxe , notamment de meilleures structures logiques, [6] et d’autres changements pour travailler plus facilement dans un environnement interactif. [7]
En août 2021, [mettre à jour]Fortran était classé 13e dans l’ indice TIOBE , une mesure de la popularité des langages de programmation, grimpant de 29 positions par rapport à son classement de 42e en août 2020. [8]
Appellation
Le nom FORTRAN est dérivé de Formula Translating System , [9] Formula Translator, [10] Formula Translation , [11] ou Formulaic Translation. [ citation nécessaire ] Les noms des versions antérieures du langage via FORTRAN 77 étaient orthographiés de manière conventionnelle en majuscules [12] (FORTRAN 77 était la dernière version dans laquelle le jeu de caractères Fortran ne comprenait que des lettres majuscules [13] ). Les normes de langue officielles pour Fortran font référence à la langue comme “Fortran” avec des majuscules initiales (plutôt que “FORTRAN” en majuscules) depuis Fortran 90.
Origines
Un ordinateur central IBM 704
À la fin de 1953, John W. Backus a soumis une proposition à ses supérieurs chez IBM pour développer une alternative plus pratique au langage d’assemblage pour programmer leur ordinateur central IBM 704 . [9] : 69 L’équipe historique FORTRAN de Backus était composée des programmeurs Richard Goldberg, Sheldon F. Best, Harlan Herrick, Peter Sheridan, Roy Nutt , Robert Nelson, Irving Ziller, Harold Stern, Lois Haibt et David Sayre . [14] Ses concepts comprenaient une entrée plus facile des équations dans un ordinateur, une idée développée par J. Halcombe Laning et démontrée dans leSystème de Laning et Zierler de 1952. [15]
The Fortran Automatic Coding System for the IBM 704 (15 octobre 1956), le premier manuel de référence du programmeur pour Fortran
Un projet de spécification pour The IBM Mathematical Formula Translating System a été achevé en novembre 1954. [9] : 71 Le premier manuel pour FORTRAN est apparu en octobre 1956, [9] : 72 avec le premier compilateur FORTRAN livré en avril 1957. [9] : 75 Il s’agissait du premier compilateur d’optimisation , car les clients étaient réticents à utiliser un langage de programmation de haut niveau à moins que son compilateur ne puisse générer du code avec des performances proches de celles d’un langage d’assemblage codé à la main. [16]
Alors que la communauté était sceptique quant à la capacité de cette nouvelle méthode à surpasser le codage manuel, elle a réduit le nombre d’ instructions de programmation nécessaires pour faire fonctionner une machine par un facteur de 20 et a rapidement été acceptée. John Backus a déclaré lors d’une interview en 1979 avec Think , le magazine des employés d’IBM, “Une grande partie de mon travail vient de la paresse. Je n’aimais pas écrire des programmes, et donc, quand je travaillais sur l’ IBM 701 , j’écrivais des programmes pour l’informatique. trajectoires de missiles, j’ai commencé à travailler sur un système de programmation pour faciliter l’écriture de programmes.” [17]
Le langage a été largement adopté par les scientifiques pour écrire des programmes à forte intensité numérique, ce qui a encouragé les auteurs de compilateurs à produire des compilateurs capables de générer un code plus rapide et plus efficace. L’inclusion d’un type de données de nombre complexe dans le langage a rendu Fortran particulièrement adapté aux applications techniques telles que l’électrotechnique. [18]
En 1960, des versions de FORTRAN étaient disponibles pour les ordinateurs IBM 709 , 650 , 1620 et 7090 . De manière significative, la popularité croissante de FORTRAN a incité les fabricants d’ordinateurs concurrents à fournir des compilateurs FORTRAN pour leurs machines, de sorte qu’en 1963, plus de 40 compilateurs FORTRAN existaient. Pour ces raisons, FORTRAN est considéré comme le premier langage de programmation multiplateforme largement utilisé.
Le développement de Fortran a suivi l’ évolution précoce de la technologie des compilateurs , et de nombreuses avancées dans la théorie et la conception des compilateurs ont été spécifiquement motivées par la nécessité de générer un code efficace pour les programmes Fortran.
Fortran
La version initiale de FORTRAN pour l’IBM 704 contenait 32 instructions , dont :
- DIMENSIONet EQUIVALENCEdéclarations
- Déclarations d’affectation
- Instruction arithmétique IF à trois voies , qui passait le contrôle à l’un des trois emplacements du programme selon que le résultat de l’instruction arithmétique était négatif, zéro ou positif
- IFinstructions pour vérifier les exceptions ( ACCUMULATOR OVERFLOW, QUOTIENT OVERFLOW, et DIVIDE CHECK); et IFinstructions pour manipuler les interrupteurs de détection et les voyants de détection
- GO TO, calculé GO TO, ASSIGNet affectéGO TO
- DOboucles
- E/S formatées : FORMAT, READ, READ INPUT TAPE, WRITE, WRITE OUTPUT TAPE, PRINT, etPUNCH
- E/S non formatées : READ TAPE, READ DRUM, WRITE TAPEetWRITE DRUM
- Autres E/S : END FILE, REWIND, etBACKSPACE
- PAUSE, STOP, etCONTINUE
- FREQUENCYinstruction (pour fournir des conseils d’ optimisation au compilateur).
L’instruction arithmétique IFrappelait (mais n’était pas facilement implémentable par) une instruction de comparaison à trois voies (CAS – Compare Accumulator with Storage) disponible sur le 704. L’instruction fournissait le seul moyen de comparer des nombres – en testant leur différence, avec un accompagnateur risque de débordement. Cette lacune a ensuite été surmontée par des installations “logiques” introduites dans FORTRAN IV.
L’ FREQUENCYinstruction a été utilisée à l’origine (et éventuellement) pour donner des probabilités de branche pour les trois cas de branche de l’instruction arithmétique IF. Le premier compilateur FORTRAN a utilisé cette pondération pour effectuer au moment de la compilation une simulation Monte Carlo du code généré, dont les résultats ont été utilisés pour optimiser le placement des blocs de base en mémoire – une optimisation très sophistiquée pour l’époque. La technique de Monte Carlo est documentée dans l’article de Backus et al. sur cette implémentation originale, The FORTRAN Automatic Coding System :
L’unité fondamentale du programme est le bloc de base ; un bloc de base est une portion de programme qui a un point d’entrée et un point de sortie. Le but de la section 4 est de préparer pour la section 5 une table des prédécesseurs (table PRED) qui énumère les blocs de base et répertorie pour chaque bloc de base chacun des blocs de base qui peut être son prédécesseur immédiat dans le flux, ainsi que la fréquence absolue de chaque lien de bloc de base. Cette table est obtenue en exécutant le programme une fois à la mode Monte-Carlo, dans laquelle le résultat des transferts conditionnels résultant d’instructions de type IF et de GO TO calculés est déterminé par un générateur de nombres aléatoires convenablement pondéré en fonction des instructions FREQUENCY fournies. . [14]
Plusieurs années plus tard, l’ FREQUENCYinstruction n’a eu aucun effet sur le code et a été traitée comme une instruction de commentaire, car les compilateurs ne faisaient plus ce type de simulation au moment de la compilation. Un destin similaire est arrivé aux indications du compilateur dans plusieurs autres langages de programmation, par exemple le mot- clé en C . [ citation nécessaire ]register
Le premier compilateur FORTRAN a rapporté des informations de diagnostic en arrêtant le programme lorsqu’une erreur a été trouvée et en affichant un code d’erreur sur sa console. Ce code pourrait être recherché par le programmeur dans un tableau de messages d’erreur dans le manuel de l’opérateur, en leur fournissant une brève description du problème. [19] [20] Plus tard, une sous-routine de gestion des erreurs pour gérer les erreurs de l’utilisateur telles que la division par zéro, développée par la NASA, [21] a été incorporée, informant les utilisateurs de la ligne de code contenant l’erreur.
Disposition fixe et cartes perforées Code FORTRAN sur une carte perforée , montrant les utilisations spécialisées des colonnes 1–5, 6 et 73–80 Une reproduction d’un formulaire de codage FORTRAN, imprimé sur papier et destiné à être utilisé par les programmeurs pour préparer des programmes à perforer sur des cartes par des opérateurs de frappe . Maintenant obsolète.
Avant le développement des fichiers sur disque, des éditeurs de texte et des terminaux, les programmes étaient le plus souvent entrés sur un clavier perforateur sur des cartes perforées à 80 colonnes , une ligne par carte. Le jeu de cartes résultant serait introduit dans un lecteur de cartes pour être compilé. Les codes de carte perforée ne comprenaient pas de lettres minuscules ni de nombreux caractères spéciaux, et des versions spéciales du poinçon IBM 026 ont été proposées pour imprimer correctement les caractères spéciaux réutilisés utilisés dans FORTRAN.
Reflétant la pratique de la saisie par carte perforée, les programmes Fortran étaient à l’origine écrits dans un format à colonne fixe, les 72 premières colonnes étant lues en douze mots de 36 bits.
Une lettre “C” dans la colonne 1 faisait que la carte entière était traitée comme un commentaire et ignorée par le compilateur. Sinon, les colonnes de la carte étaient divisées en quatre champs :
- 1 à 5 étaient le champ d’étiquette : une séquence de chiffres ici a été prise comme étiquette à utiliser dans les instructions DO ou de contrôle telles que GO TO et IF, ou pour identifier une instruction FORMAT référencée dans une instruction WRITE ou READ. Les zéros non significatifs sont ignorés et 0 n’est pas un numéro d’étiquette valide.
- 6 était un champ de continuation : un caractère autre qu’un blanc ou un zéro ici faisait que la carte était considérée comme une continuation de l’instruction sur la carte précédente. Les cartes de continuation étaient généralement numérotées 1, 2, etc. et la carte de départ pouvait donc avoir zéro dans sa colonne de continuation – qui n’est pas une continuation de sa carte précédente.
- 7 à 72 ont servi de champ de déclaration.
- 73 à 80 ont été ignorés (le lecteur de carte de l’IBM 704 n’utilisait que 72 colonnes). [22]
Les colonnes 73 à 80 pourraient donc être utilisées pour des informations d’identification, telles que la perforation d’un numéro de séquence ou d’un texte, qui pourraient être utilisées pour réorganiser les cartes si une pile de cartes était abandonnée; bien qu’en pratique, cela soit réservé aux programmes de production stables. Un IBM 519 pourrait être utilisé pour copier une plate-forme de programme et ajouter des numéros de séquence. Certains premiers compilateurs, par exemple les IBM 650, avaient des restrictions supplémentaires en raison des limitations de leurs lecteurs de cartes. [23] Les frappes au clavier pouvaient être programmées pour passer à la colonne 7 et sauter après la colonne 72. Les compilateurs ultérieurs ont assoupli la plupart des restrictions de format fixe, et l’exigence a été éliminée dans la norme Fortran 90.
Dans le champ d’instruction, les caractères d’espacement (blancs) étaient ignorés en dehors d’un littéral de texte. Cela permettait d’omettre les espaces entre les jetons pour plus de brièveté ou d’inclure des espaces dans les identifiants pour plus de clarté. Par exemple, AVG OF Xétait un identifiant valide, équivalent à AVGOFX, et était une instruction valide, équivalente à parce que le zéro dans la colonne 6 est traité comme s’il s’agissait d’un espace (!), alors qu’était à la place , l’affectation de 1.101 à une variable appelée . Notez la légère différence visuelle entre une virgule et un point.101010DO101I=1,10110101 DO 101 I = 1, 101101010DO101I=1.10110101 DO101I = 1.101DO101I
Les chaînes Hollerith , autorisées à l’origine uniquement dans les instructions FORMAT et DATA, étaient précédées d’un nombre de caractères et de la lettre H (par exemple, 26HTHIS IS ALPHANUMERIC DATA.), ce qui permettait de conserver les blancs dans la chaîne de caractères. Les erreurs de calcul étaient un problème.
Évolution
FORTRANII
Le FORTRAN II d’IBM est apparu en 1958. La principale amélioration consistait à prendre en charge la programmation procédurale en autorisant des sous-programmes et des fonctions écrits par l’utilisateur qui renvoyaient des valeurs avec des paramètres passés par référence . L’instruction COMMON fournissait aux sous-programmes un moyen d’accéder aux variables communes (ou globales ). Six nouvelles déclarations ont été introduites : [24]
- SUBROUTINE, FUNCTION, etEND
- CALLetRETURN
- COMMON
Au cours des prochaines années, FORTRAN II ajoutera également la prise en charge des types de données DOUBLE PRECISIONet .COMPLEX
Les premiers compilateurs FORTRAN ne prenaient en charge aucune récursivité dans les sous-programmes. Les premières architectures informatiques ne prenaient en charge aucun concept de pile, et lorsqu’elles prenaient directement en charge les appels de sous-programmes, l’emplacement de retour était souvent stocké dans un emplacement fixe adjacent au code de sous-programme (par exemple, l ‘ IBM 1130 ) ou un registre de machine spécifique ( IBM 360 et seq ), qui n’autorise la récursivité que si une pile est gérée par un logiciel et que l’adresse de retour est stockée sur la pile avant que l’appel ne soit effectué et restaurée après le retour de l’appel. Bien que non spécifié dans FORTRAN 77, de nombreux compilateurs F77 prenaient en charge la récursivité en option, et les mainframes Burroughs, conçu avec la récursivité intégrée, l’a fait par défaut. Il est devenu un standard en Fortran 90 via le nouveau mot clé RECURSIVE. [25]
Programme FORTRAN II simple
Ce programme, pour la formule de Heron, lit les données sur une bobine de bande contenant trois nombres entiers à 5 chiffres A, B et C en entrée. Il n’y a pas de déclarations de « type » disponibles : les variables dont le nom commence par I, J, K, L, M ou N sont des « virgules fixes » (c’est-à-dire des entiers), sinon des virgules flottantes. Comme les entiers doivent être traités dans cet exemple, les noms des variables commencent par la lettre “I”. Le nom d’une variable doit commencer par une lettre et peut continuer avec des lettres et des chiffres, jusqu’à une limite de six caractères en FORTRAN II. Si A, B et C ne peuvent pas représenter les côtés d’un triangle en géométrie plane, l’exécution du programme se terminera avec un code d’erreur “STOP 1”. Sinon, une ligne de sortie sera imprimée indiquant les valeurs d’entrée pour A, B et C,
C ZONE D’UN TRIANGLE AVEC UNE RACINE CARRÉE STANDARD FONCTION C ENTRÉE – LECTEUR DE BANDE UNITÉ 5, ENTRÉE ENTIÈRE C SORTIE – IMPRIMANTE EN LIGNE UNITÉ 6, SORTIE RÉELLE C ENTRÉE ERREUR AFFICHAGE ERREUR CODE DE SORTIE 1 DANS LA LISTE DE CONTRÔLE DES TRAVAUX LIRE ENTRÉE BANDE 5 , 501 , FORMAT IA , IB , IC 501 ( 3 I5 ) C IA, IB ET IC NE PEUVENT PAS ÊTRE NÉGATIFS OU ZÉRO C DE PLUS, LA SOMME DES DEUX CÔTÉS D’UN TRIANGLE C DOIT ÊTRE PLUS GRANDE QUE LE TROISIÈME CÔTÉ, DONC NOUS VÉRIFIONS CELA, TROP SI ( IA ) 777 , 777 , 701 701 SI ( IB ) 777 , 777 , 702 702 SI ( IC ) 777 , 777 , 703 703 SI ( IA + IB – IC ) 777 , 777 , 704 704 SI ( IA + IC – IB ) 777 , 777 , 705 705 SI ( IB + IC – IA) 777 , 777 , 799 777 STOP 1 C EN UTILISANT LA FORMULE DE HERON NOUS CALCULONS LA SURFACE C DU TRIANGLE 799 S = FLOATF ( IA + IB + IC ) / 2.0 AREA = SQRTF ( S * ( S – FLOATF ( IA )) * ( S – FLOATF ( IB )) * + ( S – FLOATF ( IC ))) ECRITURE BANDE DE SORTIE 6 , 601 , IA , IB , IC , ZONE 601 FORMAT ( 4 H A = , I5 , 5 H B = , I5 , 5 H C = , I5 , 8 H ZONE = , F10 . 2 , + 13 H UNITÉS CARRÉES ) FIN FIN
FORTRAN III
IBM a également développé un FORTRAN III en 1958 qui permettait le code d’ assemblage en ligne entre autres fonctionnalités; cependant, cette version n’a jamais été publiée en tant que produit. Comme le 704 FORTRAN et le FORTRAN II, le FORTRAN III comprenait des fonctionnalités dépendantes de la machine qui rendaient le code écrit dedans non portable d’une machine à l’autre. [9] : 76 Les premières versions de FORTRAN fournies par d’autres vendeurs souffraient du même inconvénient.
IBM 1401 FORTRAN
FORTRAN a été fourni pour l ‘ ordinateur IBM 1401 par un compilateur innovant à 63 phases qui s’exécutait entièrement dans sa mémoire centrale de seulement 8000 caractères (six bits). Le compilateur peut être exécuté à partir d’une bande ou d’un jeu de 2 200 cartes ; il n’utilisait plus de bande ou de stockage sur disque. Il gardait le programme en mémoire et chargeait des superpositions qui le transformaient progressivement, sur place, en une forme exécutable, comme décrit par Haines. [26] Cet article a été réimprimé, édité, dans les deux éditions de Anatomy of a Compiler [27] et dans le manuel IBM “Fortran Specifications and Operating Procedures, IBM 1401”. [28] La forme exécutable n’était pas entièrement en langage machine; au lieu de cela, l’arithmétique à virgule flottante, les sous-scripts, les entrées / sorties et les références de fonction ont été interprétées, précédant le code P UCSD Pascal de deux décennies.
IBM a ensuite fourni un compilateur FORTRAN IV pour la série d’ordinateurs 1400. [29]
FORTRANIV
IBM a commencé le développement de FORTRAN IV à partir de 1961, à la suite des demandes des clients. FORTRAN IV a supprimé les fonctionnalités dépendantes de la machine de FORTRAN II (telles que READ INPUT TAPE), tout en ajoutant de nouvelles fonctionnalités telles qu’un LOGICALtype de données , des expressions booléennes logiques et l’ instruction IF logique comme alternative à l’ instruction IF arithmétique. FORTRAN IV a finalement été publié en 1962, d’abord pour l’ ordinateur IBM 7030 (“Stretch”), suivi de versions pour l’ IBM 7090 , IBM 7094 , et plus tard pour l ‘ IBM 1401 en 1966.
En 1965, FORTRAN IV était censé être conforme à la norme en cours d’élaboration par le groupe de travail X3.4.3 FORTRAN de l’ American Standards Association . [30]
Entre 1966 et 1968, IBM a proposé plusieurs compilateurs FORTRAN IV pour son System/360 , chacun nommé par des lettres indiquant la quantité minimale de mémoire dont le compilateur avait besoin pour fonctionner. [31] Les lettres (F, G, H) correspondaient aux codes utilisés avec les numéros de modèle System/360 pour indiquer la taille de la mémoire, chaque incrément de lettre étant un facteur de deux plus grand : [32] : p. 5
- 1966 : FORTRAN IV F pour DOS/360 (64K octets)
- 1966 : FORTRAN IV G pour OS/360 (128K octets)
- 1968 : FORTRAN IV H pour OS/360 (256K octets)
Digital Equipment Corporation a maintenu DECSYSTEM-10 Fortran IV (F40) pour PDP-10 de 1967 à 1975 [33]
À peu près à cette époque, FORTRAN IV avait commencé à devenir un outil pédagogique important et des implémentations telles que WATFOR et WATFIV de l’Université de Waterloo ont été créées pour simplifier les processus complexes de compilation et de liaison des compilateurs précédents.
Fortran 66
Le développement le plus important dans l’histoire des débuts de FORTRAN a peut-être été la décision de l’ American Standards Association (aujourd’hui American National Standards Institute (ANSI)) de former un comité parrainé par BEMA, la Business Equipment Manufacturers Association , pour développer une norme américaine Fortran . Les deux normes résultantes, approuvées en mars 1966, définissaient deux langages, FORTRAN (basé sur FORTRAN IV, qui avait servi de norme de facto) et Basic FORTRAN (basé sur FORTRAN II, mais dépouillé de ses fonctionnalités dépendantes de la machine). Le FORTRAN défini par la première norme, officiellement noté X3.9-1966, est devenu connu sous le nom de FORTRAN 66(bien que beaucoup aient continué à l’appeler FORTRAN IV, le langage sur lequel la norme était largement basée). FORTRAN 66 est effectivement devenu la première version standard de l’industrie de FORTRAN. FORTRAN 66 inclus :
- Programme principal, SUBROUTINE, FUNCTIONet BLOCK DATAunités de programme
- INTEGER, REAL, DOUBLE PRECISION, COMPLEX, et LOGICAL types de données
- COMMON, DIMENSION, et EQUIVALENCEdéclarations
- DATAinstruction pour spécifier les valeurs initiales
- Fonctions intrinsèques et EXTERNAL(par exemple, bibliothèque)
- Déclaration d’affectation
- GO TO, calculé GO TO, affecté GO TOet ASSIGNinstructions
- Énoncés logiques et arithmétiques ( à IFtrois voies)IF
- DOinstruction de boucle
- READ, WRITE, BACKSPACE, REWINDet ENDFILEinstructions pour les E/S séquentielles
- FORMATdéclaration et format assigné
- CALL, RETURN, PAUSE, et STOPdéclarations
- Constantes de Hollerith dans les instructions DATAet FORMAT, et comme arguments des procédures
- Identifiants de six caractères maximum
- Lignes de commentaire
- ENDdoubler
Fortran 77
Programme FORTRAN-77 avec sortie de compilateur, écrit sur un CDC 175 à l’Université RWTH Aachen , Allemagne, en 1987 4.3 BSD pour Digital Equipment Corporation (DEC) VAX , affichant le manuel du compilateur FORTRAN 77 (f77)
Après la publication de la norme FORTRAN 66, les fournisseurs de compilateurs ont introduit plusieurs extensions de la norme Fortran , incitant le comité ANSI X3J3 en 1969 à commencer à travailler sur la révision de la norme de 1966, sous le parrainage de CBEMA , la Computer Business Equipment Manufacturers Association (anciennement BEMA). Les versions finales de cette norme révisée ont circulé en 1977, ce qui a conduit à l’approbation formelle de la nouvelle norme FORTRAN en avril 1978. La nouvelle norme, appelée FORTRAN 77 et officiellement notée X3.9-1978, a ajouté un certain nombre de fonctionnalités importantes pour répondre à de nombreux problèmes. défauts du FORTRAN 66 :
- Bloc IFet instructions, avec des clauses et END IFfacultatives , pour fournir une meilleure prise en charge du langage pour la programmation structuréeELSEELSE IF
- DOextensions de boucle, y compris les expressions de paramètre, les incréments négatifs et le nombre de trajets nuls
- OPEN, CLOSE, et INQUIREinstructions pour une capacité d’E/S améliorée
- E/S de fichiers à accès direct
- IMPLICIT, pour remplacer les conventions implicites selon lesquelles les variables non déclarées sont INTEGER si leur nom commence par I, J, K, L, M ou N (et REAL sinon)
- CHARACTERtype de données, remplaçant les chaînes Hollerith par des fonctionnalités considérablement étendues pour l’entrée et la sortie de caractères et le traitement de données basées sur des caractères
- PARAMETERinstruction pour spécifier des constantes
- SAVEinstruction pour les variables locales persistantes
- Noms génériques pour les fonctions intrinsèques (par exemple SQRT, accepte également des arguments d’autres types, tels que COMPLEXou REAL*16).
- Un ensemble d’intrinsèques ( LGE, LGT, LLE, LLT) pour la comparaison lexicale de chaînes, basé sur la séquence de classement ASCII . (Ces fonctions ASCII ont été exigées par le département américain de la Défense , dans leur vote d’approbation conditionnelle. [ citation nécessaire ] )
Dans cette révision de la norme, un certain nombre de fonctionnalités ont été supprimées ou modifiées d’une manière qui pourrait invalider des programmes auparavant conformes à la norme. (La suppression était la seule alternative autorisée à X3J3 à l’époque, car le concept de ” dépréciation ” n’était pas encore disponible pour les normes ANSI.) Alors que la plupart des 24 éléments de la liste des conflits (voir l’annexe A2 de X3.9-1978) comblant des lacunes ou des cas pathologiques autorisés par la norme antérieure mais rarement utilisés, un petit nombre de capacités spécifiques ont été délibérément supprimées, telles que :
- Constantes de Hollerith et données de Hollerith , telles queGREET = 12HHELLO THERE!
- Lecture dans un descripteur d’édition H (champ Hollerith) dans une spécification FORMAT
- Surindexation des limites de tableau par des indices COTE A ( 10 , 5 ) Y = A ( 11 , 1 )
- Transfert de contrôle depuis et vers la plage d’une boucle DO (également appelée « plage étendue »)
Transition vers la norme ANSI Fortran
Le développement d’une norme révisée pour succéder à FORTRAN 77 serait retardé à plusieurs reprises car le processus de normalisation avait du mal à suivre les changements rapides des pratiques informatiques et de programmation. Entre-temps, en tant que « FORTRAN standard » pendant près de quinze ans, le FORTRAN 77 deviendrait le dialecte historiquement le plus important.
Une extension pratique importante de FORTRAN 77 a été la publication de MIL-STD-1753 en 1978. [34] Cette spécification, développée par le département américain de la Défense , a normalisé un certain nombre de fonctionnalités implémentées par la plupart des compilateurs FORTRAN 77 mais non incluses dans l’ANSI. Norme FORTRAN 77. Ces fonctionnalités seraient éventuellement intégrées dans la norme Fortran 90.
- DO WHILE, EXIT, CYCLE, et END DOdéclarations
- INCLUDEdéclaration
- IMPLICIT NONEvariante de l’ IMPLICITénoncé
- Fonctions intrinsèques de manipulation de bits , basées sur des fonctions similaires incluses dans Industrial Real-Time Fortran (ANSI/ISA S61.1 (1976))
La norme IEEE 1003.9 POSIX , publiée en 1991, fournissait aux programmeurs FORTRAN 77 un moyen simple d’émettre des appels système POSIX. [35] Plus de 100 appels ont été définis dans le document – permettant l’accès au contrôle de processus compatible POSIX, à la gestion des signaux, au contrôle du système de fichiers, au contrôle des périphériques, au pointage de procédure et aux E/S de flux de manière portable.
Fortran 90
Le successeur très retardé de FORTRAN 77, officieusement connu sous le nom de Fortran 90 (et avant cela, Fortran 8X ), a finalement été publié en tant que norme ISO/IEC 1539:1991 en 1991 et en tant que norme ANSI en 1992. En plus de changer le nom officiel orthographe de FORTRAN à Fortran, cette révision majeure a ajouté de nombreuses nouvelles fonctionnalités pour refléter les changements importants dans les pratiques de programmation qui avaient évolué depuis la norme de 1978 :
- L’ entrée de source de forme libre a supprimé le besoin d’ignorer les six premières positions de caractère avant d’entrer des instructions.
- Mots clés Fortran en minuscules
- Identifiants jusqu’à 31 caractères (dans la norme précédente, il n’y avait que six caractères).
- Commentaires intégrés
- Capacité à opérer sur des tableaux (ou des sections de tableau) dans leur ensemble, simplifiant ainsi considérablement les calculs mathématiques et d’ingénierie.
- des instructions d’affectation de tableau entières, partielles et masquées et des expressions de tableau, telles queX(1:N)=R(1:N)*COS(A(1:N))
- WHEREinstruction pour l’affectation sélective d’un tableau
- constantes et expressions à valeur de tableau,
- fonctions et constructeurs de tableaux définis par l’utilisateur.
- RECURSIVEprocédures
- Modules , pour regrouper les procédures et les données associées et les mettre à la disposition d’autres unités de programme, y compris la capacité de limiter l’accessibilité à certaines parties spécifiques du module.
- Un mécanisme de passage d’arguments considérablement amélioré, permettant de vérifier les interfaces au moment de la compilation
- Interfaces écrites par l’utilisateur pour les procédures génériques
- Surcharge de l’opérateur
- Types de données dérivés (structurés)
- Nouvelle syntaxe de déclaration de type de données, pour spécifier le type de données et d’autres attributs de variables
- Allocation dynamique de mémoire au moyen de l’ ALLOCATABLEattribut et des instructions ALLOCATEetDEALLOCATE
- POINTERattribut, affectation de pointeur et NULLIFYinstruction pour faciliter la création et la manipulation de structures de données dynamiques
- Constructions de boucles structurées, avec une END DOinstruction pour terminer la boucle et EXITet CYCLEdes instructions pour terminer les itérations de boucle normales DOde manière ordonnée
- SELECT. . . CASEconstruire pour la sélection multidirectionnelle
- Spécification portable de la précision numérique sous le contrôle de l’utilisateur
- Procédures intrinsèques nouvelles et améliorées.
Obsolescence et suppressions
Contrairement à la révision précédente, Fortran 90 n’a supprimé aucune fonctionnalité. [36] Tout programme FORTRAN 77 conforme à la norme était également conforme à la norme sous Fortran 90, et l’une ou l’autre des normes aurait dû être utilisable pour définir son comportement.
Un petit ensemble de fonctionnalités ont été identifiées comme “obsolescentes” et devaient être supprimées dans une future norme. Toutes les fonctionnalités de ces fonctionnalités de la première version peuvent être exécutées par des fonctionnalités Fortran plus récentes. Certains sont conservés pour simplifier le portage d’anciens programmes mais beaucoup ont été supprimés en Fortran 95.
Fonction obsolète | Statut actuel |
---|---|
Instruction IF arithmétique | Supprimé |
Paramètres DO non entiers ou variables de contrôle | Supprimé |
Terminaison de boucle DO partagée ou terminaison avec une instruction autre que END DO ou CONTINUE | Supprimé |
Branchement à END IF depuis l’extérieur d’un bloc | Supprimé |
Retour alternatif | Obsolescent |
Instruction PAUSE | Supprimé |
Instruction ASSIGN et instruction GO TO affectée | Supprimé |
Numéros d’instruction attribués et spécificateurs FORMAT | Supprimé |
H modifier les descripteurs | Supprimé |
Instruction GO TO calculée | Obsolescent |
Fonctions d’instruction | Obsolescent |
Instructions DATA parmi les instructions exécutables | Obsolescent |
CHARACTER* formulaire de déclaration de CHARACTER | Obsolescent |
Fonctions de longueur de caractères supposées | Obsolescent |
Code source de formulaire fixe | Obsolescent |
“Bonjour le monde!” Exemple programme helloworld print * , “Hello, World!” fin du programme helloworld
Fortran 95
Fortran 95 , publié officiellement sous le nom d’ISO/IEC 1539-1:1997, était une révision mineure, principalement pour résoudre certains problèmes en suspens de la norme Fortran 90. Néanmoins, Fortran 95 a également ajouté un certain nombre d’extensions, notamment issues de la spécification High Performance Fortran :
- FORALLet constructions imbriquées WHEREpour faciliter la vectorisation
- Défini par l’utilisateur PUREet ELEMENTALprocédures
- Initialisation par défaut des composants de type dérivé, y compris l’initialisation du pointeur
- Extension de la possibilité d’utiliser des expressions d’initialisation pour les objets de données
- Initialisation des pointeurs versNULL()
- Il est clairement défini que ALLOCATABLEles tableaux sont automatiquement désalloués lorsqu’ils sortent de la portée.
Un certain nombre de fonctions intrinsèques ont été étendues (par exemple, un dimargument a été ajouté à l’ maxlocintrinsèque).
Plusieurs fonctionnalités notées dans Fortran 90 comme “obsolescentes” ont été supprimées de Fortran 95 :
- DOinstructions utilisant REALet DOUBLE PRECISIONvariables d’index
- Branchement vers une END IFinstruction depuis l’extérieur de son bloc
- PAUSEdéclaration
- ASSIGNet l’ GO TOinstruction affectée, et les spécificateurs de format affectés
- HHollerith modifier le descripteur.
Un complément important à Fortran 95 était le rapport technique ISO TR-15581: Enhanced Data Type Facilities , officieusement connu sous le nom de Allocatable TR. Cette spécification définissait l’utilisation améliorée des ALLOCATABLEtableaux, avant la disponibilité de compilateurs Fortran entièrement conformes à Fortran 2003. Ces utilisations incluent les ALLOCATABLEtableaux en tant que composants de type dérivé, dans les listes d’arguments factices de procédure et en tant que valeurs de retour de fonction. ( ALLOCATABLEles tableaux sont préférables aux POINTERtableaux basés sur – car ALLOCATABLEles tableaux sont garantis par Fortran 95 pour être désalloués automatiquement lorsqu’ils sortent de la portée, éliminant ainsi la possibilité de fuite de mémoire . De plus, les éléments des tableaux allouables sont contigus et les aliasn’est pas un problème pour l’optimisation des références de tableau, permettant aux compilateurs de générer du code plus rapidement que dans le cas des pointeurs. [37] )
Un autre complément important à Fortran 95 était le rapport technique ISO TR-15580 : Gestion des exceptions en virgule flottante , officieusement connu sous le nom de IEEE TR. Cette spécification définissait la prise en charge de l’arithmétique en virgule flottante IEEE et de la gestion des exceptions en virgule flottante .
Compilation conditionnelle et chaînes de longueur variable
En plus du “Langage de base” obligatoire (défini dans ISO/IEC 1539-1 : 1997), le langage Fortran 95 comprend également deux modules optionnels :
- Chaînes de caractères de longueur variable (ISO/IEC 1539-2 : 2000)
- Compilation conditionnelle (ISO/CEI 1539-3 : 1998)
qui, ensemble, composent la Norme internationale en plusieurs parties (ISO/CEI 1539).
Selon les développeurs de normes, “les parties optionnelles décrivent des fonctionnalités autonomes qui ont été demandées par un nombre substantiel d’utilisateurs et/ou d’implémenteurs, mais qui ne sont pas jugées suffisamment générales pour qu’elles soient requises dans toutes les applications conformes aux normes. compilateurs Fortran.” Néanmoins, si un Fortran conforme à la norme fournit de telles options, elles “doivent être fournies conformément à la description de ces installations dans la partie appropriée de la norme”.
Fortran moderne
Le langage défini par les normes du XXIe siècle, notamment en raison de son incorporation du support de la programmation orientée objet et par la suite du Coarray Fortran , est souvent appelé « Modern Fortran », et le terme est de plus en plus utilisé dans la littérature. [38]
Fortran 2003
Fortran 2003, officiellement publié sous le nom d’ISO/IEC 1539-1:2004, est une révision majeure introduisant de nombreuses nouvelles fonctionnalités. [39] Un résumé complet des nouvelles fonctionnalités de Fortran 2003 est disponible sur le site Web officiel du groupe de travail Fortran ( ISO/IEC JTC1/SC22 /WG5). [40]
À partir de cet article, les principales améliorations de cette révision incluent :
- Améliorations des types dérivés : types dérivés paramétrés, contrôle amélioré de l’accessibilité, constructeurs de structure améliorés et finaliseurs
- Prise en charge de la programmation orientée objet : extension et héritage de type , polymorphisme , allocation de type dynamique et procédures liées au type, offrant une prise en charge complète des types de données abstraits
- Améliorations de la manipulation de données : composants allouables (incorporant TR 15581), paramètres de type différé, VOLATILEattribut , spécification de type explicite dans les constructeurs de tableau et les instructions d’allocation, améliorations du pointeur, expressions d’initialisation étendues et procédures intrinsèques améliorées
- Améliorations des entrées/sorties : transfert asynchrone , accès au flux, opérations de transfert spécifiées par l’utilisateur pour les types dérivés, contrôle spécifié par l’utilisateur de l’arrondi lors des conversions de format, constantes nommées pour les unités préconnectées, l’ FLUSHinstruction, la régularisation des mots-clés et l’accès aux messages d’erreur
- Pointeurs de procédure
- Prise en charge de l’arithmétique à virgule flottante IEEE et de la gestion des exceptions à virgule flottante (incorporant TR 15580)
- Interopérabilité avec le langage de programmation C
- Prise en charge de l’utilisation internationale : accès aux caractères ISO 10646 4 octets et choix de la décimale ou de la virgule dans les entrées/sorties au format numérique
- Intégration améliorée avec le système d’exploitation hôte : accès aux arguments de ligne de commande , aux variables d’environnement et aux messages d’erreur du processeur
Un complément important à Fortran 2003 était le rapport technique ISO TR-19767 : Enhanced module facility in Fortran. Ce rapport a fourni des sous-modules, qui rendent les modules Fortran plus similaires aux modules Modula-2 . Ils sont similaires aux sous-unités enfants privées Ada . Cela permet à la spécification et à l’implémentation d’un module d’être exprimées dans des unités de programme séparées, ce qui améliore l’emballage de grandes bibliothèques, permet la préservation des secrets commerciaux tout en publiant des interfaces définitives et empêche les cascades de compilation.
Fortran 2008
ISO/IEC 1539-1 :2010, officieusement connue sous le nom de Fortran 2008, a été approuvée en septembre 2010 . quelques nouvelles capacités. Les nouvelles fonctionnalités incluent :
- Sous-modules – facilités de structuration supplémentaires pour les modules ; remplace ISO/CEI TR 19767:2005
- Coarray Fortran – un modèle d’exécution parallèle
- La construction DO CONCURRENT – pour les itérations de boucle sans interdépendances
- L’attribut CONTIGUOUS – pour spécifier les restrictions d’agencement du stockage
- La construction BLOCK – peut contenir des déclarations d’objets avec une portée de construction
- Composants allouables récursifs – comme alternative aux pointeurs récursifs dans les types dérivés
Le projet final de norme internationale (FDIS) est disponible sous la référence N1830. [43]
Un supplément à Fortran 2008 est la spécification technique (TS) 29113 de l’ Organisation internationale de normalisation (ISO) sur la poursuite de l’interopérabilité de Fortran avec C , [44] [45] qui a été soumise à l’ISO en mai 2012 pour approbation. La spécification ajoute la prise en charge de l’accès au descripteur de tableau à partir de C et permet d’ignorer le type et le rang des arguments.
Fortran 2018
La dernière révision du langage (Fortran 2018) était auparavant appelée Fortran 2015. [46] Il s’agit d’une révision importante et a été publiée le 28 novembre 2018. [47]
Fortran 2018 intègre deux spécifications techniques précédemment publiées :
- ISO/IEC TS 29113:2012 Interopérabilité supplémentaire avec C [48]
- ISO/IEC TS 18508:2015 Fonctionnalités parallèles supplémentaires dans Fortran [49]
Les modifications supplémentaires et les nouvelles fonctionnalités incluent la prise en charge de la norme ISO/IEC/IEEE 60559:2011 (la version de la norme à virgule flottante IEEE avant la dernière révision mineure IEEE 754-2019), l’entrée/sortie hexadécimale, les améliorations IMPLICIT NONE et d’autres modifications. [50] [51] [52] [53]
Caractéristiques linguistiques
Une description complète des fonctionnalités du langage Fortran apportées par Fortran 95 est couverte dans l’article connexe, Fonctionnalités du langage Fortran 95 . Les versions linguistiques définies par les normes ultérieures sont souvent appelées collectivement «Fortran moderne» et sont décrites dans la littérature.
Sciences et ingénierie
Simulation Fortran magnétohydrodynamique relativiste générale de l’accrétion de trous noirs à l’aide du code BHAC avec maillage adaptatif cartésien (www.bhac.science). Vitesse et température de surface de la mer dans les océans, calculées avec le code NEMO Fortran (Nucleus for European Modeling of the Ocean, https://www.nemo-ocean.eu ) au Barcelona Supercomputing Center (2020).
Bien qu’un article de revue de 1968 par les auteurs de BASIC ait déjà décrit FORTRAN comme “à l’ancienne”, [54] à partir de 2022 , des [mettre à jour]programmes ont été écrits en Fortran pendant plus de six décennies et il existe un vaste ensemble de logiciels Fortran utilisés quotidiennement dans tout le monde. communautés scientifiques et techniques. [55] Jay Pasachoff a écrit en 1984 que “les étudiants en physique et en astronomie doivent simplement apprendre le FORTRAN. Il existe tellement de choses dans le FORTRAN qu’il semble peu probable que les scientifiques passent au Pascal , Modula-2 ou autre.” [56] En 1993, Cecil E. Leitha appelé FORTRAN la “langue mère du calcul scientifique”, ajoutant que son remplacement par tout autre langage possible “peut rester un vain espoir”. [57]
C’est le langage principal pour certaines des tâches de super-informatique les plus intensives , telles que l’astronomie , la modélisation climatique , la chimie computationnelle, l’économie computationnelle , la dynamique des fluides computationnelle , la physique computationnelle , l’analyse de données, [58] la modélisation hydrologique , l’algèbre linéaire numérique et bibliothèques numériques ( LAPACK , IMSL et NAG ), optimisation , simulation satellitaire, ingénierie structurelle et prévision météorologique . [ citation nécessaire ]De nombreux benchmarks en virgule flottante pour évaluer les performances des nouveaux processeurs informatiques, tels que les composants en virgule flottante des benchmarks SPEC (par exemple, CFP2006 , CFP2017 ) sont écrits en Fortran. Les algorithmes mathématiques sont bien documentés dans Numerical Recipes .
En dehors de cela, les codes plus modernes de la science informatique utilisent généralement de grandes bibliothèques de programmes, telles que METIS pour le partitionnement de graphes, PETSc ou Trilinos pour les capacités d’algèbre linéaire, deal.II ou FEniCS pour le support des maillages et des éléments finis, et d’autres bibliothèques génériques. Depuis le début des années 2000, de nombreuses bibliothèques de support largement utilisées ont également été implémentées en C et, plus récemment, en C++ . D’autre part, les langages de haut niveau tels que MATLAB , Python et Rsont devenus populaires dans des domaines particuliers de la science informatique. Par conséquent, une fraction croissante des programmes scientifiques est également écrite dans ces langages de script de niveau supérieur. Pour cette raison, des fonctionnalités d’inter-opération avec C ont été ajoutées à Fortran 2003 et améliorées par la spécification technique ISO/IEC 29113, qui a été incorporée dans Fortran 2018 pour permettre une inter-opération plus flexible avec d’autres langages de programmation.
Le logiciel pour les sondes de la NASA Voyager 1 et Voyager 2 a été écrit à l’origine en FORTRAN 5, puis porté en FORTRAN 77. Au 25 septembre 2013 [mettre à jour], certains logiciels sont toujours écrits en Fortran et d’autres ont été portés en C. [59]
Portabilité
La portabilité était un problème au début car il n’y avait pas de norme convenue – pas même le manuel de référence d’IBM – et les sociétés informatiques rivalisaient pour différencier leurs offres des autres en fournissant des fonctionnalités incompatibles. Les normes ont amélioré la portabilité. La norme de 1966 a fourni une syntaxe et une sémantique de référence, mais les fournisseurs ont continué à fournir des extensions incompatibles. Bien que des programmeurs prudents se soient rendus compte que l’utilisation d’extensions incompatibles causait des problèmes de portabilité coûteux, et utilisaient donc des programmes tels que The PFORT Verifier, [60] [61] ce n’est qu’après la norme de 1977, lorsque le National Bureau of Standards ( maintenant NIST ) publié FIPS PUB 69, que les processeurs achetés par le gouvernement américain étaient tenus de diagnostiquer les extensions de la norme. Plutôt que d’offrir deux processeurs, pratiquement chaque compilateur avait finalement au moins une option pour diagnostiquer les extensions. [62] [63]
Les extensions incompatibles n’étaient pas le seul problème de portabilité. Pour les calculs numériques, il est important de tenir compte des caractéristiques de l’arithmétique. Cela a été abordé par Fox et al. dans le cadre de la norme de 1966 par la bibliothèque PORT . [61] Les idées qui s’y trouvent sont devenues largement utilisées et ont finalement été incorporées dans la norme de 1990 au moyen de fonctions d’enquête intrinsèques. L’adoption généralisée (maintenant presque universelle) de la norme IEEE 754 pour l’arithmétique binaire à virgule flottante a essentiellement éliminé ce problème.
L’accès à l’environnement informatique (par exemple, la ligne de commande du programme, les variables d’environnement, l’explication textuelle des conditions d’erreur) est resté un problème jusqu’à ce qu’il soit résolu par la norme de 2003.
De grandes collections de logiciels de bibliothèque qui pourraient être décrites comme étant vaguement liées à l’ingénierie et aux calculs scientifiques, telles que les bibliothèques graphiques, ont été écrites en C, et leur accès présentait donc un problème de portabilité. Ce problème a été résolu par l’incorporation de l’interopérabilité C dans la norme de 2003.
Il est maintenant possible (et relativement facile) d’écrire un programme entièrement portable en Fortran, même sans recourir à un préprocesseur .
Variantes obsolètes
Jusqu’à ce que la norme Fortran 66 soit développée, chaque compilateur supportait sa propre variante de Fortran. Certains étaient plus éloignés du courant dominant que d’autres.
Le premier compilateur Fortran a établi un haut niveau d’efficacité pour le code compilé. Cet objectif rendait difficile la création d’un compilateur, il était donc généralement réalisé par les fabricants d’ordinateurs pour soutenir les ventes de matériel. Cela laissait un créneau important : des compilateurs rapides et fournissant de bons diagnostics pour le programmeur (souvent un étudiant). Les exemples incluent Watfor, Watfiv, PUFFT et, à plus petite échelle, FORGO, Wits Fortran et Kingston Fortran 2.
Fortran 5 a été commercialisé par Data General Corp à la fin des années 1970 et au début des années 1980, pour les gammes d’ordinateurs Nova , Eclipse et MV . Il avait un compilateur d’optimisation qui était assez bon pour les mini-ordinateurs de son époque. Le langage ressemble le plus à FORTRAN 66.
FORTRAN V a été distribué par Control Data Corporation en 1968 pour la série CDC 6600 . Le langage était basé sur FORTRAN IV. [64]
Univac a également proposé un compilateur pour la série 1100 connu sous le nom de FORTRAN V. Un spin-off d’Univac Fortran V était Athena FORTRAN.
Des variantes spécifiques produites par les fournisseurs d’ordinateurs scientifiques hautes performances ( par exemple, Burroughs , Control Data Corporation (CDC), Cray , Honeywell , IBM , Texas Instruments et UNIVAC ) ont ajouté des extensions à Fortran pour tirer parti de fonctionnalités matérielles spéciales telles que l’ instruction cache , pipelines CPU et tableaux vectoriels. Par exemple, l’un des compilateurs FORTRAN d’IBM ( H Extended IUP ) avait un niveau d’optimisation qui réordonnait les instructions du code machine pour occuper simultanément plusieurs unités internes de calcul. Un autre exemple est CFD , une variante spéciale de FORTRAN conçue spécifiquement pour le supercalculateur ILLIAC IV , fonctionnant au centre de recherche Ames de la NASA . IBM Research Labs a également développé un langage étendu basé sur FORTRAN appelé VECTRAN pour le traitement des vecteurs et des matrices.
Fortran orienté objet était une extension orientée objet de Fortran, dans laquelle les éléments de données peuvent être regroupés en objets, qui peuvent être instanciés et exécutés en parallèle. Il était disponible pour Sun, Iris, iPSC et nCUBE, mais n’est plus pris en charge.
Ces extensions spécifiques aux machines ont soit disparu au fil du temps, soit ont intégré des éléments dans les principales normes. La principale extension restante est OpenMP , qui est une extension multiplateforme pour la programmation en mémoire partagée. Une nouvelle extension, Coarray Fortran, est destinée à prendre en charge la programmation parallèle.
FOR TRANSIT était le nom d’une version réduite du langage IBM 704 FORTRAN, qui a été implémenté pour l’IBM 650, à l’aide d’un programme de traduction développé chez Carnegie à la fin des années 1950. [65] Le commentaire suivant apparaît dans l’IBM Reference Manual ( FOR TRANSIT Automatic Coding System C28-4038, Copyright 1957, 1959 by IBM) :
Le système FORTRAN a été conçu pour une machine plus complexe que le 650 et, par conséquent, certaines des 32 instructions figurant dans le manuel de référence du programmeur FORTRAN ne sont pas acceptables pour le système FOR TRANSIT. De plus, certaines restrictions au langage FORTRAN ont été ajoutées. Cependant, aucune de ces restrictions ne rend un programme source écrit pour FOR TRANSIT incompatible avec le système FORTRAN pour le 704.
Les déclarations autorisées étaient :
- Énoncés d’affectation arithmétique, par exemple,a = b
- GO to n
- GO TO (n1, n2, …, nm), i
- IF (a) n1, n2, n3
- PAUSE
- STOP
- DO n i = m1, m2
- CONTINUE
- END
- READ n, list
- PUNCH n, list
- DIMENSION V, V, V, …
- EQUIVALENCE (a,b,c), (d,c), …
Jusqu’à dix sous-programmes peuvent être utilisés dans un programme.
Les instructions FOR TRANSIT étaient limitées aux colonnes 7 à 56 uniquement. Des cartes perforées ont été utilisées pour l’entrée et la sortie sur l’IBM 650. Trois passes ont été nécessaires pour traduire le code source en langage “IT”, puis pour compiler les instructions IT en langage d’assemblage SOAP, et enfin pour produire le programme objet, qui pourrait alors être chargé dans la machine pour exécuter le programme (en utilisant des cartes perforées pour la saisie des données et en sortant les résultats sur des cartes perforées).
Deux versions existaient pour les 650 avec un tambour mémoire de 2000 mots : FOR TRANSIT I(S) et FOR TRANSIT II, ce dernier pour les machines équipées de registres d’indexation et d’ arithmétique automatique décimale à virgule flottante ( bi-quinaire ). L’annexe A du manuel comprenait des schémas de câblage pour le panneau de commande du lecteur de cartes/perforation IBM 533 .
Langages basés sur Fortran
Avant FORTRAN 77, un certain nombre de préprocesseurs étaient couramment utilisés pour fournir un langage plus convivial, avec l’avantage que le code prétraité pouvait être compilé sur n’importe quelle machine avec un compilateur FORTRAN standard. Ces préprocesseurs prendraient généralement en charge la programmation structurée , les noms de variables de plus de six caractères, les types de données supplémentaires, la compilation conditionnelle et même les capacités de macro . Les préprocesseurs populaires incluent FLECS , iftran , MORTRAN , SFtran , S-Fortran , Ratfor et Ratfiv . Ratfor et Ratfiv, par exemple, ont implémenté un C-like, produisant du code prétraité dans la norme FORTRAN 66. Malgré les progrès du langage Fortran, les préprocesseurs continuent d’être utilisés pour la compilation conditionnelle et la substitution de macros.
L’une des premières versions de FORTRAN, introduite dans les années 60, était couramment utilisée dans les collèges et les universités. Développé, soutenu et distribué par l’ Université de Waterloo , WATFOR était basé en grande partie sur FORTRAN IV. Un étudiant utilisant WATFOR pourrait soumettre son travail FORTRAN par lots et, s’il n’y avait pas d’erreurs de syntaxe, le programme passerait directement à l’exécution. Cette simplification a permis aux étudiants de se concentrer sur la syntaxe et la sémantique de leur programme, ou sur le flux logique d’exécution, plutôt que de s’occuper de la soumission Job Control Language(JCL), le ou les processus successifs de compilation/édition de liens/exécution, ou d’autres complexités de l’environnement mainframe/mini-ordinateur. Un inconvénient de cet environnement simplifié était que WATFOR n’était pas un bon choix pour les programmeurs ayant besoin des capacités étendues de leur(s) processeur(s) hôte(s), par exemple, WATFOR avait généralement un accès très limité aux périphériques d’E/S. WATFOR a été remplacé par WATFIV et ses versions ultérieures.
programme ; s = 0 je = 1 , n ; s = s + 1 ; arrête – moi ; s = ‘s’ Arrêt
(programmation de ligne)
LRLTRAN a été développé au Lawrence Radiation Laboratory pour prendre en charge l’arithmétique vectorielle et le stockage dynamique, entre autres extensions pour prendre en charge la programmation des systèmes. La distribution comprenait le système d’exploitation LTSS .
La norme Fortran-95 comprend une partie 3 facultative qui définit une capacité de compilation conditionnelle facultative. Cette capacité est souvent appelée “CoCo”.
De nombreux compilateurs Fortran ont intégré des sous-ensembles du préprocesseur C dans leurs systèmes.
SIMSCRIPT est un préprocesseur Fortran spécifique à l’application pour la modélisation et la simulation de grands systèmes discrets.
Le langage de programmation F a été conçu pour être un sous-ensemble propre de Fortran 95 qui tentait de supprimer les fonctionnalités redondantes, non structurées et obsolètes de Fortran, telles que l’ EQUIVALENCEinstruction. F conserve les fonctionnalités de tableau ajoutées dans Fortran 90 et supprime les instructions de contrôle rendues obsolètes par les constructions de programmation structurées ajoutées à la fois à FORTRAN 77 et Fortran 90. F est décrit par ses créateurs comme “un langage de programmation compilé, structuré et particulièrement bien adapté à l’éducation et au calcul scientifique ». [66] Essential Lahey Fortran 90 (ELF90) était un sous-ensemble similaire.
Lahey et Fujitsu se sont associés pour créer Fortran pour Microsoft .NET Framework . [67] Silverfrost FTN95 est également capable de créer du code .NET. [68]
Exemples de codes
Le programme suivant illustre l’allocation dynamique de mémoire et les opérations basées sur les tableaux, deux fonctionnalités introduites avec Fortran 90. Il convient particulièrement de noter l’absence de DOboucles et d’instructions IF/ THENdans la manipulation du tableau ; les opérations mathématiques sont appliquées au tableau dans son ensemble. L’utilisation de noms de variables descriptifs et d’un formatage de code général conformes au style de programmation contemporain est également évidente. Cet exemple calcule une moyenne sur des données saisies de manière interactive.
moyenne du programme ! Lisez quelques chiffres et prenez la moyenne ! Comme écrit, s’il n’y a pas de points de données, une moyenne de zéro est renvoyée ! Bien que ce comportement ne soit pas souhaité, cet exemple reste simple implicite aucun real , dimension (:), allocatable :: points integer :: number_of_points real :: average_points , positive_average , negative_average average_points = 0.0 positive_average = 0.0 negative_average = 0.0 write ( * , * ) “Entrez le nombre de points à moyenner :” read ( * , * ) nombre_de_points allouer ( points ( nombre_de_points )) écrire ( * , * ) “Entrez les points à moyenner :” lire ( * , * ) points ! Prendre la moyenne en additionnant les points et en divisant par number_of_points si ( number_of_points > 0 ) average_points = sum ( points ) / number_of_points ! Maintenant, formez la moyenne sur les points positifs et négatifs uniquement si ( count ( points > 0. ) > 0 ) positive_average = sum ( points , points > 0. ) / count ( points > 0. ) if ( count ( points < 0. ) > 0 ) negative_average = somme ( points , points < 0. ) / compter ( points < 0. ) ! Imprimer le résultat sur le terminal stdout unit 6 write ( * , ‘(a,g12.4)’ ) ‘Average = ‘ , average_points write ( * , ‘(a,g12.4)’ ) ‘Moyenne des points positifs = ‘ , positive_average write ( * , ‘(a,g12.4)’ ) ‘Moyenne des points négatifs = ‘ , negative_average désallouer ( points ) ! mémoire libre en fin de programme moyenne
Humour
Au cours de la même réunion du comité de normalisation FORTRAN au cours de laquelle le nom “FORTRAN 77” a été choisi, une proposition technique satirique a été incorporée dans la distribution officielle portant le titre “Lettre O considérée comme nuisible “. Cette proposition visait à remédier à la confusion qui survient parfois entre la lettre “O” et le chiffre zéro, en éliminant la lettre des noms de variables autorisés. Cependant, la méthode proposée consistait à éliminer entièrement la lettre du jeu de caractères (en conservant ainsi 48 comme nombre de caractères lexicaux, que les deux-points avaient porté à 49). Cela a été considéré comme bénéfique en ce sens qu’il favoriserait une programmation structurée, en rendant impossible l’utilisation de la GO TOdéclaration notoire comme auparavant. (GênantFORMATles déclarations seraient également éliminées.) Il a été noté que cela “pourrait invalider certains programmes existants” mais que la plupart d’entre eux “étaient probablement non conformes, de toute façon”. [69] [ source peu fiable ? ] [70]
Lorsque X3J3 a débattu de la question de savoir si le nombre de trajets minimum pour une boucle DO devait être de zéro ou de un dans Fortran 77, Loren Meissner a suggéré un nombre de trajets minimum de deux, pensant (ironiquement) que s’il était inférieur à deux, il y aurait aucune raison pour une boucle!
Lors de l’ajout de tableaux de longueur supposée, il y avait un différend quant au caractère approprié pour séparer les limites supérieure et inférieure. Dans un commentaire examinant ces arguments, le Dr Walt Brainerd a écrit un article intitulé “Astronomy vs. Gastroenterology” parce que certains partisans avaient suggéré d’utiliser l’étoile ou l’astérisque (“*”), tandis que d’autres préféraient le côlon (“”:”). [ citation nécessaire ]
Les noms de variables commençant par les lettres I – N ont un type par défaut d’entier, tandis que les variables commençant par n’importe quelle autre lettre sont réelles par défaut, bien que les programmeurs puissent remplacer les valeurs par défaut avec une déclaration explicite. [71] Cela a conduit à la plaisanterie : “En FORTRAN, DIEU est RÉEL (sauf s’il est déclaré INTEGER).”
Voir également
- Portail de programmation informatique
- f2c
- F2PY NumPy
- POUR MAC
- Liste des compilateurs Fortran
- Liste des bibliothèques numériques Fortran
- Liste des langages de programmation
- Représentation matricielle
- Ordre de ligne majeur
- Code des spaghettis
Références
- ^ “Spécification de la chapelle (Remerciements)” (PDF) . Cray Inc. 1er octobre 2015 . Récupéré le 14 janvier 2016 .
- ^ John Backus. “L’histoire de FORTRAN I, II et III” (PDF) . Softwarepreservation.org . Récupéré le 19 novembre 2014 .
- ^ Eugène Loh (18 juin 2010). “Le langage de programmation HPC idéal” . File d’attente . 8 (6).
- ^ “HPL – Une implémentation portable de la référence Linpack haute performance pour les ordinateurs à mémoire distribuée” . Récupéré le 21 février 2015 .
- ^ “Q13. Quels sont les repères ?” . Vue d’ensemble – CPU 2017 . SPÉC . Récupéré le 13 novembre 2019 .
- ^ “Cinquante ans de BASIC” . Temps . 29 avril 2014.
- ^ Szczepaniak, John (1er mai 2014). “Une histoire de base de BASIC à l’occasion de son 50e anniversaire” . Gamasutra .
- ^ TIOBE Software BV (août 2021). “Indice TIOBE pour août 2021” . TIOBE.com . TIOBÉ . Récupéré le 4 août 2021 .
- ^ un bcdef Backus , John ( octobre -décembre 1998). “L’histoire de Fortran I, II et III” (PDF) . Annales IEEE de l’histoire de l’informatique . 20 (4): 68–78. doi : 10.1109/85.728232 . Archivé (PDF) de l’original le 3 mars 2016 . Récupéré le 17 juin 2020 . [1] [2]
- ^ “FORTRAN : Le langage de programmation pionnier” . 7 mars 2012 . Récupéré le 19 juillet 2017 .
- ^ “FORTRAN” . Encyclopédie Britannica . 14 juin 2021 . Récupéré le 19 juillet 2021 .
- ^ Chapman, Stephen J. (2018). Fortran pour les scientifiques et les ingénieurs (quatrième éd.). New York : Éducation McGraw-Hill . p. 13. ISBN 978-0-07-338589-1.
- ^ Le “jeu de caractères Fortran” défini par la norme FORTRAN 77 était le jeu de caractères minimal que les compilateurs conformes à la norme devaient prendre en charge; en pratique, de nombreux compilateurs FORTRAN 77 prenaient en charge le jeu de caractères ASCII complet .
- ^ un b JW Backus ; RJ Beeber; S. Meilleur ; R. Goldberg; LM Haibt ; HL Herrick; RA Nelson; D. Sayré ; PB Sheridan; H. Stern; L. Ziller; RA Hughes; R. Nutt (février 1957). Le système de codage automatique FORTRAN (PDF) . Conférence informatique commune de l’Ouest. p. 188–198. doi : 10.1145/1455567.1455599 .
- ^ Mindell, David (2008). Apollon numérique . Cambridge, Massachusetts : MIT Press. p. 99. ISBN 978-0-262-13497-2. JSTOR j.ctt5hhn02 . OCLC 228031739 .
- ^ Padoue, David (janvier-février 2000). “Le compilateur Fortran I” (PDF) . Informatique en Sciences et Ingénierie (CiSE) . les meilleurs algorithmes. Université de l’Illinois : IEEE . 2 (1): 70–75. Bibcode : 2000CSE…..2a..70P . doi : 10.1109/5992.814661 . Archivé de l’original (PDF) le 17 juin 2020. Le compilateur Fortran I a été le premier grand projet d’optimisation de code. Il a abordé des problèmes d’importance cruciale dont la solution générale a été un axe de recherche important dans la technologie des compilateurs pendant plusieurs décennies. De nombreuses techniques classiques d’analyse et d’optimisation du compilateur trouvent leurs origines et leur inspiration dans le compilateur Fortran I.
- ^ Brian Bergstein (20 mai 2007). “Le créateur de Fortran John Backus meurt” . MSNBC . Récupéré le 29 octobre 2018 .
- ^ “FORTRAN – Le premier langage de programmation pour les calculs numériques” . Blog SciHi . 15 octobre 2019.
- ^ Division des sciences appliquées et département de recherche en programmation, International Business Machines Corporation (15 octobre 1956). Le système de codage automatique FORTRAN pour l’IBM 704 EDPM : Manuel de référence du programmeur (PDF) . p. 19–20.
- ^ Département de recherche en programmation, International Business Machines Corporation (8 avril 1957). Le système de codage automatique FORTRAN pour l’IBM 704 EDPM : Manuel de l’opérateur préliminaire (PDF) . p. 6–37.
- ^ Betty Jo Armstead (21 janvier 2015). “Mes années à la NASA” (PDF) . Musée de la nature et des sciences de Denver . Archivé de l’original (PDF) le 24 décembre 2019 . Récupéré le 15 juin 2019 .
- ^ Manuel de référence, système de traitement de données IBM 7090 (PDF) . 1961. A22-6528-3.
- ^ Manuel d’informations générales Fortran II (PDF) . 1963 . Récupéré le 19 novembre 2014 .
- ^ Manuel de référence, FORTRAN II pour le système de traitement de données IBM 704 (PDF) . 1958. C28-6000-2.
- ^ “Ibibilio.org” . Ibiblio.org . Récupéré le 15 septembre 2014 .
- ^ Haines, LH (1965). “La compilation en série et le compilateur 1401 FORTRAN” . Journal des systèmes IBM . 4 (1): 73–80. doi : 10.1147/sj.41.0073 .
- ^ Lee, John AN (1967). Anatomie d’un compilateur . Van Nostrand Reinhold.
- ^ Spécifications Fortran et procédures d’exploitation, IBM 1401 (PDF) . IBM. C24-1455-2.
- ^ Spécifications du langage Fortran IV, spécifications du programme et procédures d’exploitation, IBM 1401, 1440 et 1460 (PDF) . IBM. Avril 1966. C24-3322-2.
- ^ McCracken, Daniel D. (1965). “Préface” . Guide de programmation FORTRAN IV . New York : Wiley. p. v. ISBN 978-0-471-58281-6.
- ^ “Liste des implémentations FORTRAN 1957 – 1967” . Annales de l’IEEE. 2017 . Récupéré le 17 octobre 2017 .
- ^ IBM System / 360 Modèle 50 Caractéristiques fonctionnelles (PDF) . IBM. 1967. A22-6898-1.
- ^ Digital Equipment Corp. “Manuel de référence des programmeurs DECSYSTEM-10 FORTRAN IV (F40)” (PDF) . Github . Société d’équipement numérique . Récupéré le 15 avril 2022 .
- ^ Mil-std-1753. Supplément DoD à X3.9-1978 . Imprimerie du gouvernement des États-Unis . Archivé de l’original le 9 novembre 2007 . Récupéré le 13 décembre 2007 .
- ^ IEEE 1003.9-1992 – Norme IEEE pour les technologies de l’information – Interfaces de langage POSIX (R) FORTRAN 77 – Partie 1: Liaison pour l’interface de programme d’application système (API) . IEEE . Récupéré le 24 novembre 2018 .
- ^ Annexe B.1
- ^ “Référence Fortran 95” . Gnu.Org . Récupéré le 10 mai 2014 .
- ^ Lionel, Steve. “Docteur Fortran dans” C’est un monde Fortran moderne ” ” . Intel (était DEC) Groupe de discussion du forum Fortran . Intel . Récupéré le 11 avril 2022 .
- ^ “Fortran 2003– Dernière ébauche de travail” . Gnu.Org . Récupéré le 10 mai 2014 .
- ^ “WG5 termine le traitement de Fortran 2003 et du TR” . nag.co.uk . 14 mai 2004. Archivé de l’original le 5 août 2004. {{cite web}}: Maint CS1 : URL inappropriée ( lien ). Il peut également être téléchargé sous forme de fichier PDF sur “Les nouvelles fonctionnalités de Fortran 2003” (PDF) . .
- ^ “N1836, Résumé des votes / Tableau des réponses sur ISO / CEI FDIS 1539-1, Technologies de l’information – Langages de programmation – Fortran – Partie 1 : Langage de base” (PDF) .
- ^ “Fortran 2008 – Dernière ébauche de travail” (PDF) . Gnu.Org . Récupéré le 10 mai 2014 .
- ^ N1830, Technologies de l’information – Langages de programmation – Fortran – Partie 1 : Langage de base [3] [ lien mort ]
- ^ ISO / CEI TS 29113: 2012 – Technologies de l’information – Interopérabilité supplémentaire de Fortran avec C
- ^ “Projet de la spécification technique (TS) 29113” (PDF) . wg5-fortran.org .
- ^ “Docteur Fortran dans “Dix-huit est le nouveau quinze” ” . Software.intel.com . Récupéré le 20 novembre 2017 .
- ^ “Fortran 2018” . ISO . Récupéré le 30 novembre 2018 .
- ^ “Plus d’interopérabilité avec C” (PDF) . ISO . Récupéré le 20 novembre 2017 .
- ^ “Fonctionnalités parallèles supplémentaires dans Fortran” . ISO . Récupéré le 20 novembre 2017 .
- ^ “Les nouvelles fonctionnalités de Fortran 2015” . ISO . Récupéré le 23 juin 2017 .
- ^ “Docteur Fortran dans” Une porte se ferme ” ” . Software.intel.com . Récupéré le 21 septembre 2015 .
- ^ “Docteur Fortran Goes Dutch: Fortran 2015” . Software.intel.com . Récupéré le 19 novembre 2014 .
- ^ Document d’interprétation Fortran 2018 (PDF) . 9 octobre 2018.
- ^ Kemeny, John G.; Kurtz, Thomas E. (11 octobre 1968). “Partage de temps à Dartmouth” . Sciences . 162 (3850): 223–228. Bibcode : 1968Sci…162..223K . doi : 10.1126/science.162.3850.223 . PMID 5675464 .
- ^ Philips, Lee. “L’avenir de l’informatique scientifique : n’importe quel langage de codage peut-il surpasser un mastodonte des années 1950 ?” . Ars Technica . Récupéré le 8 mai 2014 .
- ^ Pasachoff, Jay M. (avril 1984). “Scientifiques: FORTRAN contre Modula-2” . BYTE (lettre). p. 404 . Récupéré le 6 février 2015 .
- ^ Galperin, Boris (1993). “26”. Simulation aux grandes échelles d’écoulements complexes d’ingénierie et géophysiques . Londres : Cambridgey. p. 573.ISBN _ 978-0-521-43009-8.
- ^ Brandt, Siegmund (1970). Méthodes statistiques et computationnelles dans l’analyse des données . Société d’édition de la Hollande du Nord. pp. Préface. ISBN 7204-2033-4. {{cite book}}: Valeur de contrôle |isbn=: longueur ( aide )
- ^ “Interstellar 8-Track: Comment la technologie vintage de Voyager continue de fonctionner” . FILAIRE . Récupéré le 23 décembre 2017 .
- ^ Gaffney, PG; Wooten, JW (1er mai 1980). Méthodes pour assurer la normalisation des logiciels FORTRAN (Rapport). Laboratoire national d’Oak Ridge. OSTI 5361454 . PFORT … Bibliothèque …
- ^ un bPA Fox (1977). “Port – Une bibliothèque de sous-programmes mathématiques portables”. Une bibliothèque portable de sous-programmes mathématiques . Notes de cours en informatique. Vol. 57. pp. 165–177. doi : 10.1007/3-540-08446-0_42 . ISBN 978-3-540-08446-4. PORT … écrit en (PFORT) .. ANS Fortran
- ^ Whitten, Douglas E.; Demaine, Paul AD (1975). “Un Fortran indépendant de la machine et de la configuration : Portable Fortran {PFortran}”. Transactions IEEE sur le génie logiciel . Institut des ingénieurs électriciens et électroniciens (IEEE). SE-1 (1): 111–124. doi : 10.1109/tse.1975.6312825 . ISSN 0098-5589 . S2CID 16485156 .
- ^ “Problèmes de portabilité” . .. discute de .. la portabilité de .. Fortran
- ^ Healy, MJR (1968). “Vers FORTRAN VI” . Fortran scientifique avancé par CDC . CDC. p. 169–172. Archivé de l’original le 5 juillet 2009 . Récupéré le 10 avril 2009 .
- ^ Perlis, AJ; Smith, JW; Van Zoeren, HR Internal Translator (IT) Un compilateur pour l’IBM 650 (PDF) . Centre de calcul, Carnegie Institute of Technology.
- ^ “Page d’accueil du langage de programmation F” . Fortran.com. Archivé de l’original le 9 janvier 2015 . Récupéré le 19 novembre 2014 .
- ^ “Fortran pour le système de langage .NET” . Archivé de l’original le 18 octobre 2014.
- ^ “FTN95 : Fortran 95 pour Windows” . Silverfrost.com . Récupéré le 19 novembre 2014 .
- ^ Distribution post-réunion X3J3 pour la réunion tenue au Laboratoire national de Brookhaven en novembre 1976.
- ^ “L’effacement d’O”. Ordinateur hebdomadaire . 3 mars 1977.
- ^ Règles pour le typage des données (référence du langage FORTRAN 77) . Récupéré le 29 septembre 2016 .
Lectures complémentaires
Normes linguistiques
- Ansi x3.9-1966. Norme américaine FORTRAN (PDF) . Institut national américain des normes. Archivé de l’original (PDF) le 15 mai 2011 . Récupéré le 5 mai 2010 .Informellement connu sous le nom de FORTRAN 66.
- Ansi x3.9-1978. Norme nationale américaine – Langage de programmation FORTRAN . Institut national américain des normes. Archivé de l’original le 29 octobre 2013 . Récupéré le 11 décembre 2007 .Également connu sous le nom d’ ISO 1539–1980, officieusement connu sous le nom de FORTRAN 77.
- ANSI X3.198-1992 (R1997) / ISO/CEI 1539:1991. Norme nationale américaine – Langage de programmation Fortran Extended . Institut national américain de normalisation / ISO/CEI. Archivé de l’original le 1er mai 2002.Informellement connu sous le nom de Fortran 90.
- ISO/CEI 1539-1:1997. Informatique – Langages de programmation – Fortran – Partie 1 : Langage de base (PDF) . Archivé de l’original (PDF) le 18 août 2011 . Récupéré le 13 décembre 2007 .Informellement connu sous le nom de Fortran 95. Il y a deux autres parties à cette norme. La partie 1 a été officiellement adoptée par l’ANSI.
- ISO/CEI 1539-1:2004. Informatique – Langages de programmation – Fortran – Partie 1 : Langage de base (PDF) .Informellement connu sous le nom de Fortran 2003.
- ISO/CEI 1539-1:2010 (projet final de norme internationale). Informatique – Langages de programmation – Fortran – Partie 1 : Langage de base (PDF) .[ lien mort permanent ] Informellement connu sous le nom de Fortran 2008.
Normes associées
- Kneis, Wilfried (octobre 1981). “Projet de norme Industrielle Temps Réel FORTRAN” . Avis ACM SIGPLAN . 16 (7): 45–60. doi : 10.1145/947864.947868 . ISSN 0362-1340 . S2CID 8662381 .
- ISO 8651-1:1988 Systèmes de traitement de l’information – Infographie – Liaisons de langage Graphical Kernel System (GKS) – Partie 1 : FORTRAN . Genève, Suisse : ISO . 1988.
Autre matériel de référence
- Norme ECMA sur FORTRAN (PDF) . Association européenne des fabricants d’ordinateurs. Avril 1965 . Récupéré le 17 novembre 2014 .
- FORTRAN 77 4.0 Manuel de référence (PDF) . Sun Microsystems, Inc. 1995. Archivé de l’original (PDF) le 5 janvier 2012 . Récupéré le 17 novembre 2014 .
- “Formulaire de codage FORTRAN” (PDF) . IBM . Archivé de l’original (PDF) le 8 juin 2015 . Récupéré le 17 novembre 2014 .
- Langage IBM System/360 et System/370 Fortran IV (PDF) . IBM . Mai 1974. Archivé de l’original (PDF) le 6 avril 2011 . Récupéré le 17 novembre 2014 .
- Goerz, Michael (2014). “Carte de référence Fortran moderne” (PDF) . Récupéré le 14 décembre 2014 .
Livres
- Adams, Jeanne C. ; Brainerd, Walter S.; Hendrickson, Richard A.; Maine, Richard E.; Martin, Jeanne T.; Smith, Brian T. (2009). Le manuel Fortran 2003 (1ère éd.). Springer . ISBN 978-1-84628-378-9.
- Akin, JE (2003). Programmation orientée objet via Fortran 90/95 . Cambridge, New York : Cambridge University Press. ISBN 978-0-521-52408-7. OCLC 49906306 .
- Arjen, Markus (2012), “Fortran moderne dans la pratique”, Cambridge Univ. Presse, ISBN 978-1-13908479-6.
- Brainerd, WS ; Goldberg, CH; Adams, JC (1996). Guide du programmeur pour Fortran 90 (3e éd.). Springer. ISBN 978-0-387-94570-5.
- Brainerd, Walter (2015). Guide de programmation Fortran 2008 . Londres : Springer. ISBN 978-1-4471-6758-7. OCLC 920530344 .
- Chapman, Stephen J. (2018). Fortran pour les scientifiques et les ingénieurs (quatrième éd.). New York : Éducation McGraw-Hill . pp. xxiv + 1024. ISBN 978-0-07-338589-1.
- Chivers, Ian ; Sleightholme, Jane (2018). Introduction à la programmation avec Fortran (4e éd.). Springer. ISBN 978-3-319-75501-4.
- Clerman, Norman (2012). Fortran moderne : style et usage . New York : Cambridge University Press. ISBN 978-0-521-51453-8. OCLC 776162717 .
- Curcic, Milan (2020). Fortran moderne : construire des applications parallèles efficaces . Shelter Island, NY : Manning Publications Company. ISBN 978-1-61729-528-7. OCLC 1256806439 .
- Ellis, VMR ; Phillips, Ivor R.; Lahey, Thomas M. (1994). Programmation Fortran 90 (1ère éd.). Addison Wesley. ISBN 978-0-201-54446-6.
- Etter, DM (1990). FORTRAN structuré 77 pour ingénieurs et scientifiques (3e éd.). The Benjamin/Cummings Publishing Company, Inc. ISBN 978-0-8053-0051-2.
- Kerrigan, JF (1993). Migration vers Fortran 90 (1ère éd.). O’Reilly & Associates, Inc. ISBN 1-56592-049-X.
- En ligneKupferschmid, Michael (2002). Fortran classique : programmation pour l’ingénierie et les applications scientifiques . Marcel Dekker (CRC Press). ISBN 978-0-8247-0802-3.
- Lorenzo, Mark Jones (2019). Faire abstraction de la machine : l’histoire du langage de programmation FORTRAN (FORMula TRANslation) . Publié indépendamment. ISBN 978-1082395949.
- Loukides, Mike (1990). Unix pour les programmeurs FORTRAN . Sébastopol, CA 95472: O’Reilly & Associates, Inc. ISBN 0-937175-51-X.{{cite book}}: Maint CS1: emplacement ( lien )
- McCracken, Daniel D. (1961). Guide de programmation FORTRAN . New York : Wiley. RCAC 61016618 .
- Metcalf, Michael; Reid, John; Cohen, Malcom (2018). Fortran moderne expliqué : incorporation de Fortran 2018 . Oxford Angleterre : Oxford University Press. ISBN 978-0-19-881188-6. OCLC 1039633256 .
- Nyhoff, Larry; Sanford Leestma (1995). FORTRAN 77 pour les ingénieurs et les scientifiques avec une introduction à Fortran 90 (4e éd.). Salle des apprentis . ISBN 978-0-13-363003-9.
- Page, Clive G. (1988). Guide du programmeur professionnel sur Fortran77 (éd. du 7 juin 2005). Londres : Pitman. ISBN 978-0-273-02856-7. Récupéré le 4 mai 2010 .
- Presse, William H. (1996). Recettes numériques en Fortran 90 : l’art du calcul scientifique parallèle . Cambridge, Royaume-Uni : Cambridge University Press. ISBN 978-0-521-57439-6.
- Ruetsch, Grégoire; Fatica, Massimiliano (2013). CUDA Fortran pour les scientifiques et les ingénieurs (1ère éd.). Elsvier . p. 338. ISBN 9780124169708.
- Slighthome, Jane ; Chivers, Ian David (1990). Fortran 77 interactif : une approche pratique . Les ordinateurs et leurs applications (2e éd.). Chichester : E. Horwood. ISBN 978-0-13-466764-5. Archivé de l’original le 12 mars 2014 . Récupéré le 12 mars 2014 .
Des articles
- Allen, FE (septembre 1981). “Une histoire de la technologie de processeur de langage chez IBM”. Journal IBM de recherche et développement . 25 (5): 535–548. doi : 10.1147/rd.255.0535 . S2CID 14149353 .
- JW Backus ; RJ Beeber; S. Meilleur ; R. Goldberg; LM Haibt ; HL Herrick; RA Nelson; D. Sayré ; PB Sheridan; H. Stern; L. Ziller; RA Hughes; R. Nutt (février 1957). Le système de codage automatique FORTRAN (PDF) . Conférence informatique commune de l’Ouest. p. 188–198. doi : 10.1145/1455567.1455599 .
- Chivers, Ian D.; Sleightholme, Jane (2013). “Support du compilateur pour les standards Fortran 2003 & 2008” . ACM SIGPLAN Forum Fortran . 28 (1): 26-28. doi : 10.1145/1520752.1520755 . ISSN 1061-7264 . S2CID 26200779 . Archivé de l’original le 16 mai 2008.
- Metcalf, Michael (2011). “Les sept âges de Fortran” . Journal d’informatique et de technologie . 11 (1): 1–8.
- Pigott, Diarmuid (2006). “FORTRAN – Compilateur de haut niveau Backus et al (langage informatique)” . L’Encyclopédie des langages informatiques . Université de Murdoch . Archivé de l’original le 8 octobre 2009 . Récupéré le 5 mai 2010 .
- Roberts, Mark L.; En ligneGriffiths, Peter D. (1985). “Considérations de conception pour IBM Personal Computer Professional FORTRAN, un compilateur d’optimisation” (PDF) . Journal des systèmes IBM . 24 (1): 49–60. doi : 10.1147/sj.241.0049 .
Liens externes
Wikibooks a un livre sur le thème de: Fortran |
Wikiquote a des citations liées à: Fortran |
- ISO/IEC JTC1/SC22/WG5 — la maison officielle des normes Fortran
- Documents de normes Fortran —Normes GFortran
- fortran-lang.org (2020).
- Histoire de FORTRAN et Fortran II — Computer History Museum
- Valmer Norrod, et al .: Un cours d’auto-apprentissage en programmation FORTRAN – Volume I – manuel , Computer Science Corporation El Segundo, Californie (avril 1970). NASA (N70-25287).
- Valmer Norrod, Sheldom Blecher et Martha Horton : A self-study course in FORTRAN programing—Volume II—workbook , NASA CR-1478 (avril 1970), NASA (N70-25288).
- Une introduction au langage de programmation Fortran , par Reinhold Bader, Nisarg Patel, Leibniz Supercomputing Center .