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
- Projet Fortress : sources (12 clics)
- Page recherche concernant Fortress chez Sun (4 clics)
- Spécification au format PDF (6 clics)
- Message annonçant l'ouverture du dépôt (2 clics)
- Fortress sur Wikipedia (7 clics)
# Avis
Posté par gyhelle . Évalué à 7.
# rien à voir ou presque
Posté par Nicolas Boulay (site web personnel) . Évalué à 3.
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 patrick_g (site web personnel) . Évalué à 9.
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 Nicolas Boulay (site web personnel) . Évalué à 10.
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 Anonyme . Évalué à 2.
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 Obsidian . Évalué à 3.
[^] # Re: Les deux autres
Posté par Dr BG . Évalué à 2.
[^] # Re: Les deux autres
Posté par alexissoft . Évalué à 2.
[^] # Re: Les deux autres
Posté par alice . Évalué à 2.
http://fr.wikipedia.org/wiki/Whitespace
[^] # Re: Les deux autres
Posté par MetalX . Évalué à 4.
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 Nicolas Boulay (site web personnel) . Évalué à 1.
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 Nicolas Boulay (site web personnel) . Évalué à -1.
"La première sécurité est la liberté"
# 'dredi
Posté par Victor STINNER (site web personnel) . Évalué à 1.
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 mouftard . Évalué à 4.
# Mouais....
Posté par Laurent GUEDON . Évalué à 1.
.
.
.
.
.
.
.
"plus là"
# Fortran 2003
Posté par Sytoka Modon (site web personnel) . Évalué à 3.
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 patrick_g (site web personnel) . Évalué à 3.
[^] # Re: Fortran 2003
Posté par Troy McClure (site web personnel) . Évalué à 1.
[^] # Re: Fortran 2003
Posté par Sytoka Modon (site web personnel) . Évalué à 2.
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.