Introduction
Fortran (FORmula TRANslator) est un langage de programmation utilisé principalement en mathématiques et dans les applications de calcul scientifique.
Historique
John Backus, pionnier de l'informatique, publie en 1954 un article titré Preliminary Report, Specifications for the IBM Mathematical FORmula TRANslating System, FORTRAN. Il fallut ensuite deux ans d'effort à l'équipe qu'il dirige au sein d'IBM pour écrire le premier compilateur FORTRAN (25 000 lignes, pour l'IBM 704).
Aujourd'hui encore (2007) le langage FORTRAN reste très utilisé, d'une part en raison de la présence de très nombreuses bibliothèques de fonctions utilisables en FORTRAN, d'autre part parce qu'il existe des compilateurs FORTRAN performants qui produisent des exécutables très rapides. Toutefois, beaucoup d'algorithmes même scientifiques sont publiés aujourd'hui (2009) en C et C++ , dont les compilateurs sont disponibles sur la plupart des machines.
Le Fortran, ayant été créé à l'époque des cartes perforées (en particulier avec le système FMS), optimisait la mise en page de ses sources dans cette optique, jusqu'au Fortran 90. Le code a dû longtemps par exemple commencer à partir de la 7e colonne et ne pas dépasser la 72e.
- La colonne 1 pouvait contenir la lettre C indiquant un "Commentaire"
- Les colonnes 1 à 5 à une étiquette numérique facultative de l'instruction, dont la valeur pouvait être limitée à 32767 ou 9999 (en Fortran II des ordinateurs Advanced Scientific Instruments ASI 210 et ASI 2100).
- La colonne 6 à l'indicateur "Suite de l'instruction précédente" (souvent un numéro de 1 à 9)
- Les colonnes 73 à 80 à l'identification et la numérotation des cartes perforées (souvent les 3 initiales du projet, du chef de projet ou du programmeur, suivies de numéros de 5 chiffres attribués de 10 en 10 pour permettre des insertions de dernière minute).
De nombreux codes industriels ont été écrits depuis longtemps en Fortran et la compatibilité des nouvelles versions avec les précédentes est indispensable, au prix de conserver des notions qui ne s'imposent plus.
Le langage BASIC, dans sa version originale (1964) a été conçu comme un petit langage à caractère pédagogique permettant d'initier les étudiants à la programmation, avant de passer aux langages "sérieux" de l'époque : FORTRAN et Algol. On y retrouve donc quelques traits du langage FORTRAN.
Il existe des extensions libres, basées sur gcc pour compiler les Fortran 77 et maintenant 90 et 95, entre autres sous Linux. Intel fournit aussi un compilateur propriétaire gratuit pour le Fortran 90, pour l'architecture x86 mais uniquement sous Linux. Il est cependant possible d'obtenir une version d'évaluation pour Mac OS X et Windows.
Exemple
PROGRAM DEGRAD ! ! Imprime une table de conversion degrés -> radians ! ================================================= ! ! Déclaration des variables INTEGER DEG REAL RAD, COEFF ! ! En-tête de programme WRITE ( *, 10) 10 FORMAT (' ',20('*') / & & ' * Degres * Radians *' / & & ' ', 20('*') ) ! ! Corps de programme COEFF = (2.0 * 3.1416) / 360.0 DO DEG = 0, 90 RAD = DEG * COEFF WRITE ( *, 20) DEG, RAD 20 FORMAT (' * ',I4,' * ',F7.5,' *') END DO ! ! Fin du tableau WRITE ( *, 30) 30 FORMAT (' ',20('*') ) ! ! Fin de programme STOP END PROGRAM DEGRAD
Notes:
- Ce programme est écrit en Fortran 90.
- Le symbole « ! » indique un commentaire. Il peut être remplacé par les caractères « c » ou « * » lorsqu'il est utilisé comme premier caractère.
- La déclaration des variables est facultative en Fortran, mais sans déclaration, la variable DEG serait alors de type REAL (les variables dont le nom commence par une des lettres I, J, K, L, M ou N sont par défaut de type INTEGER, les autres de type REAL).
- L'instruction WRITE se réfère à une unité d'entrée-sortie (ici * désigne le terminal) et une spécification de format. Par exemple le format d'étiquette 20 indique qu'il faut écrire un espace, une étoile et deux espaces, un entier (la valeur de DEG) sur 4 caractères puis la valeur de RAD sur 7 caractères dont 5 après le point décimal et enfin un espace et une étoile. Une déclaration de FORMAT peut être n'importe où ; une habitude est de la mettre juste après le WRITE à laquelle elle se réfère, une autre est de les mettre toutes à la fin de l'unité de programme. Plus d'une instruction WRITE peut faire référence à un même FORMAT.
- Le caractère / à la fin d'une ligne indique une suite à la ligne suivante et le caractère & au début de la ligne indique la suite de la ligne précédente.
- L'instruction "DO DEG = 0,90" indique de répéter en boucle les instructions qui suivent (jusqu'au END DO) pour toutes les valeurs de DEG de 0 à 90 par pas de 1.
Différentes versions de Fortran
- 1956. FORTRAN II n'avait qu'une seule instruction de branchement ("IF-arithmétique") à 3 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 III n'est jamais "sorti" sous forme de produit.
- 1962. FORTRAN IV a 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). - 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.
- 1966. FORTRAN 66 est la première version officiellement standardisée (par l'American Standards Association) de FORTRAN. On la confond souvent avec FORTRAN IV.
- 1977. FORTRAN 77, entre autres améliorations, facilite la programmation structurée avec des blocs "IF (...) THEN / ELSE / ENDIF". En 78, une extension introduit DO WHILE / END DO.
- 1990. FORTRAN 90 : 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 à 7, 72 à 80 ...) disparaissent : l'écriture se fait enfin en format libre.
- 1995. FORTRAN 95
- 2003. FORTRAN 2003 : comme le COBOL, Fortran supporte maintenant la programmation orientée objet.
- 2008. FORTRAN 2008