dimanche 18 novembre 2007

Fortran must die !

Amusant...

Je suis tombé sur un article signalant une pétition "pour l'abandon du fortran" (ici, depuis une discussion sur Framasoft elle-même issue de linux.org). Avec des avis et réactions assez variés.

Que reproche-t-on au Fortran ?

  • Vieux, archaïque.
  • Verbeux.
  • Pas objet (sauf depuis 95, et encore...).
  • Pénible à apprendre, et peu clair.
Pourquoi utiliser une bouse, pardon, un langage des années 50 ?

Le Fortran date à peu près des années 50, c'est l'un des premiers langages "non-assembleurs" avec le SIMULA, orienté sciences (FORTRAN = FORmula TRANslating language...). Ces versions majeures sont, hormis les arcaniques, 77, 90, (à la limite 95 avec l'objet...) et 2003.

Il se trouve que les scientifiques, race étrange et à priori rare, ont rapidement adopté ce langage, à l'époque si "clair", pour coder leurs petites applis persos, en particulier dans le monde ésotérique de la recherche. Mais comme chacun le sait (enfin, chacun d'un peu sensé...), le monde de la recherche, c'est le monde de demain. Du coup, des petites applis "persos" issues de labos de recherche obscurs se sont construites (en grande partie grâce à l'émergence des réseaux) des bibliothèques de codes significatives, notamment en mathématiques, physique et chimie. Du coup, le fortran (77 par défaut) est devenu le standard de la programmation pour le scientifique de base de tout les pays, quelque soit sa couleur et sa religion...

Cependant, le fortran a vieilli, et en 89, face à l'apparition de langages "modernes" comme le C++, il a du se renouveler avec la version f90 (toujours pas objet cependant). Et aujourd'hui, malgré la version 2003, force est de reconnaître que ce langage paraît antique.

MAIS il est toujours employé, majoritairement sous les versions 77 et 90. Pourquoi ? Parce que dans le monde assez fermé des sciences "dures", le développement de codes de calcul s'étale sur des décennies (au sens propre). Les questions de portabilité sont complètement ignorés (UNIX-only...) et la conversion de code (j'entend, d'un langage à un autre) n'est généralement pas envisagée. On se retrouve donc à travailler actuellement sur des codes de 10, 20 ans en fortran 77 et/ou 90 qui paraissent complètement obsolètes. Et "informatiquement" parlant ils le sont. Mais les objectifs ne sont pas ceux du dernier logiciel en Java...

Mon modeste avis :

Le Fortran est vieux. Non seulement il est "démodé", mais de plus, l'absence de POO (sérieuse) est un frein considérable au développement d'applications fiables et maintenables. Cependant, les old-timers existent toujours, et la conversion de codes de millions de lignes ne se fait pas si facilement (l'expérience le prouve, les contraintes scientifiques étant parfois très strictes sur la non-régression du code...). Il faut donc maintenir et continuer à développer les vieux codes Fortran.

CEPENDANT : il me paraît complètement irresponsable de lancer de nouveaux projets d'envergure en Fortran aujourd'hui. Le problème majeur résidant selon beaucoup dans la non-normalisation du langage. C'est à dire que les compilateurs n'effectuent pas nécessairement les différentes opérations dans le même ordre, augmentant par ailleurs les effets de bords, etc... On se retrouve donc avec des outils scientifiques fournissant des résultats significativement différents selon le compilateur utilisé (lf95, gfortran de gcc, etc...) !!! Les temps ont changé, et le C++ paraît acceptable pour beaucoup de cas, la vitesse d'exécution étant assez comparable sur les machines actuelles, et le coût de maintenance (en temps) étant bien moindre (pour une application équivalente).

Conclusion :

Vous êtes scientifique ? Le fortran vous servira probablement, et vous apprendra le respect des anciens qui devaient écrire leurs codes de la colonne 6 à 75 sur les les fiches perforées. Sinon, laissez tomber (comme le COBOL du reste...) et faites du moderne.

0 commentaires: