Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Liens connexes

Dépêche modérée par

Dépêche éditée par

: Première implémentation du langage Fortress

Posté par mouftard (). Modéré le 11 janvier 2007.
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.

> Lire la dépêche (19 commentaires, moyenne: 3,1).  

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.

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

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

Avis

Posté par gyhelle () le 11/01/2007 à 08:51. (lien). É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 Nicolas Boulay () le 11/01/2007 à 09:05. (lien). É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.

Les deux autres

Posté par patrick_g (page perso, ) le 11/01/2007 à 09:23. (lien). É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(...)

'dredi

Posté par Victor STINNER (page perso, ) le 12/01/2007 à 09:29. (lien). É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(...)

Mouais....

Posté par Laurent GUEDON (page perso, ) le 12/01/2007 à 10:08. (lien). É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 Sytoka Modon (page perso, ) le 13/01/2007 à 07:46. (lien). É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.

Revenir en haut de page