• [^] # Re: Fortran...

    Posté par . En réponse au message [Terminé] Invitation à tester mon nouveau moteur de blog. Évalué à 1.

    Je ne m'attendais pas à avoir à aborder la question du Fortran… Mais s'il faut le faire, allons-y ! Mais je n'ai absolument pas envie de polémiquer sur ce genre de sujet car l'objet de ce post sur ce forum était de savoir si mon moteur de blog était fonctionnel ou non. Cependant j'accepte aussi volontiers des suggestions pour l'améliorer.

    Concernant mes choix de programmation, dans l'hypothèse où le logiciel tourne pas trop mal et dans la mesure où les avertisseurs du compilateur gfortran (Wall, pedantic, std=f2008) restent muets, je considère que ma programmation est valide à défaut d'être jolie. Dans la mesure où ça compile et que les usagers sont contents, moi être content. Je fais du logiciel à titre amateur et gratis (je n'ai jamais eu une seule heure de cours d'informatique de ma vie !) et je compte bien rester libre d'employer à ma guise un logiciel libre. Prétendre faire du logiciel libre tout en restant enfermé dans des carcans théoriques dispensés par des maîtres aussi prestigieux soient-ils en leur temps, n'est plus du logiciel libre, c'est de l'académisme !

    J'ai commencé ce projet il y a quatre ans mais en codant vraiment plutôt à la mauvaise saison. J'ai fait, dès le départ, le choix d'employer un langage qui compile : j'utilisais, pour mes besoins personnels, le moteur de blog NanoBlogger (scripting bash) et j'en étais un des traducteurs de ce projet. Mais, clairement, à partir d'une centaine de billets, NanoBlogger rame à générer les pages. Certes, il existe de toute évidence d'autres langages de script plus rapide que Bash ! Et de toute évidence qui dit langage de script dit interpréteur sous-jacent. Ce qui veut dire, une révision du code à chaque upgrade de l'interpréteur ! Or je vais être à l'étranger dans les prochaines années et je serais dans l'incapacité à maintenir de façon soutenue un quelconque logiciel. Donc le choix d'un langage compilé s'imposait. Et comme je tiens fermement à Linux et je que je ne veux pas dépenser d'argent pour compiler, le seule compilo que j'avais de dispo était GCC. Et qu'avait-on comme choix il y a quatre ans ? C et ses variantes, Fortran et Ada. J'ai choisi Fortran parce que que c'était ce qui se rapprochait le plus du Basic, de l'époque où je bricolais sur des PC avant que Linux émerge. Donc, j'utilise Fortran aujourd'hui comme j'utilisais Basic autrefois, la fin justifiant les moyens. Mais je fais pire encore en faisant des appels à la ligne de commande pour lancer des utilitaires comme "ls" pour trier les posts par l'ordre de leur nom de fichier ; de même, pour le basculement du terminal en mode "raw". Je tenais aussi que ce logiciel puisse être modifiable par un quelconque bidouilleur de mon espèce : ce qui implique une chaîne de compilation la plus courte possible et nécessitant le moins de savoir académique. C'est pourquoi j'ai fait le choix de ne pas employer de préprocesseur et utilisé abondamment la directive "include" qui y pallie. Pour la modularité, j'y ai renoncé après l'avoir codé sous forme modulaire : je suis revenu en arrière et j'ai délibérément fait une programmation à l'ancienne afin que mon code soit bidouillable plus facilement par des débutants (des semaines de travail perdues !). Autre choix, le codage en dur des CSS et des templates HTML : par expérience avec le moteur NanoBlogger, je sais que l'utilisateur est très impatient d'avoir son blog à lui et qui soit hébergé chez lui. Et même s'il est un pro de la programmation, il va se comporter comme un gamin qui détruit l'emballage de son jouet à Noël. D'où le choix d'incorporer les templates HTML et CSS à l'intérieur du code. Ainsi, on a son blog chez soi en moins de 5 minutes, même avec un cerveau enfiévré. Est-ce pénible à faire d'incorporer ces templates ? Oui, mais c'est pour la bonne cause.

    D'un point de vue plus élevé, je réfute l'argumentation que Fortran est un langage fait seulement pour les maths. Ça a été vrai à ses débuts, il y a 56 ans. Et il ressemblait beaucoup à un langage de script alors ! Depuis la norme 77, le support des chaînes de caractère est assuré et aussi il est capable d'imprimer un "hello world!" avec ses seuls mots clé et sans l'appel à une bibliothèque externe pour les entrées-sorties. Aujourd'hui, combien de langages compilé sont capables d'en faire autant ? Je soutiens (et je pense que fBlog en est une démonstration) que Fortran est un langage qui peut être utilisé aussi pour les lettres et non pas seulement pour les chiffres. Et je prendrais pour exemple le cas de LaTeX issu du monde des maths et qui est maintenant incontournable pour les sciences humaines. Ce n'est pas parce que Fortran est bon en math qu'il ne doit servir qu'à cela !

    Pour le style de codage, à défaut d'avoir trouvé un seul logiciel à usage général (cad, non scientifique) codé en Fortran, j'ai été dans l'obligation d'inventer mon propre style. Et je puis assurer que ce n'est pas une chose confortable ! Ainsi, j'ai constamment oscillé entre le style Basic avec sa forme verbeuse et mon penchant maniaque à la concision (je suis un ancien marin !). J'ai fait autant que je le pouvais pour me mettre à la place des débutants qui auraient l'envie de modifier les templates ou les paramètres. Fortran, dans son développement actuel, va vers la verbosité. Mais un excès de verbosité nuit gravement à la compréhension du code. Aussi est-ce délibérément que j'ai passé sous silence le Kind des entiers (après les avoir codés !). De toute façon ça ne changerait rien au fonctionnement de ce type de logiciel vu son usage peu intensif en math.

    Ta critique sur le paramétrage des chaînes est tout à fait fondée ! Bon, voilà mes excuses : le compilateur gfortran n'a pas encore le support de l'allocation dynamique des scalaires contrairement au compilo Intel. Pour preuve, gfortran ne peut pas exécuter tous les exemples du dernier manuel de l'IDRIS alors que le compilo Intel le fait. J'ai traîné sur ce sujet car j'avais fait le pari que gfortran assurerait bientôt l'allocation dynamique des scalaires. Bon, arrive un moment où il faut bien le sortir son logiciel ! Et certaines parties de mon code sont du brouillon d'il y a 4 ans… De toute façon, je compte bien me remettre à l'ouvrage quand gfortran aura évolué un peu plus.

    Mais, mordicus, parce que certains mots clés, certaines fonctions intrinsèques, le module intrinsèque ISO_FORTRAN_ENV appartiennent aux normes récentes, je soutiens que mon logiciel relève du Fortran 2008 dans le sens où il ne pourrait pas compiler sous le respect strict d'un standard plus ancien que F2008.
    Et que mon code soit crade, j'assume !