Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Pierrick's Blog

.Net "full power"

“Axum” un langage pour le faciliter l’écriture d’applications parallèles

un nouveau projet à vu le jour sur dev labs, il s’agit d’un langage Axum

Curieux.., j’ai installer le msi, qui me donne dans visual studio 2008, un type de projet supplémentaire :

image

 

curieux de connaitre ce qui avait derrière… j’ai suivi le webcast présent sur devlabs, et réalisé ma librairie mathématiques….

using System;
using System.Collections.Generic;
using System.Text;

namespace AxumMath
{
       
public channel IntOperator
    {
       
input int X;
       
input int Y;
       
output int Z;
    }
    
       
public agent AdderAgent : channel IntOperator
    {
       
public AdderAgent()
        {
           
while(true)
            {                
                Z
<-- (receive(X) + receive(Y));
            }
        }
    }
}

qui fait une addition….

mes premiers sentiments au sujet de ce langage sont :

  • effectivement on commence par décrire le message que l’on souhaite traiter, ensuite l’agent qui traite le message. mais je trouve cette description encore un peu trop verbeuse...

je pense qu’il est possible d’être un peu plus succinct.

public message IntOperator
{
   
input int X;
   
input int Y;
   
output int Z;
}

public agent AdderAgent
{
       
receive<IntOperator
        {
                Z
<-- X + Y;
        }
}

évidemment on peut imaginer une multitude d’écriture…

  • ce sucre syntaxique génère beaucoup de code(voir plus bas), mais en revanche cela simplifie l’écriture des applications
  • ce langage s’approche du domaine fonctionnel mais sans l’être.
  • le type du message est très “parlant”, on sait immédiatement ce qui est en entrée(input) et en sortie(ouput).

Revenons à notre agent et channel d’origine, et voyons ce que devient le code une fois compilé :

image

en réalité le mot clé channel, génère une classe avec les données qui dérive d’un classe “Channel”, mais pas seulement...

image

les données X,Y, Z, ne sont pas membres de la classe sous forme d’entier, mais sous forme d’objet complexe. Et oui fournir un langage pour concevoir des applications parallèles n’est pas simple…, surtout si le langage doit être accessible aux plus grands nombre,tout en rendant abstrait la distribution/parallélisme de “calculs utilisateur”.

en creusant un peu plus, cette implémentation de Axum utilise WCF pour faire transiter les données “input” :

image

il est clair que pour faire une addition, c’est peu être un peu trop…

La programmation parallèle est de plus en plus présente, tout les acteurs proposent des frameworks, langages, outils pour développer plus facilement des applications parallèles.

  • Outils
    • intel parallel studio
    • visual sutdio 2010
  • Framework
    • Parallel Fx (.Net)
    • PLINQ (.Net)
    • JPPF (java)
  • Langages
    • Arche (successeur de Polygoth)
    • Erlang
    • Axum

cette liste n’est pas exhaustive, mais la tendance est là !

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: mercredi 20 mai 2009 17:47 par pierrick

Commentaires

FREMYCOMPANY a dit :

Je préfère effectivement ta proposition de syntaxe à la leur, même si le concept reste le même.

Juste encore une autre proposition, pour alimenter le débat :

public agent TestAgent

{

       [out

<int> S, out<int> P] process(in<int> X, in<int> Y)

       {

               out S = (X*X) + (Y*Y);

               out P = (2*X) * (2*Y);

       }

}

out<int> A; out<int> B;

[A, B] = TestAgent(2, 3);

Ce "langage" est jeune, il peut encore évoluer.

# mai 21, 2009 12:53
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Nouveau système d'aide pour Visual Studio 2010 : pour ceux qui n'apprécient pas trop l'absence d'index... par CoqBlog le il y a 15 heures et 17 minutes

- L'interface naturelle de Windows Phone 7 Series par Perspective le il y a 16 heures et 34 minutes

- Comment mapper une vue SQL sur une collection de complex type? par Matthieu MEZIL le 03-19-2010, 21:05

- SQL Server : Query Notification ou comment être notifié de modifications de données côté application (SqlDependency) par SQL Server vu par Christian Robert le 03-19-2010, 15:06

- [WF4] Un Binding Activity/ActivityDesigner qui passe mal? par Blog de Jérémy Jeanson le 03-19-2010, 13:42

- MyTIC – SharePoint 2010 : déjà un mythe Microsoft ? par Le Blog (Vert) d'Arnaud JUND le 03-19-2010, 08:54

- TechDays 2010 Genève : Retrouvez-moi pour une session sur la Haute disponibilité et le ScaleOut avec SQL Server par SQL Server vu par Christian Robert le 03-18-2010, 15:45

- [MIX10] Keynote deuxième journée – Internet Explorer 9, Html5, Visual Studio 2010, OData par Atteint de JavaScriptite Aiguë [Cyril Durand] le 03-17-2010, 19:40

- Certifications beta .NET 4 par Kévin Gosse le 03-17-2010, 19:33

- [Mix 2010] – Microsoft Translator Technology Preview V2 par RedoBlog - The .NET Gentleman !!! le 03-17-2010, 18:53