Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
Hier — 26 décembre 2024Flux principal

Des nouvelles de Fortran n°6 - décembre 2024

24 décembre 2024 à 07:54

Que s’est-il passé dans le monde du Fortran depuis décembre 2023 ? Nous avons un centenaire à fêter (non, ce n’est pas le vieux barbu coincé dans la cheminée), ainsi qu’un nouveau Roi (il n’est pas libre, mais tant pis pour lui, il n’avait qu’à choisir de vivre dans une amphore). Sans oublier un artiste octogénaire (on en profite pour explorer les liens entre FORTRAN et art dans les années 60-70). Et on déconstruit enfin un mythe sur les ordinateurs des sondes Voyager.

Sommaire

John Backus est né il y a cent ans

John Backus (1924-2007), père du langage, est né à Philadelphie le 3 décembre 1924. Le site mathématique MacTutor propose une biographie intéressante (en anglais) du mathématicien/informaticien, avec des citations. Par exemple, à propos de ses années dans le secondaire :

I flunked out every year. I never studied. I hated studying. I was just goofing around. It had the delightful consequence that every year I went to summer school in New Hampshire where I spent the summer sailing and having a nice time.

Sur le front des compilateurs

Compilateurs opérationnels

Le Roi est mort, vive le Roi ! Le compilateur classique Intel ifort n’est plus maintenu à partir d’Intel® Fortran Compiler 2025.0, sorti le 31 octobre 2024. Sa version définitive est la 2021.13. C’est son dauphin Intel ifx, basé sur LLVM, qui prend le relais, après être sorti de sa version beta avec la 2022.0.

Mais « si je n’étais Intel ifx, je voudrais être GNU Fortran ». Au moins, l’animal est libre, dans l’immensité des savanes. Certains anciens prétendent même en avoir aperçu un assis en tailleur et jouant de la flûte. GFortran, compilateur Fortran de la GCC, en est à la version 14.2. On notera des améliorations concernant OpenMP et OpenACC. Si le compilateur accepte désormais l’option -std=f2023, ne nous réjouissons pas trop vite. Pour l’instant la nouvelle fonctionnalité gérée concerne l’augmentation de la longueur des lignes à 10 000 caractères (au lieu de 132 depuis Fortran 90) et des instructions à un million de caractères (elles peuvent être continuées sur un grand nombre de lignes). À quoi ça sert ? C’est utile pour des codes générés automatiquement.

En gestation

Il faut 22 mois de gestation pour un éléphant, mais beaucoup plus pour un nouveau compilateur Fortran ! On doit non seulement implémenter près de 700 pages de norme technique, mais aussi tout un tas de choses externes telles que MPI, OpenMP ou OpenACC pour le calcul parallèle, et gérer de nombreuses architectures matérielles. On comprend donc que les motivations sous-jacentes doivent être puissantes pour s’attaquer à un tel chantier et on comprend pourquoi la plupart des nouveaux compilateurs s’appuient sur l’infrastructure LLVM.

L’avancée du travail sur le nouveau Flang pour LLVM est décrite dans le dernier Flang Liaison Report au J3 (24/10/2024). Et d’après Phoronix, flang-new a été rebaptisé flang pour la version LLVM 20.1 du printemps prochain, ce qui est de bon augure. Flang est un projet soutenu par NVIDIA et le Département de l’Énergie américain.

AMD travaille de son côté à sa version Next-gen Fortran compiler permettant le délestage (offloading) des instructions OpenMP sur ses GPU. Bref, c’est chaud dans le monde du calcul parallèle sur processeur graphique !

Le développement du compilateur LFortran continue. Il passera en version beta quand il sera capable de compiler une sélection de dix bibliothèques Fortran matures : en décembre 2023, il en était à 4/10. Il est désormais à 7/10. Et il a été annoncé en novembre 2024 que LFortran gérait désormais toutes les fonctions intrinsèques de Fortran 2018. Le même blog présente également quelques démos en ligne du back-end WebAssembly de LFortran.

Fortran 2028

Alors que les compilateurs n’implémentent pour l’instant que certaines parties de Fortran 2023, la prochaine mouture est déjà en cours d’élaboration. Et on commence à voir l’appellation Fortran 2028 apparaître dans les documents du comité J3 à la place de 202Y. Dans la liste des caractéristiques retenues par le groupe de travail WG5 fin juin, on trouve en particulier :

  • des templates pour la programmation générique ;
  • la gestion des tâches asynchrones ;
  • un pré-processeur Fortran ;
  • la possibilité de définir les KIND utilisés par défaut dans un programme (on pourrait par exemple demander dans le code lui-même que tous les REAL soient considérés comme des REAL64, ou REAL32 ou REAL128).

La proposition d’ajouter au langage des entiers non signés a disparu (pour l’instant ?), malgré l’option expérimentale -funsigned qui sera disponible dans GFortran 15.

Communauté Fortran-lang

Projets Fortran-lang

L’organisation Fortran-lang est désormais financée par l’organisation américaine à but non lucratif NumFOCUS.

fpm

Le gestionnaire de paquets Fortran fpm est disponible en version 0.10.1 depuis mars 2024. Une liste d’environ 300 projets utilisant fpm est disponible ici.

stdlib

La bibliothèque standard stdlib est sortie en version 0.7.0 début juillet. Elle apporte entre autres choses les valeurs CODATA 2022 des constantes physiques fondamentales. Ces valeurs, utilisées par tous les physiciens, sont mises à jour par le NIST (National Institute of Standards and Technology) tous les quatre ans, au fil des progrès en métrologie.

Quelques projets divers

  • Fortitude, un linter écrit en Rust, est disponible en version 0.6.2.
  • Le projet fprettify, un utilitaire de formatage automatique de code Fortran, écrit en Python, a été officiellement adopté par l’organisation Fortran-lang.
  • forgex, un moteur d’expressions régulières entièrement écrit en Fortran, est disponible en version 3.5.

Art et Fortran

C’est Noël, on veut ce qui n’a pas de prix, on veut du beau ! Que la technologie serve à faire du beau.

Earl Einhorn, 81 ans, crée ses images à l’aide de programmes Fortran depuis 1989, et utilise Photoshop pour finaliser les couleurs. Ses œuvres actuelles comportent souvent des visages, leur symétrie facilitant son travail depuis la perte de son œil droit. Vous pouvez voir son travail sur son site. Il y explique qu’actuellement il crée typiquement des images de 12 000 sur 15 000 pixels, ce qui lui permet de les imprimer en 300 PPP pour des tableaux d’environ un mètre de côté.

Voilà qui peut sembler original, mais dans les années 60-70 de nombreux artistes ont en fait utilisé FORTRAN 1 pour explorer ce que l’ordinateur, machine alors révolutionnaire et rare, pouvait apporter à la musique, aux arts graphiques et à la poésie. Pourquoi FORTRAN ? C’était simplement le langage dominant et facile à apprendre à l’époque, le Python des Beatles !

En 1963, Iannis Xenakis (1922-2001) publie son livre Musiques formelles : nouveaux principes formels de composition musicale. Le chapitre IV « Musique Stochastique libre, à l’ordinateur » contient le listing du programme en FORTRAN IV utilisé pour générer sur IBM 7090 une œuvre de musique stochastique intitulée ST/10=1,080262. Il est maintenant en ligne sur GitHub. Au fait, bonne écoute !

Pierre Barbaud (1911-1990) a également utilisé FORTRAN pour composer par exemple une oeuvre de musique électronique intitulée Terra incognita ubi sunt leones (1973). Le début du code est visible ici (hum… que penser de cet appel répété à cette procédure : CALL GIRL(IDIV) ?). Bonne écoute !

Au niveau des arts graphiques, on pourrait penser que les imprimantes de l’époque étaient rudimentaires, mais ce serait oublier les traceurs (plotters), ou tables traçantes, qui permettaient de tracer des dessins techniques avec précision 2. Les artistes programmeurs (ou programmeurs artistes) vont s’en emparer.

Dans les années 60, l’artiste japonais Hiroshi Kawano a travaillé sur sa série Artificial Mondrian. Le site du Zentrum für Kunst und Medien Karlsruhe présente son oeuvre KD 52, réalisée en 1969 à l’aide d’un programme en FORTRAN IV pour les formes et peinte ensuite à la gouache. On pourra lire cet article de blog : « The man-machine: Hiroshi Kawano’s algorithmic Mondrian » par Claudio Rivera.

En 1962, A. Michael Noll (Bell Labs) a commencé à utiliser un Stromberg Carlson SC-4020 microfilm plotter pour faire des dessins abstraits. Un faisceau d’électrons dessinait les formes sur un écran cathodique qui lui-même impressionnait un microfilm. Il rend compte de ses premières expérimentations dans ce mémo daté du 28 août 1962, avec bien sûr un court code FORTRAN.

On peut également citer l’Allemand Manfred Mohr, né en 1938. Voir son site et l’article de blog « Surveying Manfred Mohr’s Five-Decade Collaboration with the Computer » (2019). Citons aussi le Slovène Edward Zajec (1938 – 2018) dont on peut voir des oeuvres sur cette page. Son assistant Matjaž Hmeljak a continué sa carrière dans l’art génératif au moins jusqu’en 2020.

Les œuvres de Vera Molnár (1924-2023), pionnière de l’art génératif, ont été exposées à la biennale de Venise en 2022. Elle a écrit en 1974-1976 un programme baptisé Molnart avec son mari :

François Molnar et moi avons conçu et mis au point un programme souple qui permet une expérimentation picturale systématique. Il est écrit en Fortran pour ordinateur de grande capacité relié à un écran de visualisation et à un traceur.

Voir également :

Dans le domaine des arts graphiques, vous trouverez plus d’œuvres numériques réalisées entre 1963 et 1980 à l’aide de FORTRAN sur le site compart.

Même les poètes ont utilisé FORTRAN. L’écrivain portugais Pedro Barbosa a ainsi publié en 1977 un livre intitulé A literatura cibernética 1. Autopoemas gerados por computador. On peut y lire des extraits de code. Et le poète brésilien Erthos Albino de Souza a utilisé FORTRAN et PL/1 pour créer des poèmes graphiques.

J. M. Coetzee, prix Nobel de littérature 2003, a commencé sa carrière comme programmeur chez IBM dans les années 60. Il a expérimenté la génération automatique de poésie : « The line generator was composed in a combination of FORTRAN-style pseudocode and assembly code », comme rapporté dans cet article :

Déconstruction

Depuis 2013 circulait l’idée que les logiciels internes des sondes spatiales Voyager 1 et Voyager 2, lancées en 1977, avaient été écrits originellement en FORTRAN. Le buzz remonte apparemment à un article intitulé « Interstellar 8-Track: How Voyager’s Vintage Tech Keeps Running » paru dans Wired. Charles A. Measday a publié sur son blog début 2024 un article approfondi intitulé « Voyager and Fortran 5 » qui déconstruit ce mythe urbain. Si une partie des logiciels au sol ont été écrits à l’époque en FORTRAN, les ordinateurs de bord des sondes étaient et sont toujours programmés en assembleur, ainsi qu’à l’aide de séquences de commandes spécifiques aux sondes.

La citation de Backus

Terminons en revenant au point de départ de la dépêche, avec une citation de Backus issue d’une de ses dernières interviews en 2006. Voici son bon conseil pour les jeunes :

Well, don’t go into software. It’s just such a complicated mess that you just frazzle your brains trying to do anything worthwhile.


  1. On écrit le nom du langage en majuscules pour la période avant Fortran 90. 

  2. Ce n’est peut-être pas un hasard si le langage Logo, avec sa célèbre tortue, est créé à cette époque (1967). 

Commentaires : voir le flux Atom ouvrir dans le navigateur

À partir d’avant-hierFlux principal

L’informatique sans écran

Lors d’un Noël de ma tendre jeunesse pré-adolescente est arrivé un « ordinateur » dans le foyer. Ce PC (Intel 386) a été installé dans le bureau et a vite dégénéré en console de jeux. Puis les années passant c’est devenu une formidable source d’expérimentation informatique pour un geek en devenir. À cette époque on sensibilisait la jeunesse à ne pas passer trop de temps devant la télévision et la console de jeux, puis devant l’ordinateur et les jeux vidéo violents. Mais on ne parlait pas vraiment de l’écran.

Aujourd’hui les messages de sensibilisation se résument aux écrans :

  • « pas d’écran avant trois ans »
  • « nos jeunes passent leurs temps sur leurs écrans » (comme si les « vieux » n’y étaient pas non plus)
  • « attention les écrans fabriquent une génération de crétins »
  • « les écrans, les écrans, les écrans…»

Il est vrai qu’aujourd’hui l’informatique ne se résume presque plus qu’à un écran. De l’ordinateur avec clavier+souris+écran, voire crayon optique, on est passé aux tablettes et ordiphones qui n’ont plus que l’écran (tactile quand même).

Pour prendre le contre-pied de cette obsession des écrans, je me demandais donc s’il existait encore une informatique « sans écran ». La formidable multiplicité des activités que l’on peut avoir sur un ordinateur pourrait-elle se faire sans écran ? Dans quelle mesure peut-on coder, surfer sur le web, lire/envoyer des mails sans écran ? Cette informatique fantasmée par notre ex-ministre de l’éducation est elle une réalité ?

    Sommaire

    L’informatique, une histoire d’abord sans écran

    Si l’on date la naissance de l’ère de l’informatique avec Ada Lovelace, et qu’on estime l’arrivée des ordinateurs avec écrans à la fin des années 1970, alors on peut aisément dire que l’informatique a été plus longtemps sans écran qu’avec.

    Peinture d’Ada LovelaceMalgré son look cosplay de manga elle n’a pas subi trop d’écrans dans son enfance, elle.

    De même, il est raisonnable de considérer l’ordinateur comme l’outil principal pour faire de l’informatique. Il fut largement sans écran à ses débuts.

    Ken Thompson (assis) et Dennis Ritchie (debout) manipulant un DEC PDP-11
    Pas d’écran pour ces deux geeks qui ont développé UNIX et le langage C (source)

    L’altair8800, sorti en 1975 et sur lequel Microsoft a écrit son BASIC, se programmait avec des rubans perforées, voire avec des commutateurs, et l’affichage se faisait avec quelques diodes (DEL) en face avant.
    Les cartes à trous étant plutôt utilsées avec les gros ordinateurs (aka Big Iron).

    Vue de face de l’Altair8800Difficile de considérer ces deux lignes de diodes rouges comme l’écran de l’Altair8800

    L’écran ≠ la vue

    Pour faire sans écran, on pense instinctivement à utiliser d’autres sens que la vue comme l’ouïe ou le toucher (pour le goût ou l’odorat difficile d’imaginer la chose). Mais l’histoire de l’informatique nous montre que les premières interfaces homme-machine ne fonctionnaient pas avec des écrans, et pourtant utilisaient la vue (lumière, LED, imprimante, position mécanique…).

    Mais qu’appelle-t-on écran ?

    D’après la définition de Wikipédia, « un écran d’ordinateur est un périphérique de sortie vidéo d’ordinateur. Il affiche les images générées par la carte graphique de l’ordinateur. Grâce au taux de rafraîchissement d’écran élevé, il permet de donner l’impression de mouvement. »

    Donc si l’on s’en tient à wikipédia, un écran d’ordinateur c’est :

    • des images générées par une carte graphique d’ordinateur. Exit la télé cathodique avec un tuner analogique (qui devient rare aujourd’hui avec la TNT).
    • avec un taux de rafraîchissement élevé. Exit les liseuses et autres appareils utilisant un affichage type «  papier électronique ».
    • pas d’indication de résolutions.

    On peut sans doute rajouter les écrans (comme les télés) qui ne sont pas raccordés à une carte graphique dans la catégorie écran.

    Cela serait donc la résolution (définition et taille…) et le rafraîchissement (fréquence de balayage) du périphérique de sortie vidéo qui font un écran.

    La matrice 5 × 5 d’un micro:bit ne correspond pas à un critère de résolution suffisant, pas plus que les deux poussoirs ne pourraient prétendre à être un clavier.
    micro:bit Pourtant il affiche bien une « image » de cœur <3 !

    Les afficheurs 7 segments ne peuvent pas être considérés comme des écrans. Ils n’affichent que des chiffres et quelques symboles. Difficile de créer une impression de mouvement avec seulement des segments.
    Afficheur 7 segmentsEn faisant un effort, on arrive à reconstituer quelques lettres.

    En doublant le nombre de segments, on arrive à afficher l’ensemble des lettres de l’alphabet latin
    Afficheur 14 segmentsSans diacritiques, faut pas pousser

    Un « panel » LCD 20×4 et ses caractères de 8 pixels sur 5 forme un écran de 100 pixels sur 32, la résolution est déjà meilleure, même s’il est toujours prévu pour n’afficher que du texte. Néanmoins on se rapproche de l’idée que l’on se fait d’un « écran ».

    Du papier électronique ne peut pas être un écran. La résolution peut être excellente mais le rafraîchissement reste insuffisant.

    Finalement la définition de Wikipédia n’est guère rigoureuse ni efficace, entre l’unique LED du panneau de contrôle et l’écran haute résolution, il y a un continuum de périphériques de sortie utilisant des signaux lumineux pour former des images. Il faut peut-être alors chercher les systèmes informatiques qui, dans leur usage normal, utilisent d’autres périphériques de sortie ou pas de périphériques de sortie du tout.

    L’embarquée, une informatique massivement sans écran

    Bien sûr il faut définir le mot « informatique ». Si l’on se réfère à la définition de Wikipédia :

    L’informatique est un domaine d’activité scientifique, technique, et industriel concernant le traitement automatique de l’information numérique par l’exécution de programmes informatiques hébergés par des dispositifs électriques-électroniques : des systèmes embarqués, des ordinateurs, des robots, des automates, etc.

    Avec cette définition, le moindre dispositif électronique embarqué est de l’informatique. Lancer une machine à laver, programmer son four ou préparer une cafetière pour le lendemain est donc une forme de manipulation informatique… qu’on peut envisager sans écran.

    Cependant dès que vient le besoin de développer un système embarqué ou même de le réparer/déverminer, l’écran revient au galop. On a rapidement besoin d’un écran pour y connecter son environnement de développement et sa sonde de debug. Et même l’oscilloscope ou l’analyseur logique que l’on branche pour « voir » les signaux dispose d’un écran.

    En usage normal donc, certains dispositifs informatiques sont conçus pour ne pas nécessiter d’écran parce qu’ils disposent d’un autre périphérique de sortie. Certains centres commerciaux, certaines gares proposent des distributeurs d’histoires courtes : trois boutons comme périphérique d’entrée et une imprimante thermique comme périphérique de sortie. Appuyez et vous aurez de la lecture pour une, trois ou cinq minutes.

    Distributeur d’histoires courtes en gare de Lyon-PerracheSoyons optimistes : il n’y aura pas plus de cinq minute d’attente !

    Plus courant, une box Internet domestique est aussi un dispositif informatique sans écran.

    Livebox 6- Il est où l’écran ? - Dans ton… navigateur

    Il faut reconnaître que si l’usage courant, la connexion à l’Internet, ne nécessite pas d’écran sur la box, son paramétrage en utilise bien un : celui de l’ordinateur sur lequel tourne votre navigateur préféré.

    Les assistants vocaux sont des ordinateurs sans écran. Les principaux périphériques d’entrée comme de sortie sont audio : commande vocale, réponse également. Radio France fait d’ailleurs la publicité pour son offre pour enfants, une histoire et… Oli, sur cette absence d’écran, jouant, sans trop le dire, sur cette peur parentale des écrans.

    Pourrait-on pousser l’utilisation de ces ordinateurs pour faire du développement et «coder en vocal» ? Possible, il est tout à fait possible de programmer l’ouverture de ses volets, la lecture d’une musique ou le thermostat de sa chaudière avec. Mais ça n’est pas du développement.

    L’éducation numérique mais sans écran

    Il est largement possible d’apprendre l’informatique sans écran, et même sans ordinateur.

    La robotique pédagogique se développe depuis l’apparition de la tortue Logo. Actuellement, pour les plus jeunes dès l’école maternelle, c’est une abeille qui est proposée comme initiation à la programmation.

    Bee-Bot en actionSi, si, je suis bien un ordinateur

    La Bee-Bot se programme à l’aide de sept touches et les périphériques de sortie sont les moteurs de déplacement, un petit haut-parleur et en option un porte-crayon. Avec une interface HommeEnfant-Machine aussi simple, il s’agit plutôt d’une mémorisation de séquences de mouvements que de programmation à proprement parler et pour en utiliser toutes les capacités, un interfaçage avec une application ou un ordinateur plus conventionnel est possible, mais on y retrouve un écran ! De nombreux autres robots pédagogiques, un peu plus complexes et performants, existent mais ceux-ci utilisent un écran classique pour accéder à l’interface de programmation.

    Quitte à supprimer les écrans autant aller au bout de la démarche et supprimer l’ordinateur dans son ensemble. Des pédagogues ont ainsi inventé l’informatique déconnectée. Un papier, un crayon, ni écran ni matériel comme le jeu du robot idiot. Les esprits chagrins pourraient y voir une solution au manque de matériel des établissements scolaires.
    Plus que d’informatique il s’agit en fait d’initiation à l’algorithmie.

    Mais peut-on se passer d’écran pour développer ?

    Les plages braille

    Il existe une catégorie de population qui est contrainte de se passer d’écran pour se servir d’un ordinateur : les aveugles.

    Les personnes aveugles peuvent pourtant se servir d’ordinateur, notamment grâce à un clavier spécifiquement développé pour eux nommé « plage braille ». Grâce à ces plages brailles, les aveugles peuvent lire les caractères en braille en touchant une ligne munie de petites pointes pilotés.

    Le prix de ces appareils est assez prohibitif pour quelqu’un qui voudrait jouer avec sans en avoir réellement besoin (un geek quoi). C’est pourtant une bonne manière de faire de l’informatique sans écran. Pour le codage informatique, on utilise un braille à huit points au lieu des six habituels ce qui permet d’avoir 256 combinaisons, soit autant que la table ASCII. La table braille informatique actuelle a été approuvée à l’unanimité en 2007 par la Commission Évolution du Braille Français, elle porte le numéro TBFR2007.

    Que vaudrait un jeu vidéo développé pour une plage braille ? Et pourrait-on l’appeler jeu vidéo ?

    Avec du papier et un stylo/machine à écrire/carte perforé puis scanner

    On peut également faire beaucoup de choses un papier un crayon/stylo/pinceau puis le scanner pour qu’il soit utilisé dans l’ordinateur. Ça reste généralement qu’une étape du développement les programmes ne sont pas plus réalisés intégralement sur papier avant d’être intégré à l’ordinateur.

    Pour conclure

    Avec des écrits comme « la fabrique du crétin digital » et des propos comme ceux de notre ex-ministre de l’éducation, les écrans sont devenus la bête noire de tous les pédagogos.

    Mais l’important n’est-il pas de savoir ce que l’on fait avec un écran ? Faut-il vraiment s’acharner à s’en passer ?

    Sans doute pas.

    Il serait cependant intéressant d’apprendre à se servir d’outils réservés aux aveugles par exemple. Si nous n’avons plus besoin de la vue pour coder, nous pourrions être un peu plus multi-tâches et coder tout en… regardant la télé !

    Commentaires : voir le flux Atom ouvrir dans le navigateur

    ❌
    ❌