• [^] # Re: Pas que le calcul

    Posté par . En réponse au journal Des nouvelles de Fortran. Évalué à 10.

    un article comparatif entre ces deux langages tant ils semblent partager les mêmes fonctionnalités.

    Les mêmes fonctionnalités, c’est mal connaître les deux langages (enfin, dans la mesure où ils sont tous deux Turing complets, il n’y a rien que fait l’un que ne peut pas faire l’autre, mais leurs usages sont très différents).

    En Fortran pas de template, et (presque) pas de généricité. À l’inverse en C++, il a fallu attendre la version 2017 pour avoir un type tableau de taille fixe qui serve à quelque-chose (std::array), là où Fortran offre plein de fonctions de manipulations de tableaux et possède des types qui permettent de détecter beaucoup d’erreurs à la compilation, et certaines à l’exécution (avec -fcheck=bounds par exemple).

    Fortran est plus simple que C++ et dont plus facile à apprendre, et plus facile à lire par des non-experts, il contient aussi beaucoup moins de pièges (malgré quelques héritages tordus, comme tous les vieux langages). Plus facile à compiler aussi, les modules, intégrés au langage depuis Fortran 90 sont toujours en discussion pour C++ qui n’intègre rien de similaire si ce n’est des palliatifs complexes comme les en-têtes précompilés et autres horreurs.

    Au final, j’aime bien le C++, mais je vois bien à l’usage que j’arrive beaucoup mieux à faire évoluer mon code de calcul scientifique en Fortran que mes autres projets en C++. En Fortran, j’ai un tout petit peu plus de duplication de code due à l’absence de généricité, mais finalement très peu et c’est un prix assez faible à payer pour avoir un code lisible et concis pour le traitement de données en tableaux. C’est aussi beaucoup plus facile de faire travailler des étudiants ou des chercheurs pour une durée déterminée sur un code Fortran. Même mes collègues informaticiens mettent du temps à comprendre le code C++ là où le Fortran se lit presque sans apprentissage (et s’apprend relativement vite pour l’écrire).

    Ce qui manquait cruellement au Fortran c’était une manière propre de s’interfacer avec les autres langages et les dernières versions ont largement comblé ce manque.