URL: https://linuxfr.org/news/des-nouvelles-de-fortran-n-5-decembre-2023 Title: Des nouvelles de Fortran n°5 - Décembre 2023 Authors: vmagnin Ysabeau Date: 2023-11-27T14:33:12+01:00 License: CC By-SA Tags: fortran, norme, gsoc, compilateur et histoire_des_sciences Score: 4 Fortran joue aux échecs avec la Mort depuis des décennies (j’aurais aussi pu me référer au film [Le Viager](https://fr.wikipedia.org/wiki/Le_Viager) avec Michel Serrault :-)). Ces trois dernières années, il a été présent 23 mois dans le Top 20 de l’indice TIOBE, atteignant même la 11^e place en juillet et septembre 2023. Simple bruit dans un classement controversé ou regain d’activité d’une communauté habituellement trop discrète, à vous de juger. Voyons ce qu’il s’est passé dans le monde du Fortran depuis notre [dépêche n°4](https://linuxfr.org/news/des-nouvelles-de-fortran-n-4-octobre-2022) d’octobre 2022. ---- [Norme Fortran 2023 (document d'interprétation du comité J3)](https://j3-fortran.org/doc/year/23/23-007r1.pdf) [The new features of Fortran 2023 (exposé de John Reid)](https://fortran.bcs.org/2022/AGM22_Reid.pdf) [Fortran-lang.org](https://fortran-lang.org/fr/) [fpm (Fortran Package Manager)](https://fpm.fortran-lang.org/fr/index.html) [Indice TIOBE](https://www.tiobe.com/tiobe-index/) ---- # Fortran 2023 La norme [ISO/IEC 1539-1:2023](https://www.iso.org/standard/82170.html) a été publiée le 17 novembre. Le document de John Reid [The new features of Fortran 2023](https://wg5-fortran.org/N2201-N2250/N2212.pdf) résume ses apports. La version officielle de cette norme ISO est payante, mais le comité de normalisation met toujours à disposition le PDF de son « document d’interprétation », très proche de la version finale de la norme. Reste bien sûr à attendre que les compilateurs intègrent progressivement ces nouveautés. Le compilateur Intel inclut entre autres déjà le mécanisme de réduction ajouté aux boucles parallélisables `do concurrent` ainsi que les fonctions trigonométriques fonctionnant en degrés. La 6^e édition du Metcalf, prévue pour le 7 décembre, comporte deux nouveaux chapitres sur cette norme (et une couverture orange) : * Mr Michael Metcalf, John Reid, Mr Malcolm Cohen, et Reinhold Bader. *[Modern Fortran Explained: Incorporating Fortran 2023.](https://global.oup.com/academic/product/modern-fortran-explained-9780198876588?q=modern%20Fortran&lang=en&cc=kr#)* 6^e édition. Oxford, New York: Oxford University Press, 2023. ISBN : 9780198876588 # Le 3 décembre, jour dionysiaque Cette quatrième norme du XXI^e siècle est sortie à peu de choses près 70 ans après que [John Backus](https://fr.wikipedia.org/wiki/John_Backus) (1924-2007) ait proposé à son supérieur de créer un langage de calcul simple et rapide avec son compilateur optimiseur, pour s’affranchir du langage machine. La date exacte est inconnue, lui-même ne s’en souvenait pas, mais son anniversaire étant le 3 décembre, célébrons à la fois les 99 ans du père du langage et les 70 ans du lancement du projet FORTRAN ! > Ce facteur économique a été l’une des principales motivations qui m’ont amené à proposer le projet Fortran dans une lettre adressée à mon supérieur, Cuthbert Hurd, à la fin de 1953 (la date exacte n’est pas connue, mais d’autres faits suggèrent que décembre 1953 est une date probable). Je pense que la nécessité économique d’un système comme Fortran est l’une des raisons pour lesquelles IBM et mes supérieurs successifs, Hurd, Charles DeCarlo et John McPherson, ont répondu à nos besoins en constante augmentation au cours des cinq années suivantes sans jamais nous demander de projeter ou de justifier ces besoins dans un budget formel. _(Traduction DeepL pour l’essentiel)_ > > Backus, J. « The history of Fortran I, II, and III ». *IEEE Annals of the History of Computing* 20, nᵒ 4 (décembre 1998): 68‑78. https://doi.org/10.1109/85.728232. # Sur le front des compilateurs ## Avis de décès Deux compilateurs Fortran ont disparu : le [Absoft](https://en.wikipedia.org/wiki/Absoft_Fortran_Compilers) en septembre 2022, puis le Lahey en décembre. Inutile de chercher le site web de ces entreprises quadra ou quinquagénaires, tout a disparu. À ma connaissance, les codes source de ces compilateurs propriétaires n’ont pas été libérés… Ces disparitions pourraient être une conséquence de la mise à disposition gratuite des compilateurs Intel depuis décembre 2020. ## Parmi les compilateurs opérationnels En décembre 2022, après [cinq ans d’efforts](https://community.intel.com/t5/Blogs/Tech-Innovation/Tools/The-Next-Chapter-for-the-Intel-Fortran-Compiler/post/1439297), le compilateur Intel ifx basé sur LLVM a atteint la parité avec son prédécesseur ifort, en implémentant intégralement la norme Fortran 2018. La version actuelle est la 2024.0. Intel a annoncé qu’ifort ne sera en conséquence [plus maintenu](https://www.intel.com/content/www/us/en/docs/fortran-compiler/get-started-guide/2024-0/overview.html) à partir d’octobre 2024, y compris pour les macOS>13. Pas de chance pour les fans du mac, Intel ne [prévoit pas](https://community.intel.com/t5/Blogs/Tech-Innovation/Tools/Deprecation-of-Intel-Fortran-Compiler-Classic-for-macOS/post/1472697) de leur fournir ifx… À noter également qu’ifx ne gérera pas les architectures 32 bits. GFortran, compilateur Fortran de la GCC, en est à la version 13.2. La page [GFortran du Fortran Wiki](https://fortranwiki.org/fortran/show/GFortran) a été entièrement mise à jour. Elle présente en particulier des informations pour les personnes qui voudraient contribuer au développement du compilateur. ## En gestation Il faut compter au minimum cinq ans de travail pour écrire un nouveau compilateur Fortran (la dernière norme fait 674 pages). Le développement du nouveau Flang pour LLVM, soutenu en particulier par NVIDIA, continue. Le [rapport de liaison](https://j3-fortran.org/doc/year/23/23-224r1.txt) présenté au J3 en octobre indique qu’il peut « compiler et exécuter correctement des programmes Fortran 77 (passe la suite de tests FCVS), la quasi-totalité des programmes Fortran 95 et de nombreux programmes qui utilisent les fonctionnalités modernes de Fortran 2003+. » Quant au compilateur [LFortran](https://lfortran.org/), Il a été décidé qu’il passerait en version bêta quand il serait capable de compiler dix bibliothèques Fortran matures. Il en est pour l’instant à 4/10 : il peut compiler par exemple MINPACK, une bibliothèque permettant de résoudre des équations non linéaires et des problèmes de moindres carrés non linéaires. # Communauté Fortran-lang La communauté Fortran-lang poursuit sa croissance avec plus de 1300 utilisateurs inscrits sur son Fortran Discourse depuis le 5 mai 2020. La dépêche d’octobre 2022 parlait de « plus de 850 utilisateurs inscrits ». Vous en croiserez sûrement un certain nombre à l'[Advent of Code 2023](https://adventofcode.com/2023), du 1^er au 25 décembre ! ## Médias Un article en français qui résume l’histoire du langage, les apports des normes successives, les projets de la communauté, vient d’être publié dans le *Bulletin 1024* de la Société Informatique de France : * Vincent Magnin, José Alves, Antoine Arnoud, Arjen Markus, Michele Esposito Marzino, [« Fortran… et puis quoi encore ? »](https://doi.org/10.48556/SIF.1024.22.143), *Bulletin 1024,* n°22, p. 143–161, novembre 2023, DOI:10.48556/SIF.1024.22.143, licence CC BY-NC-ND 4.0. Il est en cours de traduction dans la langue de Shakespeare (ou plutôt Backus). Le podcast *Code for Thought* du 5 septembre 2023 est intitulé [« Hello Fortran! »](https://codeforthought.buzzsprout.com/1326658/13456135) Quatre développeurs sont interrogés pendant les 40 minutes de l’émission : Thomas Clune (NASA, US), Wim Vanderbauwhede (Uni. Glasgow, UK), Milan Curcic (Uni. of Miami, US) et Ondrej Certik (GSI Technologies, US). Les deux derniers sont les fondateurs de Fortran-lang. ## Financement Fin 2022, l’organisme allemand [Sovereign Tech Fund](https://sovereigntechfund.de/en/projects/fortran/) du ministère fédéral de l’économie et du climat a accordé l’équivalent de trois temps pleins pour travailler six mois sur le projet d’un dépôt centralisé pour le gestionnaire de paquets fpm, ainsi que sur le compilateur LFortran. La candidature de Fortran à l’organisation américaine à but non lucratif [NumFOCUS](https://numfocus.org/) a été acceptée. NumFOCUS est une organisation caritative publique 501(c)(3) aux États-Unis qui promeut les pratiques ouvertes dans la recherche, les données et le calcul scientifique en sponsorisant les projets open source et en organisant des programmes éducatifs. Enfin, trois étudiants ont participé au [Google Summer of Code 2023](https://summerofcode.withgoogle.com/programs/2023/organizations/fortran-lang) : * amélioration de LFortran pour aller vers une compilation de SciPy, * optimisation dans le projet [neural-fortran](https://github.com/modern-fortran/neural-fortran), un cadriciel de *deep learning*, * développement de [http-client](https://github.com/fortran-lang/http-client), une bibliothèque fpm permettant d’effectuer des requêtes HTTP avec une API conviviale. Elle dépend des bibliothèques stdlib et fortran-curl. ## Projets Le tutoriel _Python Fortran Rosetta Stone_ publié par Ondřej Čertík en 2012 sur le site https://www.fortran90.org/ a été importé et révisé sur Fortran-lang : https://fortran-lang.org/fr/learn/rosetta_stone/ Comme son nom l’indique, il donne les correspondances entre syntaxes Python et Fortran, en particulier pour le calcul scientifique. Le gestionnaire de paquets Fortran et système de construction fpm est disponible en version 0.9 depuis juin 2023. Il est même désormais disponible sur [PyPi](https://pypi.org/project/fpm/). Il peut être également utilisé pour compiler des projets C et C++. Il peut gérer des dépôts de paquets locaux ou distants, l’objectif étant à terme de créer un dépôt officiel. Enfin, l'[intégration avec OpenMP](https://www.openmp.org/blog/fortran-package-manager-and-openmp/) permet non seulement de compiler de façon parallèle un projet mais également de gérer des projets utilisant OpenMP. La bibliothèque standard [stdlib](https://github.com/fortran-lang/stdlib/releases/tag/v0.3.0) est sortie en version 0.3 au mois d’août et peut désormais être utilisée comme une dépendance fpm. # Autres projets [FortLS](https://fortls.fortran-lang.org/), une implémentation du *Language Server Protocol (LSP)* pour Fortran, est disponible en version v3.0.0rc1. Parmi les éditeurs de code pris en charge, on peut citer Visual Studio Code, Atom, Sublime Text, (Neo)Vim, et Emacs. La communauté Fortran explore les modèles de langage, avec par exemple le projet [fastGPT](https://ondrejcertik.com/blog/2023/03/fastgpt-faster-than-pytorch-in-300-lines-of-fortran/) qui est un modèle GPT-2 : « L’utilisation d’un langage comme Fortran, orienté vers les calculs de tableaux les plus rapides possibles, permet d’écrire un code très performant, mais toujours lisible ». Il y a également un modèle de langage [LLaMA2](https://github.com/rbitr/llm.f90). Et le projet [ForOpenAI](https://github.com/gha3mi/foropenai) permet d’accéder à l’API de ChatGPT. Le travail de modernisation des bibliothèques FORTRAN se poursuit, avec par exemple [FITPACK](https://github.com/perazz/fitpack) pour l’ajustement de courbes et de surfaces, désormais traduit en Fortran moderne et disponible sous forme de paquet fpm. Le générateur [FORD (FORtran Documentation)](https://github.com/Fortran-FOSS-Programmers/ford/releases/) est disponible en version 7.0. La communauté fait feu de tout bois et tenir à jour la [liste](https://github.com/Beliavsky/Fortran-code-on-GitHub/blob/main/README.md) des codes Fortran disponibles sur GitHub est un travail de fond. Mais citons encore quelques projets récents : * [Fortran-regex](https://github.com/perazz/fortran-regex) est un port de la bibliothèque tiny-regex-c pour les expressions régulières. * Dans le domaine du *retrocomputing,* [fc8](https://github.com/ivan-pi/fc8) est un interpréteur [CHIP-8](https://fr.wikipedia.org/wiki/CHIP-8) (un langage des années 70 pour faciliter l’écriture de jeux vidéo 8 bits). * [ForColormap](https://github.com/vmagnin/forcolormap) est une bibliothèque pour gérer les « cartes thermiques » pour la visualisation scientifique. * [FSparse](https://github.com/jalvesz/FSPARSE/) offre une API orientée objet pour les matrices creuses. * [rklib](https://github.com/jacobwilliams/rklib) est une nouvelle bibliothèque Runge-Kutta pour les équations différentielles du premier ordre. * [feq-parse](https://github.com/FluidNumerics/feq-parse) permet d’évaluer une fonction mathématique stockée dans une chaîne de caractères. # Le mot de la fin : l’antique oracle Dans [un de ses derniers entretiens](https://archive.computerhistory.org/resources/access/text/2013/05/102657970-05-01-acc.pdf) en 2006 pour le *Computer History Museum* (voir la [vidéo](https://www.youtube.com/watch?v=dDsWTyLEgbk)), Backus répond : > Interviewer : « Le monde est-il meilleur grâce à tous les logiciels qui ont été écrits au cours de votre vie, ou non ? » > > Backus : « Eh bien, en termes humains, probablement pas. Parce que cela nous éloigne de plus en plus des affaires humaines. Mais pour ce qui est de l’économie et du bien-être, ça a fait beaucoup de bien. C’est donc un bilan mitigé. > […] > Mais je ne vous envie pas, j’en ai peur. Je pense que nous devenons de plus en plus technologiques et de moins en moins orientés vers l'humain. » > > _(Traduction en français basée sur DeepL)_ Ou si vous préférez l’original : > *Interviewer: “Is the world a better place because of all the software that’s been written in your lifetime, or not?”* > > *Backus: “Well, in human terms, probably not. Because it just takes us further and further away from human affairs. But as far as economic, and welfare, it’s done a lot of good. So it’s a mixed bag. [...] But I don’t envy you, I’m afraid. I think that we’re getting more and more technological and less and less human oriented.”*