Première implémentation du langage Fortress

Posté par  . Modéré par Benoît Sibaud.
Étiquettes :
0
11
jan.
2007
Technologie
Fortress est un nouveau langage de programmation, conçu et développé par Sun Microsystems, visant à remplacer le langage Fortran dans le domaine du calcul à haute performance, notamment scientifique, tout en offrant une bonne productivité pour le programmeur.

Annoncé pour la première fois en mai 2005, Fortress n'était jusque là qu'une série de spécifications disponibles sur le site du projet; ce n'est maintenant plus le cas, le dépôt subversion d'un prototype d'implantation ayant été ouvert. Techniquement, il s'agit d'un interprète écrit en Java pour la machine virtuelle de Sun. La majorité du code est sous licence BSD.

Cette version ne fournit qu'un coeur minimal du langage et devrait servir de base pour, à long terme, la création d'un compilateur industriel complet. Le langage à proprement parler est petit : la majorité des constructions est définie dans les bibliothèques de base, comme la boucle "for" par exemple. Cela devrait permettre le choix d'une implantation adaptée au contexte et à la machine, sans avoir à changer le langage ou la base du système d'exécution. Le chercheur dirigeant l'équipe en charge de Fortress, le fameux Guy Steele, a d'ailleurs été le co-concepteur du déjà extrêmement minimaliste Scheme. On peut aussi citer Lisaac, langage bien connu des habitués de DLFP, censé permettre des optimisations poussées grâce à sa grammaire simplissime.

Syntaxiquement, Fortress essaye de coller le plus possible à la notation mathématique usuelle, afin de séduire les scientifiques qui forment son coeur de cible. Il supporte, en plus de l'ASCII, l'Unicode dans les fichiers sources. Fortement lié à l'éditeur, cela permet par exemple d'utiliser le symbole de la multiplication pour signifier cette dernière, etc... C'est un aspect qui fera probablement débat chez les programmeurs. On peut également noter la gestion native des unités de mesure et des conversions entre ces dernières, dans le but de faciliter la programmation scientifique.

Fortress est orienté objet de façon assez particulière. La spécification distingue les traits, qu'on pourrait qualifier d'interfaces (au sens Java) pouvant proposer une implémentation de leurs méthodes, à l'image des type classes d'Haskell. Les objets sont de deux genres distincts : une définition d'un objet unique héritant ("étendant") un ou plusieurs traits, ou bien une définition de famille d'objets paramétrés par un ou plusieurs types (devenant en cela une source de polymorphisme). Le typage est statique et utilise si possible un algorithme d'inférence.

À l'image des macros de la famille Lisp ou bien d'OCaml et son camlp4, les auteurs de bibliothèques peuvent intégrer des sous-langages spécialisés en enrichissant sa syntaxe.

La spécification détaille de très (trop ?) nombreuses autres capacités intéressantes, incluant la programmation par contrats, composants, gestion de la documentation et des tests, gestion de la concurrence et du parallélisme (les boucles for étant par exemple implicitement parallèles) ou encore le polymorphisme paramétrique à l'instar des langages de la famille ML.

Fortress est donc un projet très ambitieux, mais très différent du Fortran (et de bien des langages actuels). L'avenir nous dira s'il arrivera à remplacer son aîné, ou au moins à se tailler une part du lion.

Aller plus loin

  • # Avis

    Posté par  . Évalué à 7.

    C'est peut être une évidence mais ce qui va jouer c'est la facilité de programmation par des non informaticiens et la présence de bibliothèques.
  • # rien à voir ou presque

    Posté par  (site web personnel) . Évalué à 3.

    Je voulais savoir si il existait des design pattern "globaux". De ce que j'ai pu lire sur les designs patterns, il concerne en général la micro architecture (singleton, usine, etc...). Ce que je cherche c'est l'architecture global (genre 3 tier par exemple).

    C'est histoire de voir "de haut" les flux de données, les types de traitement, le volume de traitement, etc...

    Je ne pense pas qu'il y a 50 façon différentes d'écrire un (gros) programme. Il doit bien y avoir des points commun optimisable et à mettre dans une librairy.

    "La première sécurité est la liberté"

  • # Les deux autres

    Posté par  (site web personnel) . Évalué à 9.

    A noter que Fortress est le langage que Sun pousse en avant dans le programme de supercomputing de la DARPA (l'agence de recherche militaire des USA).
    C'est un très gros programme (High Productivity Computing Systems program ou HPCS) qui concerne le hardware (ordinateur petaflop avant 2010) et le software (langage permettant d'exploiter facilement cette puissance).

    En 2002 il y a eu la première phase : Les concurrents étaient IBM, Cray ,SGI et Sun (phase d'exploration et minuscule contrat de 3 millions de dollars chacun).
    En 2003 c'est SGI qui a giclé (et les autres ont eu un contrat de 146 millions de dollars chacun).
    Récemment (en 2006) une sélection a eu lieu et seuls IBM et Cray restent en lice avec un contrat de 500 millions chacun.

    Même si Sun a perdu le contrat de la DARPA ils continuent à travailler sur leur langage Fortress mais bien entendu il est plus probable que ce soit l'un des deux autres langages, celui d'IBM ou celui de Cray, qui l'emporte finalement.

    Le langage pour superordinateurs d'IBM est le X10 et celui de Cray est Chapel.

    Page de présentation de ces 3 langages :

    http://crd.lbl.gov/~parry/hpcs_resources.html

    Liens sur la compétition entre les langages :

    http://www.hpcwire.com/hpc/827250.html

    http://www.ddj.com/article/printableArticle.jhtml;jsessionid(...)
    • [^] # Re: Les deux autres

      Posté par  (site web personnel) . Évalué à 10.

      Au US, les créateurs de langage reçoivent 3 millions d'euro pour faire des pré-études.

      En France, le créateur du langage lisaac doit justifier de son utilité à ces supérieurs pour avoir un ingénieur d'application...

      "La première sécurité est la liberté"

      • [^] # Re: Les deux autres

        Posté par  . Évalué à 2.

        snif, c'est beau la france quand meme.

        Mais la question que je me pose est ce que cette ingenieur d'application auras lui aussi droit a une tente quetchua ?
      • [^] # Re: Les deux autres

        Posté par  . Évalué à 2.

        Sauf qu'aux US on offre pas des euros.
      • [^] # Re: Les deux autres

        Posté par  . Évalué à 2.

        Bon ben je fais mon baluchon et je vais leur proposer de faire une pré-étude sur une version fonctionnelle du Whitespace.

        http://fr.wikipedia.org/wiki/Whitespace
      • [^] # Re: Les deux autres

        Posté par  . Évalué à 4.

        Merci quand même de ne pas tout mélanger...
        D'un côté, un projet poussé par des militaires avec des budgets en milliards de dollars, faisant appel à des multinationales privées; de l'autre, un chercheur qui décide de créer un langage dans son coin. ( Je caricature, mais bref... )

        Enfin, j'imagine que j'ai marché dans le troll.
        • [^] # Re: Les deux autres

          Posté par  (site web personnel) . Évalué à 1.

          C'était seulement la forme d'un troll.

          Les but sont différents mais les moyens d'y arriver conceptuellement ont l'air d'être proche. Donc les marchés potentiels sont énormes. Mais il y a personne pour mettre de l'argent la dedans.

          "La première sécurité est la liberté"

    • [^] # Re: Les deux autres

      Posté par  (site web personnel) . Évalué à -1.

      On peut même mettre cette annonce en parrallèle avec les problèmes des anti-minatec.... qui ne veulent pas des sous de l'armée.

      "La première sécurité est la liberté"

  • # 'dredi

    Posté par  (site web personnel) . Évalué à 1.

    Fortress est un nouveau langage (...) dans le domaine du calcul à haute performance (...). Techniquement, il s'agit d'un interprète écrit en Java (...).

    Y'aurai pas anguille sous roche ? Si on compare Java classique à OCaml par exemple :
    http://shootout.alioth.debian.org/gp4/benchmark.php?test=all(...)
    • [^] # Re: 'dredi

      Posté par  . Évalué à 4.

      Les (...) cachent habilement un prototype et un la création d'un compilateur industriel complet, vil trolleur ;-) !
  • # Mouais....

    Posté par  . Évalué à 1.

    Vu la qualité discutable du premier et le nanare qu'est Fortress II (normal avec Christophe Lambert), je ne donne pas cher de la peau de celui là....
    .
    .
    .
    .
    .
    .
    .
    "plus là"
  • # Fortran 2003

    Posté par  (site web personnel) . Évalué à 3.

    Dans le milieu du calcul scientifique, Fortran est bien implenté. Je vois des chercheurs partir vers le C ou le C++ mais en général, je leur déconseille. Les chercheurs ne sont pas toujours des as de la programmation, normal, et le fortran, malgré des défauts, est relativement bien adapté à la problématique.

    La question que je me pose est quel est l'apport significatif de Fortress par rapport à Fortran 2003 (f2k). En effet, le fortran depuis le F90 à montrer que lui aussi savait évoluer tout en privilégiant dans le design la performance et le calcul parallèle. Aujourd'hui, avec le fortran 2003, on peut faire de l'objet avec de l'héritage simple. Il est clair que ce n'est pas un langage avec autant de fonctionalité que le java ou le C++ mais il ne faut pas oublier l'objectif premier aujourd'hui qui est de pouvoir paralléliser et vectoriser relativement facilement un code.
    • [^] # Re: Fortran 2003

      Posté par  (site web personnel) . Évalué à 3.

      Je crois que le but de Fortress est de masquer la complexité diabolique de la programmation parallèle en proposant un langage conçu spécialement pour ça.
    • [^] # Re: Fortran 2003

      Posté par  (site web personnel) . Évalué à 1.

      • [^] # Re: Fortran 2003

        Posté par  (site web personnel) . Évalué à 2.

        Je viens de lire cette page. Je ne suis pas un as de la programmation moi non plus mais je ne suis pas du tout d'accord avec ce qui est dis sur cette page. Je n'ai pas le courage ce soir de reprendre point par point les arguments avancés mais la plupart me paraissent complètement erronés.

        J'ai utilisé pas mal de langage et pour faire du calcul tensoriel sur des équations différentielles, le Fortran est bien, pas parfait car à l'époque, je faisais du F95 avec ensuite des extensions du F98 et qu'il manquait clairement des points ajoutés dans le F2k.

        Le seul langage qui m'a donné envie de tout ré-écrire, c'était Sather, mais malheureusement, Sather est mort. Sather était un langage objet inspiré d'Eiffel mais avec un soucis de calcul dans le design. D'ailleurs, il y avait deux versions en parallèle : Sather et pSather (version parallèle).

        Les autres langages soit n'avancent pas (pour cette problèmatique), soit sont bien trop touffus et compliqué. A l'époque, je me suis mis à Fortran à reculons et au bout d'une demi-journée, en ni connaissant rien, j'avais déjà compris et modifier le code pour mes besoins. Mes apprentissages du C, C++, Perl, Ada... ont été bien plus long.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.