URL: https://linuxfr.org/users/vmagnin/journaux/encore-des-nouvelles-de-fortran Title: Encore des nouvelles de Fortran Authors: vmagnin Date: 2021年05月06日T12:52:46+02:00 License: CC By-SA Tags: fortran, gtk-fortran, compilateur, hpc, calcul_parallèle, calcul_intensif et calcul_scientifique Score: 33 Mon précédent article [Des nouvelles de Fortran](//linuxfr.org/users/vmagnin/journaux/des-nouvelles-de-fortran) du 3 mai 2020 commençait par ces mots : *« Punk is not dead, Fortran non plus ».* Et voilà que dans le [TIOBE Index](https://www.tiobe.com/tiobe-index/) d'avril 2021, le Fortran fait son retour dans le top 20 avec un saut de la 34^e position à la 20^(e), après 10 ans d'éclipse. Avec un taux de 0,91 %, on pourrait se contenter de s'étonner et penser que l'on est dans le bruit. Mais je m'en vais démontrer que le T. Rex sait renouveler ses dents quand il s'agit de croquer les nombres *(crunching numbers)*. # La communauté Fortran-lang Bien que disposant d'un groupe de discussion Usenet depuis 1983 (comp.lang.fortran) et de quelques sites de référence tels que http://fortranwiki.org/, la galaxie des développeurs Fortran était plutôt éparpillée. La communauté Fortran-lang, créée il y a un an, vise à regrouper le maximum de personnes et de ressources autour de son site https://fortran-lang.org/ afin que Fortran dispose d'une communauté organisée comme d'autres langages plus récents. Elle est plus active que jamais, que ce soit sur son [Fortran Discourse](https://fortran-lang.discourse.group/), lors des *Monthly Calls* (visioconférences mensuelles) ou sur GitHub. Un an après sa création, le Discourse comportait 201 membres actifs et 469 sujets comportant en tout 4500 messages. Les membres viennent de tous les horizons (de l'étudiant au membre du comité de normalisation Fortran) et de toutes les générations. Les projets phares de la communauté sont : * le développement d'une bibliothèque standard *de facto*, [stdlib](https://github.com/fortran-lang/stdlib), qui servira également de laboratoire pour proposer aux comités de normalisation WG5/J3 des implémentations de nouvelles fonctions. * Le compilateur [LFortran](https://github.com/lfortran/lfortran) dont je parlerai plus bas. * Le gestionnaire de paquets [fpm (Fortran Package Manager)](https://github.com/fortran-lang/fpm) dont le développement a bien avancé (actuellement en version 0.2.0 alpha). Il s'inspire fortement de Cargo, le couteau suisse du langage Rust. Une fois installé (il est même disponible sur conda-forge), on peut en toute simplicité créer un projet, le compiler et le lancer : ```bash $ fpm new projet $ cd projet $ fpm run ``` Il gère en particulier les dépendances, qu'il peut télécharger et compiler automatiquement depuis GitHub. Les projets Fortran utilisant fpm sont reconnaissables au fichier de configuration `fpm.toml` présent à leur racine. Associé à `git clone`, fpm a en particulier la vertu de permettre de tester un projet Fortran en trente secondes, par exemple pour tester le projet *Object Based Interface to GnuPlot from Fortran (ogpf)* : ```bash $ git clone https://github.com/kookma/ogpf.git $ cd ogpf $ fpm run --example ``` Enfin, les principales pages du site Fortran-lang.org pourraient à terme être disponibles en français et en espagnol. Les traductions sont prêtes, mais l'internationalisation du site, basé pour l'instant sur Jekyll, demandera un travail conséquent reporté pour l'instant à plus tard. # Trois nouveaux compilateurs Avec trois nouveaux compilateurs en cours de développement en même temps, tous basés sur LLVM, Fortran aborde avec une vigueur respectable une nouvelle décennie : * [LFortran](https://lfortran.org/) est développé par Ondřej Čertík *(Los Alamos National Laboratory),* cofondateur de la communauté Fortran-lang et membre du [comité de normalisation J3](https://j3-fortran.org/). Le développement avance bien et le compilateur devrait cette année réussir à compiler du Fortran 95. Un des objectifs du projet est d'obtenir un compilateur permettant d'exécuter du Fortran de façon interactive dans Jupyter. * Fin décembre, Intel a rendu disponible pour tous gratuitement ses [oneAPI Toolkits](https://software.intel.com/content/www/us/en/develop/tools/oneapi/all-toolkits.html), qui incluent ses compilateurs Fortran. Au pluriel, puisqu'au classique `ifort` s'ajoute le nouveau compilateur `ifx` encore en version Bêta, basé quant à lui sur LLVM. À noter que, contrairement à `ifort`, il ne gère pas encore les co-tableaux *(coarrays)*, une des fonctionnalités natives du langage permettant de faire du calcul parallèle. * Le développement du nouveau Flang, inclus dans LLVM, [se poursuit](https://lists.llvm.org/pipermail/flang-dev/2021-April/000677.html), mais il n'est pas encore fonctionnel. # Événements à venir ## GSoC 2021 La candidature de la communauté Fortran-lang a été acceptée pour le [Google Summer of Code 2021](https://summerofcode.withgoogle.com/organizations/6633903353233408/). Le travail des étudiants inscrits accélérera en particulier les [projets sus-cités](https://github.com/fortran-lang/fortran-lang.org/wiki/GSoC-2021-Project-ideas). ## FortranCon 2021 L' année dernière la communauté s'était retrouvée virtuellement à l'*International Fortran Conference 2020* ([FortranCon 2020](https://www.youtube.com/channel/UCmrUfKC3D2ZMHLRyQANeP_Q/videos)). L'édition 2021 qui aurait dû avoir lieu au début de l'été a été repoussée à la rentrée de septembre. # Nouvelles diverses ## Norme Fortran 202x Le brouillon de la norme Fortran 202x *(committee draft)*, qui succédera à Fortran 2018, devrait être figé en juillet 2021. Vous pouvez le consulter dans son [état actuel (PDF)](https://j3-fortran.org/doc/year/21/21-007.pdf). Les nouveautés sont détaillées dans l'introduction : des fonctions pour faciliter le passage des chaînes de caractères entre C et Fortran, des fonctions trigonométriques en degrés, des lignes de code source plus longues, de nouveaux descripteurs de format d'affichage, quelques améliorations pour le calcul parallèle, etc. La valeur de x n'est pas encore définie, mais une norme 202y est déjà prévue et les propositions des utilisateurs peuvent être déposées sur [GitHub](https://github.com/j3-fortran/fortran_proposals). ## Page Fortran de Wikipedia La page https://fr.wikipedia.org/wiki/Fortran s'offre depuis début mars une cure de jouvence : vérification de tous les liens, réorganisation et mise à jour du texte, nouvelles sections, etc. L'objectif est de présenter l'état actuel du Fortran, et non pas seulement son long passé. ## Page Fortran du wiki ubuntu-fr Idem pour la page Fortran du [wiki ubuntu-fr](https://doc.ubuntu-fr.org/fortran), dont les trois dernières modifications dataient de 2015 et 2013. Vous y apprendrez entre autres comment installer OpenCoarrays pour faire de la programmation parallèle avec gfortran, comment installer les compilateurs Fortran gratuits d'Intel, comment installer le gestionnaire de paquets fpm, etc. ## gtk-fortran 4.0 Après plus d'un de travail, le portage de gtk-fortran vers GTK 4, que je vous avais [annoncé il y a un an](https://linuxfr.org/users/vmagnin/journaux/gtk-fortran-20-04-deconfinee-gtk-4-approche), est terminé : [gtk-fortran 4.0](https://github.com/vmagnin/gtk-fortran/wiki) est basé sur GTK 4.2 et GLib 2.68. Rappelons que gtk-fortran est une bibliothèque permettant de créer des interfaces graphiques GTK en Fortran moderne. Il permet également d'accéder à la bibliothèque généraliste GLib sur laquelle est basée GTK. La documentation wiki du projet propose désormais [deux tutoriels](https://github.com/vmagnin/gtk-fortran/wiki/Tutorials) (en anglais). Un des objectifs pour l'année à venir est d'écrire d'autres tutoriels et d'améliorer la documentation du projet. Nous allons également explorer les possibilités du Fortran moderne : programmation orientée objet, cotableaux pour le calcul parallèle... Nous espérons également qu'à terme gtk-fortran pourra être utilisé sous forme de paquet fpm. # Conclusion Le projet Fortran, proposé par John Backus en décembre 1953 à son supérieur chez IBM, fêtera donc la fin de sa septième décennie dans deux ans et demi. Il espère commencer sa huitième décennie avec une communauté dynamique et bien organisée, une librairie standard, trois nouveaux compilateurs et une nouvelle norme ISO. # Bibliographie ## Articles des cofondateurs de la communauté Fortran-lang pour son premier anniversaire * Ondřej Čertík, [Resurrecting Fortran](https://ondrejcertik.com/blog/2021/03/resurrecting-fortran/), 12 mars 2021. * Milan Curcic, [First year of Fortran-lang](https://medium.com/modern-fortran/first-year-of-fortran-lang-d8796bfa0067), 21 décembre 2020. * Brad Richardson, [The Fortran Package Manager’s First Birthday](https://everythingfunctional.wordpress.com/2021/03/12/the-fortran-package-managers-first-birthday/), 12 mars 2021. ## Quelques bonnes références en Français pour apprendre le Fortran moderne * [Introduction au fortran 90/95/2003/2008](http://wwwens.aero.jussieu.fr/lefrere/master/mni/f90+c/polyf90.pdf) : polycopié de Master de Jacques Lefrère, Université Pierre et Marie Curie Sorbonne Université, 13 novembre 2019. * [Cours de Fortran de l'IDRIS](http://www.idris.fr/formations/fortran/) (Institut du développement et des ressources en informatique scientifique du CNRS). Régulièrement mis à jour. ## Quelques très bons livres récents en anglais * Curcic, Milan. [Modern Fortran - Building efficient parallel applications](https://learning.oreilly.com/library/view/-/9781617295287/?ar), Manning Publications, 1ère édition, novembre 2020, ISBN 978-1-61729-528-7. * Metcalf, Michael, John Ker Reid, et Malcolm Cohen. *[Modern Fortran Explained: Incorporating Fortran 2018.](https://oxford.universitypressscholarship.com/view/10.1093/oso/9780198811893.001.0001/oso-9780198811893)* Numerical Mathematics and Scientific Computation. Oxford (England): Oxford University Press, 2018, ISBN 978-0-19-185002-8.