Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Fortran] Quel avenir pour ce langage ?

Débat sur l'avenir de ce langage indéboulonnable.

    26 septembre 2015 à 1:01:45

    Bonsoir à tous,

    Il y a un petit moment maintenant, lors d'une de mes séance de surf sur le net, j'ai découvert un langage: le Fortran.

    Etant curieux, j'ai investigué plus long, et ai trouvé les informations suivantes:

    • Le Fortran a été conçu dans les années 1950 par IBM, et a été utilisé dès le début pour créer des logiciels de calculs scientifiques, ce qui a poussé à l'optimisation des compilateurs et l'écriture de bibliothèques de calculs de plus en plus optimisée.
    • Le Fortran a été conçu pour que les programmes soient intégralement inscriptibles sur des cartes perforées, ce qui restreignait les programmes en nombre de lignes et de colonnes.
    • Il semblerait ainsi que la programmation en Fortran eût été trop contraignante, ce qui a poussé à la création du langage Matlab entre la fin des années 70 et 1984, qui permettait de s'affranchir des caractéristiques propres au Fortran, tout en utilisant les bibliothèques ultra-optimisées pour le calcul parallèle écrites en Fortran.
    • Néanmoins, en 1990, une nouvelle norme du Fortran permet de s'affranchir totalement des contraintes héritées de l'aire des cartes perforées, grâce au format "libre".
    • Depuis, différentes normes se sont succédé (Fortran95, 03 et 08), apportant chacune des innovations à ce vieux langage (dont un début de programmation orienté objet, bien que cela ressemble encore un peu à du bricolage), lui permettant de profiter de fonctionnalités présentes sur les langages modernes.

    Du coup, comme ce langage semble totalement indéboulonnable (la quantité de travail investi dans les bibliothèques de calcul est tellement énorme qu'il serait trop coûteux en temps et en argent de toutes les réécrire dans un autre langage), je me pose les questions suivantes:

    Que manque-t-il à ce langage par rapport aux langages modernes?

    De quelles fonctionnalités aurait encore besoin ce langage pour se diversifier suffisamment, afin qu'on puisse l'utiliser pour coder toutes les parties d'une application de type scientifique?

    Comment implémenter ces fonctionnalités sans dénaturer la syntaxe de ce langage et sans trop casser la compatibilité avec les normes antérieures (Fortan90 et après)?

    En effet, si on est obligé de continuer a utiliser ce langage, pourquoi ne pas le rendre (encore ?) plus souple d'utilisation, et un peu le diversifier sans le dénaturer, ce qui permettrait de programmer des logiciels entièrement en Fortran ou presque?

    Y a-t-il par ailleurs des manières de coder, de définir des objets par exemple, qui ce révèle plus propre qu'en C ou en C++?

    Et qu'en est-il des autres langages comme le Python, le Ruby ou le Java?

    Finalement, de quel langage est-il le plus proche (dans sa syntaxe ou dans certains concepts), et donc de quel langage pourrait-il s'inspirer pour évoluer?

    ___

    Néanmoins, je me demande si le Fortran est vraiment armé pour survivre sur le long terme.

    Pensez-vous que ce langage pourra s'adapter à des avancées dans le domaine des puces électronique, par exemple à ce concept de puce d'IBM?

    Par ailleurs, ce langage a-t-il réussi à s'adapter à la tendance du GPGPU?

    Et qu'en sera-t-il pour les toutes nouvelles technologies de demain (la spintronique ou les ordinateurs optiques)?

    Ce langage, ainsi que tout le travail effectué pour en optimiser les bibliothèques, tombera-t-il dans les oubliettes de l'histoire, comme tous les autres langages?

    Ou bien est-ce, bien qu'utilisant les même langage qu'auparavant, ces nouvelles architectures d'ordinateurs introduiraient-elles de nouveaux paradigmes de calculs, qui rendrait les bibliothèques existantes inefficaces sur ces architectures, et menacerait ainsi la place du Fortran comme langage scientifique?

    _____

    Merci pour votre lecture attentive de ce sujet et merci d'avance pour vos réponses.

    Bonne soirée.

    • Partager sur Facebook
    • Partager sur Twitter
    Projet: cours "Histoire des OS" (titre provisoire). Stade: annulé
      26 septembre 2015 à 1:40:22

      Quand tu regarde ceci, ça te donne le goût de l'utiliser ? :

      ! Imprime une table de conversion degrés -> radians 
      ! ================================================= 
      ! 
      ! Déclaration des variables 
            INTEGER DEG 
            REAL RAD, COEFF 
      ! 
      ! En-tête de programme 
            WRITE (*, 10) 
         10 FORMAT (' ',20('*') /                                             &
           &        ' * Degres * Radians *' /                                 &
           &        ' ', 20('*') )                                       
      ! 
      ! Corps de programme 
            COEFF = (2.0 * 3.1416) / 360.0 
            DO DEG = 0, 90 
               RAD = DEG * COEFF 
               WRITE (*, 20) DEG, RAD 
         20 FORMAT (' *  ',I4,'  * ',F7.5,' *') 
            END DO 
      ! 
      ! Fin du tableau 
            WRITE ( *, 30) 
         30 FORMAT (' ',20('*') ) 
      ! 
      ! Fin de programme 
            STOP 
            END PROGRAM DEGRAD

      C'est un vieux langage sur de veille base qui à peu évoluer. Aujourd’hui la programmation est beaucoup axée sur l'objet, car c'est beaucoup plus modulaire et le développement est plus solide et rapide. Le concept d'héritage est un gros morceau qui fonctionne très bien (Comment s'en passer?)

      La syntaxe ne m'inspire pas, le tout en majuscule, des mots réservés trop long, où est le scope?

      La plupart des librairies ont été écrite en C qui est compatible avec le C++ (beaucoup de support), c'est un langage qui a bien évolué et les autres s’en sont inspiré, s’ils n’ont pas eux même écris leur compilateur en C++. Le compilateur lui-même a énormément évolué depuis des années et est aujourd'hui extrêmement performant. Il sera très difficile de le déclasser.

      À mon avis, les langages qui ont de l'avenir, sont ceux qui s'inspire de C/C++ et qui le rendre plus agréable d'utilisation. Celui-ci étant de bas niveau, puissant, il permet beaucoup de choses, mais moins évidant à utiliser, entre autre la gestion de la mémoire qui est pratiquement manuel.

      Donc quelque chose de haut niveau, mais qui ne limite pas les performances et les possibilité, avec une syntaxe agréable. Axé beaucoup plus vers le GPU et la programmation parallèle.
      Le tout complémenter par un IDE avec auto-completion et détection d'erreurs à l'écriture, est un atout.


      Le Python c'est un langage interpréter, il n'est pas en langage machine donc très lent à exécuter. Par contre il peu exécuter du Python sans compilation. Il requière le programme phyton pour s'exécuter. Peu d'avantage par rapport au Java selon moi.

      Ruby, c'est tout comme Phython.

      Le Java, est très portable, compiler en bytecode, ça prend la Java Virtual Machine pour le lire. Une mémoire basé sur un garbage collector, contrairement à la philosophie C++ de RAII et comptage par référence. Un langage qui à de l'avenir et qui est très populaire.

      Pour un langage scientifique mieux vaut utiliser MathLab, un autre langage interprété, utile pour exécuter directement des bouts de codes et faire des graphiques simplement.

      Ensuite le C++ évolue toujours, du coté du compilateur LLVM on peut même faire de la compilation JIT (Just-In-Time), donc exécuté du code C++  sans même le pré-compiler ce qui rejoins les langages interpréter sans toutefois perde en performances.

      Les langages pour l'électronique c'est une autre histoire. Ce n'est pas comme pour la programmation de jeux, on a besoin de toucher à quelque chose de très bas niveau et d'avoir accès à que petite zone de mémoire et chaque entrée/sortie.
      Ces langages/compilateur ont souvent quelque pas de retard, on commence tout juste à voir des compilateurs C++ pour la programmation de microcontrôleurs, la plupart étant du C et même de l'assembleur.
      Aussi les FPGA sont beaucoup utilisé pour les performances, qui ont une programmation spécial, car on créer matériellement la logique et les interconnexions.

      -
      Edité par Maeiky 26 septembre 2015 à 2:56:30

      • Partager sur Facebook
      • Partager sur Twitter

      GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.

        27 septembre 2015 à 20:45:00

        Pour relancer un peu la discussion, voilà ma réponse à Maeiky,

        @Maeiky: Déjà, merci pour ta réponse.

        D'où vient le code Fortran que tu as mis en ligne?

        Car, à vu de nez et de ce que j'ai lu, il pourrait s'agir de code Fortran pré-90 (Fortran77 par exemple), qui semble être une vraie purge pour un programmeur (d'où la création de Matlab, de ce que j'ai compris).

        Mais je ne pourrais en être certain que si tu me donnes la source de ce code.

        ___

        Concernant l'écriture des bibliothèques destinées au calcul scientifique, j'aimerais bien savoir quelle est la proportion de bibliothèques traduites du Fortran vers le C.

        _______

        Concernant ton argumentation sur les langages de programmation et les architectures, je crois que tu n'as pas compris ce que je voulais dire.

        Je demandais si le Fortranmoderne (qui semble s'être différencié du Fortran classique) était on non plus élégant dans certaines implémentations de concepts que les langages actuels (sachant qu'il semble qu'on puisse faire des choses horribles en C ou en C++), et si il se rapprochait ou pas d'un langage qui existerait déjà et est utiliser de nos jours.

        Là, tu me dis qu'il n'y a aucun langage à part le Matlab qui, actuellement, n'a vraiment de l'avenir par rapport à de la programmation scientifique (dis moi si je me trompe).

        Et tu dis que Java a de l'avenir, alors qu'il est clairement inadapté à de la programmation scientifique (demande énormément de ressources pour la machine virtuelle; c'est donc un peu hors sujet), et que, de ce que j'ai entendu, certains disent au contraire que Java commence à s'essouffler, et qu'il faut lui trouver un successeur (voir le projet Ceylon, par exemple).

        Et puis, concernant le matériel, je pensais à des technologies qui aillent plus loin que l'électronique que l'on connaît actuellement. Car je ne vois pas bien l'intérêt d'investir du temps et de l'énergie dans une plateforme qui sera, à long terme, condamnée à disparaître (que ce soit le Fortran ou le C), à cause d'un changement d'approche du calcul haute performance.

        • Partager sur Facebook
        • Partager sur Twitter
        Projet: cours "Histoire des OS" (titre provisoire). Stade: annulé
          27 septembre 2015 à 21:07:58

          L'exemple cité provient de Wikipedia, c'est du Fortran 90 mais compatible 77...

          Ces exemples avec une version plus récente de Fortran sont effectivement plus lisibles ;)

          • Partager sur Facebook
          • Partager sur Twitter
            27 septembre 2015 à 21:13:02

            colorguest a écrit:

            Pour relancer un peu la discussion, voilà ma réponse à Maeiky,

            @Maeiky: Déjà, merci pour ta réponse.

            D'où vient le code Fortran que tu as mis en ligne?

            Car, à vu de nez et de ce que j'ai lu, il pourrait s'agir de code Fortran pré-90 (Fortran77 par exemple), qui semble être une vraie purge pour un programmeur (d'où la création de Matlab, de ce que j'ai compris).

            Mais je ne pourrais en être certain que si tu me donnes la source de ce code.

            Ne cherchez pas, vous avez le coupable sous la main.

            Ca vient d'un support de cours Fortran 77 que j'ai écrit il y a fort longtemps http:://www.labri.fr/perso/billaud/travaux/intro-f77.ps.gz

            et quelqu'un est repassé derrière pour le maquiller en fortran 90.

            Plus exactement, au milieu des années 80, quand la modernité du futur c'était d'utiliser fortran 77 au lieu de fortran IV, et que F90 n'était évidemment pas sorti. Pas mis à jour parce qu'on a arrêté d'enseigner Fortran en IUT (pour Pascal, Turbo Pascal, puis C++), mais mis sous une forme lisible au cas où il y aurait des malheureux obligés de se former rapidement à F77 pour des raisons de maintenance archéologique.

            ___

            Concernant l'écriture des bibliothèques destinées au calcul scientifique, j'aimerais bien savoir quelle est la proportion de bibliothèques traduites du Fortran vers le C.

            _______

            Pour ce que j'en sais, très peu. Il y avait davantage d'intérêt de faire évoluer - au besoin - vers les versions ultérieures de Fortran. Un grand principe : on ne va pas dépenser des milliers d'heures de travail (et des tas d'euros)  pour réécrire du code qui marche correctement depuis des décennies.



            -
            Edité par michelbillaud 27 septembre 2015 à 21:20:45

            • Partager sur Facebook
            • Partager sur Twitter
              27 septembre 2015 à 21:27:28

              Que manque-t-il à ce langage par rapport aux langages modernes?

              De la programmation générique, et une forme de convertion de types automatiques entre types numériques de base.

              De quelles fonctionnalités aurait encore besoin ce langage pour se diversifier suffisamment, afin qu'on puisse l'utiliser pour coder toutes les parties d'une application de type scientifique?

              C'est déjà le cas, même si les bibliothèques pour les GUI sont peu nombreuses. Le langage n'a pas besoin de plus de fonctionnalités à mon sens.

              En effet, si on est obligé de continuer a utiliser ce langage, pourquoi ne pas le rendre (encore ?) plus souple d'utilisation, et un peu le diversifier sans le dénaturer, ce qui permettrait de programmer des logiciels entièrement en Fortran ou presque?

              C'est déjà possible. Mais Fortran reste un langage de niche, pour des noyaux de calcul haute performance. Pourquoi tous les langages devrait-ils être capables de tout faire ? En calcul distribué haute performance, on ne trouve pour le moment en quantité non négligeables que Fortran et C. C++ commence à faire son apparition, selon les domaines.

              Y a-t-il par ailleurs des manières de coder, de définir des objets par exemple, qui ce révèle plus propre qu'en C ou en C++?

              Les classes de base dans l'héritage sont accessible directement dans l'objet enfant, ce qui est intéressant comme fonctionnement.

              La syntaxe ne m'inspire pas, le tout en majuscule, des mots réservés trop long, où est le scope?

              Les majuscules sont optionnelles (PROGRAM et program et ProGraM sont les même mots-clef). Le scope est défini au niveau du sous programme local, et depuis la norme 2008, on peut utiliser des block/end block explicites.

              • Partager sur Facebook
              • Partager sur Twitter
                27 septembre 2015 à 21:40:24

                C'est très arbitraire, les langages qui ont de l'avenir d'après moi sont ceux qui réponde le plus aux besoins actuel, soit la simplicité, la scalabilité, la modularité, les performances, les outils (ex: auto-complétion), syntaxe souple/strict réduisant le erreurs potentiels.  Tout ça c'est des compromis qui faut faire, et il est très difficile d'arriver à un langage parfait, ça dépend aussi des goûts et de la logique emprunté. On peut voir par exemple une logique ECS, ou une programmation fonctionnelle.

                Je tente moi-même de faire un langage qui répond à ces besoins.

                colorguest a écrit:

                D'où vient le code Fortran que tu as mis en ligne?

                https://fr.wikipedia.org/wiki/Fortran

                colorguest a écrit:

                Je demandais si le Fortranmoderne (qui semble s'être différencié du Fortran classique) était on non plus élégant dans certaines implémentations de concepts que les langages actuels (sachant qu'il semble qu'on puisse faire des choses horribles en C ou en C++), et si il se rapprochait ou pas d'un langage qui existerait déjà et est utiliser de nos jours.

                Là, tu me dis qu'il n'y a aucun langage à part le Matlab qui, actuellement, n'a vraiment de l'avenir par rapport à de la programmation scientifique (dis moi si je me trompe).

                La vrai question est qu'est-ce qui fait qu'un langage est orienté programmation scientifique?
                Le C/C++ sont des langages qui permette tout, d'où leur popularité, il sont très puissant mais c'est à double tranchant. Beaucoup de sources d'erreurs sont possibles, mémoire difficile à gérer. Pour un langage scientifique il serait préférable de pouvoir se concentrer à l'essentiel. On peut mettre de coté aussi les performances, on veut sans doute pouvoir visualisé rapidement des courbe, MathLab permet bien ce genre de chose.
                Mais rien n’empêche de faire ses propre outils en C++, et d'arrivé à quelque chose de plus aisé d’utilisation, tu peux faire des choses que MathLab ne pourra jamais, c'est un incontournable.

                Le C/C++ à de l'avenir car tout est basé dessus et n'est pas limitant, on peut tout faire.
                Éventuellement, niveau technologie on se rapproche beaucoup de parallélisme, les langages qui ne le permettront pas sera un gros handicap.
                Matériellement c'est toujours le C/C++ qui est et qui sera grandement utilisé, il y a même déjà des compilateurs C pour FPGA.

                colorguest a écrit:

                Et tu dis que Java a de l'avenir, alors qu'il est clairement inadapté à de la programmation scientifique (demande énormément de ressources pour la machine virtuelle; c'est donc un peu hors sujet), et que, de ce que j'ai entendu, certains disent au contraire que Java commence à s'essouffler, et qu'il faut lui trouver un successeur (voir le projet Ceylon, par exemple).

                Ceylon : il peut être compilé sous forme de bytecode Java ou sous forme de Javascript.

                Ça revient pas au même? La seule différence que je voie est un typage plus fort.

                -
                Edité par Maeiky 11 octobre 2015 à 17:36:04

                • Partager sur Facebook
                • Partager sur Twitter

                GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.

                  27 septembre 2015 à 21:48:33

                  Si on veut s'amuser, le programme fortran n'est pas pire que l'équivalent en C, dont on ne voit pas vraiment l'avantage sur l'exemple (faut se taper les caractères dans les répétitions, coller des points-virgules partout, etc)

                  void main() {
                  // Imprime une table de conversion degrés -> radians
                  // =================================================
                        char *format10 = "************************\n"
                                          "* Degrés     *  Radians *\n"
                                          "************************\n";
                        char *format20 = "*    %4d   *   %7.5f   *\n";
                  
                        char *format30 = "************************\n";
                  
                        printf(format10);
                        float COEFF = (2.0 * 3.1416) / 360.0;
                        for (int DEG = 0; DEG <= 90; DEG++) {
                           float RAD = DEG * COEFF;
                           printf(format20, DEG, RAD);
                        }
                        printf(format30);
                  
                        exit(0);
                  }
                  

                  -
                  Edité par michelbillaud 27 septembre 2015 à 21:51:27

                  • Partager sur Facebook
                  • Partager sur Twitter
                    9 octobre 2015 à 14:35:58

                    Bonjour à tous,

                    Fortran est un langage que peu de gens connaissent vraiment. Sa réputation de vieux langage lui a fait du tort, mais, du moins pour la programmation scientifique, c'est un bon choix.

                    Personnellement j'ai utilisé le Fortran depuis dejà 3 ans, et il ya un monde entre l'ancien Fortran et le nouveau.

                    Les normes les plus récentes (en attendant la nouvelle, dans pas longtemps... le meeting a lieu dans quelques jours! :D) permettent de créer des programmes évolutifs, y compris avec la POO. Et de décrire précisément ce que l'on veut faire.

                    Matlab à côté c'est une vraie usine à gaz où on sait pas ce qui se passe à l'intérieur, alors que gfortran est libre et disponible sur Unix, Linux, Windows et Mac (tous testés!! et l'installation est élémentaire :D).

                    Bref, si vous voulez vous faire une idée des possibilités offertes par Fortran AUJOURD'HUI, il faut chercher des cours sur les dernières moutures du langage, pas sur des listings des codes des missions lunaires :soleil: d'il y a 40 ans!!!

                    • Partager sur Facebook
                    • Partager sur Twitter
                      11 octobre 2015 à 12:51:50

                      Merci à tous pour vos réponses très instructives. Et désolé pour cette réponse tardive (j'ai eu pas mal de trucs à faire ces derniers temps).

                      ___________

                      @tsez: le pire, c'est que j'ai donné le lien vers cet article dans mon premier poste. Honte à moi:p.

                      _______

                      @michelbillaud: merci pour votre réponse.

                      Pour le code que vous citez, en fait vous dites que quelqu'un a copier-coller ce code en Fortran 77 dans un fichier de code, avec le format "libre" introduit avec le Fortran 90, c'est ça?

                      Si ça l'est, alors je crains bien que ce ne soit pas le seul programme dans ce cas, étant donné que le but serait de se débarrasser de le vieux "fixe" du Fortran pour ne pas casser la compatibilité, tout en continuant à faire évoluer le langage. Ou bien est-ce que je me trompe (est-ce que même prendre du code sous format "fixe" et le recompiler dans fichier sous format "libre" serait trop coûteux en temps et en argent?)?

                      Sinon, je suis tout à fait d'accord avec le fait qu'on ne recode pas tout dans un autre langage si ça demande trop de travail (surtout si on approche du millions ou milliards de lignes de codes, optimisés au maximum pour le calcul hautes performances).

                      ________________

                      @Luthaf: Concernant les bibliothèques graphiques, c'est effectivement quelque chose de limitant.

                      Néanmoins, ce langage pourrait s'inspirer du Python, avec lequel on peut créer des interfaces graphiques avec Qt sans passer par le C++, grâce à PyQt. Et comme le Fortran semble pouvoir s'interfacer avec des fichiers de code en C, il y aurait peut-être possibilité de créer une bibliothèque qui fasse le lien entre le Fortran et GTK+ ou IUP par exemple.

                      Ou sinon, le Fortran pourrait aussi être mis à jour pour s'interfacer avec le Vala, un langage créé pour utiliser les outils du projet Gnome (donc, en partie pour utiliser directement la bibliothèque GTK+), en tout cas de ce que j'ai compris. Et qui a l'avantage de se compiler en C, qui lui même est compilé comme tout programme en C normal.

                      Je ne sais pas comment on pourrait mettre ensemble ces deux langages et leur permettre de dialoguer, mais je pense qu'il y a du potentiel de ce côté là.

                      Concernant l'utilisation du Fortran en dehors de son domaine de prédilection, ce sera juste pour profiter des bibliothèques ultra-optimisées dans des parties d'une application qui, certes, n'a pas besoin d'être rapide, mais qui pourrait être codées de manière assez élégante et différente des langages comme le C ou le C++ (vectorisation du code).

                      Et puis, quitte à avoir un langage indéboulonnable (on risque pas de le remplacer à moyen terme), autant l'utiliser en explorant toutes les possibilités qu'il offre (typiquement, on ne codera jamais une application réseau en Fortran).

                      Enfin, que veux-tu dire à propos de l'accès des classes de bases de l'héritage dans l'objet enfant?

                      Est-ce que cela veut dire qu'on sait que l'objet appartient nous seulement à sa classe (qui est une sous-classe d'une autre), mais aussi qu'il appartient à une classe élémentaire?

                      Quel est l'intérêt pratique de ce type de fonctionnement?

                      ____________

                      @Maieky: Je crois que tu as raison, mais pas dans le domaine de la programmation hautes performances.

                      Les caractéristiques que tu décris pour qu'un langage ait de l'avenir me semblent typiques pour de la programmation générale, où la productivité du développeur est mise en avant, où les performances ne sont pas au premier plan, et où le besoin de compatibilité est peut-être moins forte car les logiciels dans ce domaine peuvent devenir obsolètes de par l'évolution de l'informatique grand publique (en 10 ans, beaucoup de choses ont changé).

                      C'est une approche je pense différente du monde des supercalculateurs, car ces machines ont très tôt utilisée le parallélisme (processeur vectoriel, puis architecture multi-processeurs), et que le besoin est resté stable à travers le temps: calcul vectoriel en parallèle pour résoudre des problèmes physiques (la théorie n'ayant en grande partie pas fondamentalement bouger dans la plupart des domaines étudiés depuis 40 ans).

                      Du coup, le Fortran n'a pas ce besoin d'être comme tu le décris, mais je pense que ce serait bien pour les développeurs de code en Fortran de travailler avec un langage de plus en plus clair et agréable. Cependant, une telle évolution risque de se faire lentement à cause de la compatibilité à assurer avec les anciennes versions.

                      Sinon, je crois que tu te trompes sur les besoins des scientifiques: je doute que pour une grosse simulation ils utilisent un langage interprété comme Matlab, ce sera un gaspillage de temps de calcul, et donc d'énergie, énorme. Je pense plutôt qu'ils utilisent le Fortran ou le C, qui leur offrent une vitesse d'exécution optimale, consomment le minimum de ressources nécessaires, et possèdent des bibliothèques très optimisées permettant d'éviter des pertes de temps de calcul inutiles.

                      _____________________

                      @Cubunite: intéressant en ce qui concerne la conférence.

                      Est-ce que tu y es invité? Dans tous les cas, ce serait intéressant d'avoir un compte rendu des choses qui ont été décidées, si c'est possible bien entendu.

                      Sinon, concernant la POO, bien qu'elle soit faisable, j'ai l'impression que c'est encore un peu rugeux.

                      De ce que j'ai vu dans un code, c'est un sub-module qui est utilisé pour définir un objet je crois (me souviens plus très bien, dis moi si je me trompe).

                      En tout cas, ce serait utile je pense d'avoir, dans un futur proche, de la POO avec des mots réservés dans la syntaxe, pour que cela fasse moins bricolage.

                      Enfin, concernant les cours, c'est sûr qu'il faudrait éviter de tomber sur un très vieux cours. Et vue l'âge de la norme Fortran90, il serait intéressant, pour la prochaine norme majeure, que quelqu'un crée un cours basé uniquement sur cette nouvelle norme (tout en ayant une ou plusieurs annexes traitant le cas des normes plus anciennes).

                      ___________________________________________________________________________________________________

                      P.S: @Maeiky: oui, je connais ton langage, ainsi que le moteur 2D-3D qui va avec. Je suis le projet et je pense que je pourrais le proposer à quelqu'un qui bosse sur un projet d'OS. Le seul soucis, ce sera d'interfacer ton langage avec celui qu'il a créé, pour pouvoir utiliser ton moteur graphique sans soucis.

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Projet: cours "Histoire des OS" (titre provisoire). Stade: annulé
                        11 octobre 2015 à 17:59:58

                        colorguest a écrit:


                        @michelbillaud: merci pour votre réponse.

                        Pour le code que vous citez, en fait vous dites que quelqu'un a copier-coller ce code en Fortran 77 dans un fichier de code, avec le format "libre" introduit avec le Fortran 90, c'est ça?

                        Si ça l'est, alors je crains bien que ce ne soit pas le seul programme dans ce cas, étant donné que le but serait de se débarrasser de le vieux "fixe" du Fortran pour ne pas casser la compatibilité, tout en continuant à faire évoluer le langage. Ou bien est-ce que je me trompe (est-ce que même prendre du code sous format "fixe" et le recompiler dans fichier sous format "libre" serait trop coûteux en temps et en argent?)?

                        .

                        Je suis sur à 99% que c'est moi qui ai mis l'exemple F77 - parce qu'il n'y avait pas d'exemple du tout dans la page wikipedia - et à 75% que c'est moi qui l'ai transformé en F90, un jour que j'avais un compilo sous la main.


                        Ce n'est qu'un exemple jouet, pour faire quelque chose de directement compréhensible pour un programmeur compétent, mais qui ne connaitrait pas Fortran.

                        L'exemple qui ne tire d'ailleurs pas parti des possibilité de Fortran. Il me revient qu'il y avait une "boucle do implicite", qui fait les écritures toute seule :

                              WRITE (*, 20) ((DEG, DEG*COEFF), DEG=0,90)
                           20 FORMAT (' *  ',I4,'  * ',F7.5,' *') 


                        Il est donc assez imprudent, à partir de cet exemple destiné à des débutants de première semaine, de tirer des conclusions sur la maintenance du code réalisé par des professionnels, et d'extrapoler sur l'avenir d'un langage.

                        Enfin, l'évolution des normes d'un langage est une chose, mais le passage à la dernière norme qui intègre les trucs et les machins qui existent dans d'autres langages n'est pas une évidence économique. Par exemple Cobol, langage dont on a prédit la mort dès les années 60, reste fort utilisé avec un parc applicatif imposant, qu'il s'agit toujours de corriger, maintenir, étendre et faire évoluer.


                        Tant que l'évolution est en douceur, le choix est généralement d'en rester à la version 85, parce que ces évolutions ne nécessitent pas de passer, par exemple, à de la programmation OO. Et pour des refontes complète de systèmes de cette taille (millions de lignes), on change carrément de langage, on va pas redevelopper tout à la dernière sauce Cobol.

                        Ceci dit, ces refontes, c'est des contrats avec plein de zeros et des centaines d'années de boulot, on se lance pas là dedans parce qu'un gusse trouve que le langage ne lui plait pas.

                        Enfin, le format variable est évidemment plus agréable que l'ancien système des colonnes réservées hérité des cartes perfos, mais c'est vraiment un détail anecdotique, dont s'occupe le premier éditeur de textes civilisé qui vient. Si il n'y avait que ça de pénible dans le Fortran 77 et cie, ça serait le paradis.

                        -
                        Edité par michelbillaud 11 octobre 2015 à 18:01:10

                        • Partager sur Facebook
                        • Partager sur Twitter
                          11 octobre 2015 à 20:28:00

                          colorguest a écrit:

                          Les caractéristiques que tu décris pour qu'un langage ait de l'avenir me semblent typiques pour de la programmation générale, où la productivité du développeur est mise en avant, où les performances ne sont pas au premier plan, et où le besoin de compatibilité est peut-être moins forte car les logiciels dans ce domaine peuvent devenir obsolètes de par l'évolution de l'informatique grand publique (en 10 ans, beaucoup de choses ont changé).

                          Programmer de façon parallèle est plus complexe que de façon linéaire. Souvent on combine les 2, les parties critiques sont parallélisés, c’est tout l’intérêt d'une carte graphique qui ont un langage GLSL/HLSL, qui n’empêche en aucun cas d'avoir du C++/Java/etc derrière, qui demande plus d’interaction de composants difficilement dissociable.

                          colorguest a écrit:

                          C'est une approche je pense différente du monde des supercalculateurs, car ces machines ont très tôt utilisée le parallélisme (processeur vectoriel, puis architecture multi-processeurs), et que le besoin est resté stable à travers le temps: calcul vectoriel en parallèle pour résoudre des problèmes physiques (la théorie n'ayant en grande partie pas fondamentalement bouger dans la plupart des domaines étudiés depuis 40 ans).

                          Je ne connais pas grand monde qui ont un supercalculateur, ou bien tu parle pour l'avenir? Le Fortran permet-il mieux cela que les autres langages? Est-ce la raison pour lequel tu le catégorise de scientifique?

                          • Partager sur Facebook
                          • Partager sur Twitter

                          GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.

                            13 octobre 2015 à 16:20:23

                            @colorguest: Eum non je ne suis pas invité mais voici le lien du j3 où il y a des infos sur la conférence.

                            Et pour la POO, sans en avoir pratiqué mais...c'est bien plus facile!? :waw:

                            En bref: On déclare une nouvelle structure avec TYPE ... END TYPE (déclarer les attributs entre) et on lie des méthodes en "type-bound procedure"; pour l'héritage il y a le mot-clé EXTENDS, et on peut implémenter le polymorphisme en déterminant le type avec SELECT TYPE etc...

                            Et voici encore un lien vers un cours complet de fortran moderne! C'est facile à lire :)

                            • Partager sur Facebook
                            • Partager sur Twitter

                            [Fortran] Quel avenir pour ce langage ?

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown