FORTRAN
IBM lança le projet FORTRAN durant l'été 1954, acronyme de FORmula TRANslating, sous la houlette de John Backus. À cette époque, programmer le nouvel ordinateur d'IBM, le 704, relève du parcours du combattant. Près des deux tiers du budget des projets scientifiques s'envolent dans la simple préparation des programmes. Pire, la planification, l'écriture et le débogage engloutissent plus de 90% du temps total des projets.
Face à ce constat, l'équipe de Backus nourrit l'ambition claire de créer un langage qui se rapproche de l'écriture mathématique tout en générant automatiquement un code machine performant. L'objectif audacieux est de diminuer d'au moins 80% le temps consacré au codage et au débogage.
Le développement du système s'étale sur deux ans et demi. Une équipe de 18 personnes y travaille sans relâche. Leurs efforts aboutissent en 1957 à un système complet comprenant deux éléments fondamentaux : le langage FORTRAN et son traducteur, qu'on nomme executive routine.
FORTRAN bouscule les habitudes avec ses innovations. Les expressions arithmétiques s'écrivent désormais naturellement, proches de la notation mathématique classique. L'astérisque (*) symbolise la multiplication tandis que le double astérisque (**) représente l'exponentiation. Le système génère un code machine optimisé, évitant les calculs redondants et sélectionnant les meilleures instructions pour chaque opération.
Le langage regorge de fonctionnalités inédites. Les instructions DO et IF contrôlent le flux d'exécution. Les tableaux multidimensionnels se manipulent aisément grâce aux variables indicées. Les instructions READ, PRINT et FORMAT gèrent les entrées-sorties avec souplesse. Les programmeurs définissent leurs propres fonctions, favorisant la réutilisation du code et structurant mieux leurs programmes.
La prouesse technique du traducteur FORTRAN réside dans sa capacité à produire un code machine presque aussi efficace que celui écrit manuellement par des programmeurs chevronnés. Cette performance découle d'une analyse fine du code source et de techniques d'optimisation novatrices. L'architecture du traducteur se divise en six sections distinctes, chacune remplissant une fonction précise dans la chaîne de traduction.
Un exemple concret illustre l'efficacité du système. Après une journée de formation et quelques consultations du manuel, un programmeur réalise une application en quatre heures seulement, avec 47 instructions FORTRAN. La compilation sur le 704 prend six minutes et génère environ 1000 instructions machine. Le programmeur repère et corrige une erreur dans son code, sans recourir à des techniques de débogage complexes. Ce programme lui aurait demandé trois jours de codage manuel, sans compter le temps de débogage.
Le succès ne se fait pas attendre. FORTRAN s'impose comme la référence en programmation scientifique. Après sa première normalisation en 1966, le langage est largement adopté, facile à enseigner et relativement indépendant des machines. Il a démontré les avantages des sous-programmes et de la compilation indépendante.
Les années 1970 voient poindre de nouveaux langages qui révèlent certaines limites de FORTRAN. Une nouvelle mouture, Fortran 77, est normalisée en 1978. Malgré des améliorations bienvenues, cette mise à jour ne comble pas toutes les attentes d'une communauté avide de changements plus profonds. D'autres langages comme Pascal, Ada, Modula 2, C et C++ commencent à gagner du terrain dans les cercles scientifiques et académiques.
Il faut attendre 1991 pour voir émerger Fortran 90, une évolution majeure. Cette version introduit une pléthore de fonctionnalités modernes : forme source libre autorisant des noms de variables plus longs, structures de contrôle revues, spécification précise de la précision numérique, traitement des tableaux comme entités à part entière, allocation dynamique de mémoire avec pointeurs et récursivité, types de données définis par l'utilisateur, modules avec surcharge d'opérateurs et les procédures génériques.
Fortran 95, finalisé en 1996, apporte des améliorations plus modestes mais significatives comme l'instruction FORALL pour le traitement parallèle, les sous-programmes purs et élémentaires définis par l'utilisateur, ainsi que diverses optimisations concernant les pointeurs et les types dérivés.
Un bond en avant s'opère avec Fortran 2003, qui intègre la programmation orientée objet. Cette version comprend l'héritage des types dérivés, le polymorphisme permettant aux variables de changer de type durant l'exécution, les procédures liées aux types, et l'interopérabilité avec le langage C. Les capacités d'entrée-sortie se voient renforcées, et le support des exceptions arithmétiques IEEE fait son apparition.
La dernière évolution, Fortran 2008, enrichit encore le langage avec le support de la programmation parallèle via les tableaux coarray, l'augmentation du rang maximal des tableaux à quinze dimensions, de nouvelles fonctionnalités pour améliorer les performances comme la construction DO CONCURRENT, et l'ajout de nombreuses fonctions mathématiques intrinsèques pour le calcul scientifique.
D'un langage pionnier conçu pour simplifier la programmation des calculateurs scientifiques, FORTRAN s'est métamorphosé en un outil moderne qui intègre les paradigmes de programmation contemporains tout en restant fidèle à sa vocation première : offrir aux scientifiques et aux ingénieurs un moyen efficace d'exprimer leurs calculs. Sa longévité tient à sa capacité d'évoluer tout en maintenant la compatibilité avec les versions antérieures, préservant ainsi les investissements colossaux réalisés dans le code existant. Le code Fortran 77 demeure un sous-ensemble valide des versions récentes, ce qui rend possible la modernisation progressive des applications des organisations sans tout reconstruire.
Cette robustesse hors norme trouve une illustration saisissante dans les sondes spatiales Voyager. Plus de 45 ans après leur lancement, à 24 milliards de kilomètres de la Terre, elles fonctionnent toujours avec leur code FORTRAN d'origine. En 2023, les équipes de la NASA réalisent un exploit technique en réussissant à déployer des correctifs sur ce code, témoignant de l'extraordinaire pérennité du langage dans des conditions extrêmes.