• # Surprenant que le Fortran ne soit pas mentionné

    Posté par . En réponse à la dépêche Version 1.0 de Julia. Évalué à 7.

    Je suis très surpris que le Fortran ne soit pas mentionné comme influence. En calcul scientifique haute performance les deux langages qui dominent sont le C++ et le Fortran.

    Le Fortran 2008 est un excellent langage pour le calcul scientifique.
    - Il comporte des constructions propres. Par exemple, on peut dire qu'il existe deux types de boucles : les boucles inconditionnelles (on sait combien de fois on va l'exécuter avant de l'exécuter) et les boucles conditionnelles (on ne sait pas). Généralement, on implémente le premier type de boucle avec un for en C et le second avec un while en C. Mais un for en C n'est qu'un while caché. Par exemple, il est possible d'écrire for (i = 0, i less n, ++i) et de changer le n à l'intérieur de la boucle, ce qui en fait une boucle conditionnelle. Le Fortran rend ce genre de choses impossibles.
    - Il possède des array, ce que ne possède pas le C. En C, il n'existe pas d'array, mais tout est simulé par des pointeurs. Par exemple a[k] n'est qu'un raccourcit pour *(a+k). Cela rend impossible de compiler le programme pour qu'il vérifie qu'on accède pas à un élément en dehors du tableau. Le C++ essaie de s'en sortir avec la STL et Boost, mais les compilateurs sont incapables d'optimiser correctement ces codes souvent à cause des problèmes d'aliasing de pointeurs.
    - Les smart pointers, qui existent dans Boost, existent en Fortran dans le language depuis le Fortran 90 (allocatable components). Et je n'ai jamais vu de programmeur Fortran devenu fou à cause d'un problème de version de Boost ou d'une message de Template incompréhensible!
    - Il possède la notion de Coarray, qui permet de faire du calcul parallèle bien plus simplement que le MPI. C'est moins puissant mais largement plus facile à gérer.

    Malheureusement, ce language est souvent ignoré car beaucoup de programmeurs Fortran écrivent des choses horribles. Cependant, le language a énormément de qualités souvent ignorées.

    Vous pouvez par exemple lire ce livre sur le calcul scientifique orienté objet avec des exemples en C++ et en Fortran, pour vous rendre compte qu'il est possible d'écrire des programmes très bien structurés dans ce language: http://www.amazon.com/Scientific-Software-Design-The-Object-Oriented/dp/0521888131/ref=sr_1_5?ie=UTF8&qid=1330889360&sr=8-5