Pseudo-Archive Java :
Accueil -|- Visuel -|- Logistique -|- Applications réparties
La pseudo-archive Java est un service proposé par la SARL diaam informatique, et il est hébergé par la Sogid.
diaam informatique
Date sent:      	Tue, 8 May 2001 17:10:11 +0200
From:           	..
To:             	java@u-strasbg.fr
Subject:        	Sélection multi-méthodes
Send reply to:  	java@u-strasbg.fr

Bonjour, 

Dans le cadre de mon cursus, je dois réaliser un texte de synthèse
concernant la notion de multi-méthode (notamment en java). Celle ci
s'inscrit dans le cadre du polymorphisme d'inclusion et des problèmes de
sélection du bon code.

Merci pour l'aide que vous pourrez bien m'apporter (url, etc, )
concernant ce sujet.



     

Date sent:      	Tue, 8 May 2001 11:28:10 -0700 (PDT)
From:           	Thierry Janaudy <janaudy@yahoo.com>
Send reply to:  	janaudy@jyperion.com
Subject:        	Re: Sélection multi-méthodes
To:             	java@u-strasbg.fr

J'ai strictement rien capte a ton mail, :-)
mais je pense que tu trouveras tes reponses
dans la spec du langage Java:

http://java.sun.com/docs/books/jls/

--Thierry


--- .. wrote:
> Bonjour, 
> 
> Dans le cadre de mon cursus, je dois réaliser un
> texte de synthèse
> concernant la notion de multi-méthode (notamment en
> java). Celle ci s'inscrit dans le
> cadre du polymorphisme d'inclusion et des problèmes
> de sélection du
> bon code.
> 
> Merci pour l'aide que vous pourrez bien m'apporter
> (url, etc, )
> concernant ce sujet.
> 
> 
> 


=====
________________________________________
Thierry Janaudy (Independent consultant)
+44 77 52 14 3001
[cv]            http://www.janaudy.com/
[company]       http://www.jyperion.com/
[search engine] http://pharos.inria.fr/Java/

__________________________________________________
Do You Yahoo!?
Yahoo! Auctions - buy the things you want at great prices
http://auctions.yahoo.com/

     

From:           	"Cedric Beust" <cedric@beust.com>
To:             	<janaudy@jyperion.com>, <java@u-strasbg.fr>
Copies to:      	..
Subject:        	RE: Selection multi-methodes
Date sent:      	Tue, 8 May 2001 14:01:24 -0700
Send reply to:  	java@u-strasbg.fr

> From: Thierry Janaudy [mailto:janaudy@yahoo.com]

> J'ai strictement rien capte a ton mail, :-)
> mais je pense que tu trouveras tes reponses
> dans la spec du langage Java:
>
> http://java.sun.com/docs/books/jls/

Multi-methodes (ou multi-dispatch):  selection dynamique de la methode a
appeler basee non seulement sur le type de l'objet (this, classique, c'est
le polymorphisme auquel on est habitues) mais aussi des types reels des
parametres.

N'a ete implemente que dans des langages experimentaux (e.g. CLOS) parce
que c'est un cauchemar a debugger, et pas tres utile en pratique :-)

Cela dit, c'est implementable par des patterns en C++ et en Java.

--
Cedric

     

From:           	Olivier Dedieu <Olivier.Dedieu@inria.fr>
Date sent:      	Wed, 9 May 2001 09:06:06 +0200 (MET DST)
To:             	java@u-strasbg.fr
Subject:        	Re: Sélection multi-méthodes
Send reply to:  	Olivier.Dedieu@inria.fr


>  Bonjour, 
>  
>  Dans le cadre de mon cursus, je dois réaliser un texte de synthèse
>  concernant la notion de multi-méthode (notamment en java). Celle ci
>  s'inscrit dans le cadre du polymorphisme d'inclusion et des problèmes
>  de sélection du bon code.
>  
>  Merci pour l'aide que vous pourrez bien m'apporter (url, etc, )
>  concernant ce sujet.

Je connais au moins 2 implem de multimethod en Java: 

celle de Remi Forax (qui intervient souvent sur la mailing-list). Je
crois meme que c'est le sujet de sa thèse.

Et il y a aussi Kiev qui est une extension à Java et qui apporte un
nombre impressionnant d'apport fonctionnel (cela dit je ne l'ai jamais
utilisé).

Voila les pointeurs:
http://pharos.inria.fr/Java/query.jsp?kind=fulltext&mode=all&text=multimethod


a+

---------------------------------------------------------------
 Olivier Dedieu - (INRIA - Bull / WebTools - Pharos)
 Web: http://www-sor.inria.fr/~dedieu  
 JavaChannel: http://www.java-channel.org/
 Pharos team: http://webtools.dyade.fr/pharos/
---------------------------------------------------------------





Date sent:      	Wed, 09 May 2001 17:00:33 +0200
From:           	Remi Forax <forax@univ-mlv.fr>
To:             	javalist <java@u-strasbg.fr>
Subject:        	Re: Sélection multi-méthodes
Send reply to:  	java@u-strasbg.fr

Olivier Dedieu wrote:
> 
> >  Bonjour,
> >
> >  Dans le cadre de mon cursus, je dois réaliser un texte de synthèse
> >  concernant la notion de multi-méthode (notamment en java). Celle ci
> >  s'inscrit dans le cadre du polymorphisme d'inclusion et des problèmes
> >  de sélection du bon code.
> >
> >  Merci pour l'aide que vous pourrez bien m'apporter (url, etc, )
> >  concernant ce sujet.
> 
> Je connais au moins 2 implem de multimethod en Java:
> 
> celle de Remi Forax (qui intervient souvent sur la mailing-list). Je
> crois meme que c'est le sujet de sa thèse.
> 
> Et il y a aussi Kiev qui est une extension à Java et qui apporte un
> nombre impressionnant d'apport fonctionnel (cela dit je ne l'ai jamais
> utilisé).
> 
> Voila les pointeurs:
> http://pharos.inria.fr/Java/query.jsp?kind=fulltext&mode=all&text=multim
> ethod
> 
> a+

Salut Julien, 
je suis en ce moment en cours de redaction d'une these sur les
multi-methode en Java.

Pour les multi-methodes, il faut séparer plusieurs choses :

  1) la semantique, qu'elle est la relation de sous-typage entre les
     méthode proposée que se passe t'il si plusieurs methodes sont
     appelable, qu'elle est la methode la plus specifique. 

  2) les techniques d'implementation, il y en a cinq ou six,
     MSA (ce que fait le compilo Java de façon statique),
     CNT (compacted N-dimensionnal Table) table de dispatch a
N-dimension
     que l'on compresse,
     MRD (Multiple Row Displacement) meme table que l'on compresse
     differemment, LUA (Lookup Automata) ici, on effectue un dispatch
     successif sur chaque parametre en suivant un DAG, MAD (elle est de
     moi celle-la), on utilise une version en arbre du DAG precedent que
     l'on compresse avec une technique ressemblant a MRD, TABA (elle est
     encore de moi :), ici en associe à chaque type pouvant etre parametre
     d'une multi-methode en ensemble de bit correspondant aux methodes
     applicables, on fait des ET bits à bit pour trouver les méthodes
     applicables puis la méthode la plus specifique et enfin la technique
     SRP qui fonctionne a peu pres pareil mais qui maintient un ordre
     local entre les méthodes à l'intérieur de l'ensemble representé par
     des bits, il faut alors rajouter des méthodes pour resoudre les
     ambiguités.


En fait, les langages les plus connus supportant
intrasequement les multi-methodes sont :

  CLOS (la semantique est bizard), Dylan et Cecil.

En Java, comme les classes sont chargées dynamiquement,
toute les techniques deja existante 
avant 1997, MSA,CNT,MRD,LUA) ne marche pas car tous
les types doivent etre connu.

Sinon, depuis,  John Boyland d'ecrit un mecanisme similaire,
les "parasitic methods" (OOPSLA 97), qui est un sous-cas des
multi-methodes, l'implementation est une serie de instanceof.

MultiJava (OOPSLA 2000) propose une autre semantique
mais l'implementation est la meme.

"Multi-dispatch in Java Virtual Machine" (COOTS 2001),
utilise SRP en bidouillant la JVM.

"Java MultiMethod Framework" (TOOLS 2000) qui est un
package ecrit en Java qui ressemble au package
reflection du JDK.
(http://www-igm.univ-mlv.fr/~forax/works/jmmf/index.html)

Sinon, le Visitor Pattern (cf Design Pattern) est une facon
d'effectuer un multi-dispatch par une serie d'uni-dispatch.

sinon, je peux t'envoyer le debut de ma these, mais des fois
c'est assez illisible :)

Remi

     

Date sent:      	Thu, 10 May 2001 11:06:31 +0200
From:           	Remi Forax <forax@univ-mlv.fr>
To:             	java@u-strasbg.fr
Subject:        	Re: Selection multi-methodes
Send reply to:  	java@u-strasbg.fr

Olivier Dedieu wrote:
> 
> >  Bonjour,
> >
> >  Dans le cadre de mon cursus, je dois réaliser un texte de synthèse
> >  concernant la notion de multi-méthode (notamment en java). Celle ci
> >  s'inscrit dans le cadre du polymorphisme d'inclusion et des problèmes
> >  de sélection du bon code.
> >
> >  Merci pour l'aide que vous pourrez bien m'apporter (url, etc, )
> >  concernant ce sujet.
> 
> Je connais au moins 2 implem de multimethod en Java:
> 
> celle de Remi Forax (qui intervient souvent sur la mailing-list). Je
> crois meme que c'est le sujet de sa thèse.
> 
> Et il y a aussi Kiev qui est une extension à Java et qui apporte un
> nombre impressionnant d'apport fonctionnel (cela dit je ne l'ai jamais
> utilisé).
> 
> Voila les pointeurs:
> http://pharos.inria.fr/Java/query.jsp?kind=fulltext&mode=all&text=multim
> ethod
> 
> a+

Salut Julien, 
je suis en ce moment en cours de redaction d'une these sur les
multi-methode en Java.

Pour les multi-methodes, il faut séparer plusieurs choses :

  1) la semantique, qu'elle est la relation de sous-typage entre les
     méthode proposée que se passe t'il si plusieurs methodes sont
     appelable, qu'elle est la methode la plus specifique. 

  2) les techniques d'implementation, il y en a cinq ou six,
     MSA (ce que fait le compilo Java de façon statique),
     CNT (compacted N-dimensionnal Table) table de dispatch a
N-dimension
     que l'on compresse,
     MRD (Multiple Row Displacement) meme table que l'on compresse
     differemment, LUA (Lookup Automata) ici, on effectue un dispatch
     successif sur chaque parametre en suivant un DAG, MAD (elle est de
     moi celle-la), on utilise une version en arbre du DAG precedent que
     l'on compresse avec une technique ressemblant a MRD, TABA (elle est
     encore de moi :), ici en associe à chaque type pouvant etre parametre
     d'une multi-methode en ensemble de bit correspondant aux methodes
     applicables, on fait des ET bits à bit pour trouver les méthodes
     applicables puis la méthode la plus specifique et enfin la technique
     SRP qui fonctionne a peu pres pareil mais qui maintient un ordre
     local entre les méthodes à l'intérieur de l'ensemble representé par
     des bits, il faut alors rajouter des méthodes pour resoudre les
     ambiguités.


En fait, les langages les plus connus supportant
intrasequement les multi-methodes sont :

  CLOS (la semantique est bizard), Dylan et Cecil.

En Java, comme les classes sont chargées dynamiquement,
toute les techniques deja existante 
avant 1997, MSA,CNT,MRD,LUA) ne marche pas car tous
les types doivent etre connu.

Sinon, depuis,  John Boyland d'ecrit un mecanisme similaire,
les "parasitic methods" (OOPSLA 97), qui est un sous-cas des
multi-methodes, l'implementation est une serie de instanceof.

MultiJava (OOPSLA 2000) propose une autre semantique
mais l'implementation est la meme.

"Multi-dispatch in Java Virtual Machine" (COOTS 2001),
utilise SRP en bidouillant la JVM.

"Java MultiMethod Framework" (TOOLS 2000) qui est un
package ecrit en Java qui ressemble au package
reflection du JDK.
(http://www-igm.univ-mlv.fr/~forax/works/jmmf/index.html)

Sinon, le Visitor Pattern (cf Design Pattern) est une facon
d'effectuer un multi-dispatch par une serie d'uni-dispatch.

sinon, je peux t'envoyer le debut de ma these, mais des fois
c'est assez illisible :)

Remi


C'est fini ! Retour à l'accueil de la pseudo-archive