Missive et espoirs 2024 à ce "vieux" forban de Fortran
yanolezard
Salut "Vieux Frère" ! Comment vas-tu ... yau de poêle ... à gratter ? 😜
Tous mes meilleurs vœux 2024 pour ce pilier du calcul numérique, qui ne cesse de s'améliorer en (re)prenant sa place et des places, notamment dans les espaces industriels et tertiaires qui lui sont propre.
Alors, prêts à en découdre ou tout simplement à mieux le connaître car en 2024, de nombreuses organisations et industries vont devoir adapter, transformer, migrer, réécrire, tout ou partie de leurs applications, de manière à intégrer les derniers paradigmes du langage et ses dernières nouveautés.
Certains secteurs industriels changent de plateformes et de langages car ces derniers sont moins bien adaptés à leurs activités et ne souhaitent plus être concurrencés ou être obligés de changer à chaque nouvelle année ou version, selon les bons vouloirs et désidératas du "système à fenêtres" et préfèrent donc adopter une attitude « best of breed ».
Pour les plus courageux et les plus téméraires, du boulot avec moi, le Forban « Fortran » ce n'est pas ce qui manque, ni ne manquera, comme pour mon non moins respectable ami de toujours « Cobol » ...
C'est une joie de te retrouver en si bonne forme, après une période de disette, après cette remontée discrète dans le palmarès mondial et européen des langages oubliés ... Le "Cercle de Ceux qui ont la Puissance de Calcul entre leurs instructions".
Toujours dans les bons coups, ce bon vieux forban de "FORTRAN", revient sur le devant de scène :
Les évolutions des machines, notamment avec les infrastructures matérielles "ARM", le retour des "RISC/CISC", des processeurs quantiques et nombre de composants charmants tout plein comme les unités "GPU" (Graphic Processing Unit) et autres coprocesseurs mathématiques et ce, sans compter sur les applications diverses et variées que tu t'es accaparé pendant des décennies dans des secteurs et domaines sensibles, ne trouvant sur ton chemin aucun candidat susceptible de te remplacer, du moins "simplement".
Fais-nous plaisir, remontons un temps en arrière, histoire de te faire (re)connaître un peu plus, au yeux de populations qui ignorent beaucoup de Toi et de tes capacités.
" Bonjour à toutes et à tous, je m'appelle "Fortran" et l'on va apprendre à se connaître un peu plus. Mon histoire n'a rien d'extraordinaire et pourtant ...
On m'appelle "Fortran" ou "FORTRAN" (mon vrai nom, c'est : mathematical FORmula TRANSlating system), je suis né en 1957 et je suis un langage de programmation généraliste pour le calcul scientifique et le calcul numérique.
D’ailleurs, doit-on m’écrire « FORTRAN » ou « Fortran » ?
La réponse est simple : de ma naissance à 1990, les seuls jeux de caractères admissibles étaient des "MAJUSCULES", puis chemins, paradigmes et normes faisant, j’ai admis que les « minuscules » pouvaient être pratiques, ne serait-ce que pour la lisibilité des programmes sources, d’où « Fortran 90 » ou « modern Fortran ».
On m'utilise aussi bien sur des calculatrices anciennes, des ordinateurs personnels que sur des "superordinateurs" où je sers d'ailleurs à tester leurs performances dans le cadre du classement "TOP500" des superordinateurs les plus puissants au monde, entre autres grâce à ma fameuse et fabuleuse bibliothèque "LINPACK".
Le nombre de bibliothèques scientifiques écrites dans mon langage, en Fortran, éprouvées et améliorées pendant de longues années, 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 mon langage qui ne cesse d'évoluer.
Parmi les fonctionnalités ajoutées ces dernières décennies, on citera, entre autres :
Le calcul sur les tableaux qui peuvent comporter jusqu'à quinze dimensions,
La programmation modulaire, la programmation générique (en Fortran 90), le calcul haute performance (en Fortran 95),
La programmation orientée objet et l'interopérabilité avec les bibliothèques de mon rude et spartiate ami "Langage C" (en Fortran 2003),
La programmation concurrente et le calcul (massivement) parallèle à l'aide des co-tableaux (en Fortran 2008), des équipes, des évènements et des sous-routines collectives (en Fortran 2018), en plus des interfaces "OpenMP", "OpenACC" et de la charmante et non moins puissante bibliothèque "Message Passing Interface"(MPI).
La longueur maximale des lignes de programme passe de 132 à 10000 caractères, et les expressions conditionnelles, reprenant la syntaxe du C, font leur apparition.
De nouvelles fonctions facilitent le passage des chaînes "string" entre C et Fortran.
Ma norme actuelle est "Fortran 2023", publiée le 17/11/2023 et les discussions vont bon train pour me faire évoluer, encore et encore, vers la prochaine "Fortran 202Y", pour l'instant prévue pour l'automne 2028.
Mais, attention, je ne suis pas né de la dernière pluie et je suis mentoré par des normes internationales strictes et régis, depuis 1965, par l’ISO (International Standard Organization), et plus particulièrement depuis ma version modernisée (Fortran 90) :
Fortran fait partie des langages normalisés depuis 1965 et est devenu une norme ISO depuis Fortran 90.
La norme Fortran est gérée par le groupe de travail "ISO/IEC JTC1/SC22/WG5", généralement simplement appelé "WG5" (pour Working Group 5), qui charge le comité Fortran "US INCITS PL22.3" (généralement appelé "J3", en référence à son ancien nom ANSI X3J3) de développer le langage.
Le "WG5" est composé d'experts chargés de faire des recommandations pour faire évoluer le langage.
Le J3 est composé de fabricants de matériel, d'éditeurs de compilateurs, d'utilisateurs issus aussi bien de l'industrie que du monde académique.
En 2019, un dépôt « Github » (https://github.com/fortran-lang) est créé afin que tous les utilisateurs du langage puissent proposer facilement au comité "J3" des évolutions pour les normes futures. Il sert actuellement à proposer des nouveautés pour la norme "Fortran 202Y" qui succédera à "Fortran 2023", comme l'amélioration de la programmation générique, des valeurs par défaut pour les arguments optionnels, etc.
Vous me direz .... "Tu fais pas trop de pub, dans ton genre" et pourtant ... Je ne suis pas un langage isolé car je me suis créé plusieurs communautés, pour me faire connaître de tout à chacun :
En 1955, "IBM" crée le groupe d'utilisateurs "SHARE" afin que ses clients puissent échanger entre eux. "John Backus (mon créateur)" y fait des présentations régulières durant le développement du premier compilateur "FORTRAN".
En avril 1957, des ingénieurs de "Westinghouse (un fabricant de système de freinage pour trains)" y rapportent la compilation du premier programme "FORTRAN" en dehors d'IBM. Alors que le langage se diffuse, un sous-groupe SHARE y est consacré : le "FORTRAN Standard Commitee".
En 1970, la "British Computer Society" crée le "Fortran Specialist Group", toujours en activité en 2023, afin de promouvoir le langage, participer à ses évolutions et organiser des échanges entre utilisateurs.
Créé en juillet 1982, le bulletin mensuel "FORTRAN Forum", a été publié par le "SIGPLan (Special Interest Group in Programming Languages)" de "l'ACM (Association for Computing Machinery)" trois fois par an, jusqu'en avril 2020.
Le 29 novembre 1983, un groupe de discussion "net.lang.f77" est créé sur le réseau "Usenet". Le 7 novembre 1986, il est renommé "comp.lang.fortran" et est toujours l'un des principaux canaux de communication de la communauté "Fortran".
La liste de diffusion "comp-fortran-90" est consacrée aux questions concernant le "Fortran" à partir de la norme "Fortran 90". On peut en consulter les archives jusque 1997, mais l'activité y est désormais très réduite avec seulement six messages postés en 2020.
Un groupe "Fortran Programmers" est créé sur "LinkedIn" en juillet 2008 et comporte plus de 4700 membres en 2022.
Le site "Fortran Wiki" est créé en octobre 2008. Il est édité par les utilisateurs du langage et propose de nombreuses ressources.
Début 2020, une nouvelle 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.
En s'appuyant sur "GitHub", elle développe en particulier une bibliothèque standard Fortran (stdlib) similaire à celle du "langage C", un gestionnaire de paquets Fortran (fpm) faisant également office de système de compilation, le compilateur interactif "LFortran", ainsi que des tutoriels pour apprendre le Fortran moderne.
Certaines pages sont traduites en français. La communauté édite une lettre mensuelle résumant ses activités en cours et diffuse des informations sur Twitter. Une visioconférence mensuelle permet à ses membres de discuter des projets à mener. Son forum "Fortran Discourse" est devenu un lieu central de discussion pour la communauté "Fortran".
Les projets de la communauté ont reçu l'aide de cinq étudiants lors du "Google Summer of Code 2021 (GSoC 2021)" et de même pour le "GSoC 2022".
Enfin, "l'International Fortran Conference (FortranCon)" est créée en 2020. Initialement prévue à Zurich début juillet 2020, elle a lieu en visioconférence à cause de la pandémie de Covid-19.
La seconde édition, "FortranCon 2021", a également eu lieu en visioconférence les 23 et 24 septembre 2021. Les vidéos des conférences sont disponibles sur la chaîne "YouTube FortranCon".
La prochaine édition est prévue pour 2023, un rythme d'environ dix-huit mois ayant été choisi.
Quels sont mes domaines de prédilection ?
Fortran est toujours l'un des langages les plus utilisés pour le calcul intensif (astronomie, modélisation climatique, modélisation chimique, modélisation en économie, la mécanique numérique des fluides, la physique numérique, l'analyse de données, la modélisation hydrologique, l'algèbre linéaire numérique et les bibliothèques numériques (LAPACK, IMSL et NAG), l'optimisation, la simulation de satellites, l’ingénierie des structures, les prévision météorologiques,
=> De nombreux tests de performances (benchmarks) destinés à évaluer les performances des nouveaux microprocesseurs sont écrits en Fortran.
=> Les logiciels des sondes « Voyager 1 » et « Voyager 2 » de la NASA ont été écrits à l'origine en "FORTRAN 5", puis portés en "FORTRAN 77".
Depuis le 25 septembre 2013, certains logiciels sont encore écrits en "Fortran" et d'autres ont été portés en "C".
=> J’ai également participé et participe toujours à l’aventure martienne, avec « Mars Exploration Rover », l’astromobile « Perseverance" et le robot « Curiosity ».
=> Je suis présent aussi dans les grands programmes & projets de supervision et de monitoring des secteurs nucléaires, militaires, industries d’extraction, pharmaceutiques, médical, de l’embarqué, de l’aéronautique, de l’automobile de compétition (Formule 3000, Formule 1, Formule E), des laboratoires d’analyses.
=> Mon code source peut se compiler à l’aide de nombreux compilateurs, qu’ils soient issus du monde libre, open-source ou captifs, ou bien encore de compilateurs disponibles en ligne.
=> De nombreux autres outils (analyseurs de code, débogueur, optimiseurs, profileurs, visualiseur de code interactif de type langage machine).
=> Je m’intègre un peu partout, tout en me coloriant volontiers dans les "IDE" (Integrated Development Environment) les plus classiques : "Emacs", "Notepad++", "Sublime Text", "Vim", "Neovim", "Visual Studio Code", "Eclipe (Photran)", "Visual Studio (Integrated Intel Fortran Compiler)"
=>Mon gestionnaire de paquets est mon gestionnaire de construction/projet s’appelle « fpm » (fortran package Manager) car en plus de gérer les packages, il s’occupe aussi des dépendances (bibliothèques internes/externes, fichiers d’entêtes, fichiers d’include, etc.), dépendances contrôlées (par un programme lui-même écrit en Fortran, lorsqu’il les récupèrent dans des dépôts public/privé (Github, GitLab, SubVersioN), etc.
=> Je dispose aussi de vérificateur et d’analyseur de code sophistiqué : "fpt", "Camfort", "Findent", "Flint", "Fortran-Linter", "FortranLint", le complexe "Lizard" (analyseur de complexité cyclomatique **)
** Pour les férus-velus, le nombre cyclomatique, la complexité cyclomatique ou la mesure de McCabe est un outil de métrologie logicielle développé par Thomas McCabe en 1976, pour mesurer la complexité d'un programme informatique.
Cette mesure reflète le nombre de décisions d'un algorithme en comptabilisant le nombre de « chemins » linéairement indépendants au travers d'un programme représenté sous la forme d'un graphe. Afin qu’elle soit plus complète, on l’associe à une autre mesure plus complète, la complexité Npath.
D’autres outillages sont également disponibles :
=> des déboggueurs (GNU gdb, igdb (Intel),
=> des profileurs (gprof, Valgrind, Gcov)
=> des préprocesseurs : Fypp (écrit en Python et destiné au fortran)
=> des testeurs unitaires (PFUnit, Test-Drive, Cmake, Fpm, Vegetables, Fruit)
=> des générateurs de documentations (Doxygen, Ford, Robodoc)
Et sous Microsoft Windows, spécifiquement, on peut également m’installer :
=> QuickStart Fortran (sans droits d’administration) comprenant :
GCC-GFortran, Fortran Package Manager, Git for Windows, Openblas (Blas/Lapack), Gnu Make, Intel OneAPI et la librairie « stdib »
Pour contenter le plus de monde :
Un ensemble de bibliothèque de calcul scientifique m’accompagnent :
Elles sont toutes, en Fortran, développées, utilisées, testées et donc déboguées depuis des décennies, ce qui leur assure et confère une très grande fiabilité
=> "LAPACK", "LINPACK", "Basic Linear Algebra Subprograms (BLAS)"
=> "Physical Analysis Workstation (PAW)", "International Mathematics and Statistics Library (IMSL)", "NAG Fortran Library (plus de 1700 routines mathématiques et statistiques)", "SLATEC (bibliothèque du domaine public proposant 1400 fonctions mathématiques)".
Un autre ensemble de bibliothèques graphiques :
Petite particularité : les normes "Fortran" n'incluant pas d'instructions graphiques ou d'instructions pour construire des interfaces graphiques, la visualisation peut se faire après exécution avec des outils externes comme « ParaView » ou des outils "GNU" comme "GNU Plot" ou avec d’autres bibliothèques :
=> "DISLIN", créé par le "Max Planck Institute for Solar System Research", permet de tracer des données et de réaliser des interfaces graphiques.
Multi plateformes (Unix, Linux, FreeBSD, OpenVMS, Windows et MS-DOS).
Fonctionne avec de nombreux compilateurs, ainsi que d'autres langages que le Fortran.
Téléchargeable gratuitement depuis la version 11.3 de mars 2020.
=> "GINO" permet de tracer des données et de réaliser des interfaces graphiques. - Logiciel commercial pour Windows et Linux.
=> "GrWin Graphics Library" : logiciel libre pour Windows.
=> "gtk-fortran" est une bibliothèque sous licence libre GPL v3 permettant de créer des interfaces graphiques "GTK" en Fortran, grâce aux fonctionnalités d'interopérabilité Fortran / C introduites depuis la norme Fortran 2003.
Multi-plateforme (Linux, Windows, macOS, FreeBSD, Raspberry Pi...).
Supporte "GTK 4", la bibliothèque généraliste Glib et la bibliothèque PLplot.
Peut être utilisée comme dépendance fpm.
=> "JAPI (Java Application Programming Interface)": interface Java/Fortran permettant de créer une interface graphique complète pour les programmes Fortran.
Multi plateformes (Windows, Linux, Solaris).
Fonctionne avec de nombreux compilateurs (gfortran, Compaq Visual Fortran…).
Logiciel libre sous licence "LGPL".
=> "MATFOR" : construction d'interfaces graphiques et bibliothèques numériques et graphiques pour Fortran et d'autres langages.
Logiciel commercial pour Windows et Linux.
=> "ogpf" permet d'accéder facilement à "GNUplot" depuis un programme Fortran, grâce à l'utilisation de la programmation orientée objet.
Il peut être utilisé comme paquet fpm.
=>"PLPlot" : bibliothèque permettant de dessiner des graphiques scientifiques.
Multi-langages, multi plateformes (Linux, OpenSolaris, Unix, MS-DOS, Windows, Mac OS X).
Logiciel libre sous licence "LGPL".
=> "Quickwin" : bibliothèque graphique fournie avec le "Compaq Visual Fortran" (désormais Intel Visual Fortran).
Ne fonctionne que sous Windows.
=> "Winteracter" : construction d'interfaces graphiques et d'outils de visualisation.
Logiciel commercial pour Windows, Linux et MacOS X.
Et comme, je suis ouvert d’esprit, je peux m’interconnecter et m’interopérabiliser avec d’autres langages :
"C", "Julia", "Python et ses bibliothèques F2PY de NumPy, SciPy, C++, R, Scilab, MathLab (initialement écrit en Fortran et réécrit en C++) , GNU Octave, X10 (from IBM), Chapel (from Cray), Fortress (Sun, puis Oracle).
Tout cela, calculs compris, peut aussi bien être réalisé sur des ordinateurs de bureau, des serveurs, des plateformes de développement embarqué (EMbedded Platform : Raspberry PI, Texas Instrument, RiverBe, Arduino, Intel, Nvidia, …) ainsi que sur des calculateurs et supercalculateurs
=> Pour la petite histoire, certaines « calculatrices » de nos plus ou moins jeunes années embarquaient un compilateur Fortran et un débogueur syntaxique, comme certains modèle de Texas Instruments (TI …), même l’historique « Palm » en embarquait un aussi dans l’un de ses modèles de "Palm III"
=> L’on me consacre également de nombreuses parutions sur mon langage
Alors, comment peut-on m’apprivoiser pour mieux me connaître ?
Il existe plusieurs formations (des officielles, comme des officieuses), le forum « Developpez.com » est un bon point de départ.
Si l’on souhaite mieux me connaitre, le parcours de formation est estimé à deux mois intensifs et pleins, ponctués avec la réalisation de plusieurs projets « Full Stack », pour reprendre une expression des développeurs Web (environ 1 semaine par projet complet).
Il ne vous reste plus qu'à ...
Merci "Vieux" Forban, pour toutes ces bonnes énergies qui raviront, j'en suis sûr, des jeunes et des moins jeunes et qui se mettront en quête de "Fortraner" de plus belle.
Le "Fortran", c'est comme les engrenages ... une fois que l'on mis les doigts dedans, on est pas près de les retirer.
-
Droopyann
Nombre de posts : 3735Nombre de likes : 1866Inscrit : 21 mai 2018Merci @yanolezard pour ce sujet. J'ai découvert un langage que je ne connaissait que de nom.
J'ai l'impression que la dernière phrase a été coupée ?
-- Yann EURL IS depuis 2019yanolezard
Nombre de posts : 307Nombre de likes : 292Inscrit : 5 décembre 2016Bonjour "Droopyann",
Effectivement, la. dernière phrase a été sectionnée ... étrange. d'autant que mon texte était complet ...
Bug de page ? Aurais-je dépassé une limite de contenu (nombre de caractères autorisé dans une page ou dans une frame ?)
Ce n'estpas bien grave : j'ai remis les informations disparues.
Bien à vous,
Yanolezard
Droopyann
Nombre de posts : 3735Nombre de likes : 1866Inscrit : 21 mai 2018Merci.
-- Yann EURL IS depuis 2019