Re: Typage (était : Re: ruby et genie logiciel)
[ Nouvelle discussion
| Répondre au groupe
|
fr.comp.lang.ruby ]
mdiam a écrit :
> On 22 jan, 12:06, "Etienne Vallette d'Osia" <doh...@gmail.com> wrote:
>> Je ne vois dans le duck typing qu'une manière de présenter le typage
>> dynamique... Je me trompe peut-être, mais alors j'aimerais bien
>> connaître la différence.
>
> Sans etre specialiste, je pensais que le typage dynamique était lié à
> la
> virtualité, pour lequel le type précis (mais limité à une classe
> fille)
Si tu a une limite de cet ordre, ce n'est pas du typage dynamique.
> est défini à l'exécution (e.g. une liste le "formes" auquelles on veut
> envoyer
> un message "surface".
Ca, c'est du 'late binding' (liaison tardive) dans un langage à typage
statique.
> Si le typage est statique (e.g c++ pour une méthode non virtuelle)
> alors
> ce serait la methode de la classe forme (probablement inexistante)
> qui
> serait appelé.
Et là c'est une liaison précoce.
> C'est pas ça ?
Bin non. C++ est un langage à typage statique, et il propose les deux
possibilité (liaison précoce et liaison tardive) via le modificateur
'virtual'. Dans d'autres langages à typage statique (comme Java par
exemple, et si ma mémoire est bonne), la liaison est tardive par défaut.
Ca ne change rien au fait que les types sont vérifiés à la compilation
(ce qui est la définition même du typage statique).
> Ensuite le typage canard ne nécessite même pas qu'un objet est une
> rriere grand-mere qui sache faire coin-coin (i.e calculer une
> surface) :
> il suffit qu'il sache le faire *au moment* de l'appel !?
Ce qui est la définition du typage dynamique: ou bien l'objet sait
répondre au message, ou bien il ne sait pas. Aucune vérification de cet
ordre n'est effectuée à la compilation (quand il y en a une).
> Meme sujet :
>
> On 22 jan, 12:45, Bruno Desthuilliers <bruno.
> 42.desthuilli...@wtf.websiteburo.oops.com> wrote:
>>> ...sur la page "http://fr.wikipedia.org/wiki/Programmation_orientée_objet"
>>> Et concernant le typage ils distinguent :
>>>> On distingue dans les langages objets trois mécanismes du typage :
>>>> - le typage dynamique : ... (Smalltalk, CLOS, Piquet, PHP...),
>>>> - le typage statique : ... (C++, Java, C#, Pascal...),
>>>> - le typage par inférence : ...(C#, OCaml).
>>> Sans mention de Ruby nul part ni du typage canard.
>> "typage canard" est un alias pour typage dynamique.
>>
>> Accessoirement, les deux items suivants devraient être:
>> - le typage statique déclaratif
>> - le typage statique par inférence
>
> Ah,
> Et donc le typages canard ne pourrait-il pas etre une variante du
> typage
> dynamique ?
Où est la différence ?
> ou bien c'est rigoureusement la meme chose ?
Voilà.
Pour ce que ça vaut, la notion de "type" est en fait assez différente
selon l'approche. Du point de vue "statique", les langages à typage
dynamique n'ont en fait qu'un seul et unique type générique.

|
 cette fonctionnalité est reservée aux membres ayant une session active !
|