Je suis actuellement à la recherche de différentes façons de mettre en œuvre la répartition dynamique.Dynamic Dispatch Implémentations
Pour autant que je sache, il y a deux « faciles » façons de mettre en œuvre cette:
- Tables de fonctions virtuelles, comme en C++
- message Dispatcher, comme dans Smalltalk (ce qui est quelque peu semblable à Python idée de stocker des méthodes comme attributs dans
__dict__
)
Je note que, pour autant que je sache VFT ont été choisis parce qu'ils effectuaient raisonnablement et faciles à mettre en œuvre (et aussi parce qu'ils étaient bien adaptés à la compilation séparée C de modèle), pas parce qu'ils étaient les plus rapides méthodes possibles. J'ai déjà lu quelques articles et publications, mais la plupart sont "vieux" (le dernier que j'ai lu (*) mentionné en utilisant un Pentium 200MHz ... hum), donc je doute qu'ils représentent l'état de l'art à moins que la recherche ne vienne à l'étalage.
Je suis intéressé par:
- stratégies dynamiques Dispatch, mieux si elles prennent en charge multi-méthodes.
- Repères des différentes stratégies
Je suis particulièrement intéressé par les articles récents et hors du commun des stratégies (même si elles ne sont pas révélés efficaces).
Les publications sont les bienvenues, il serait préférable qu'elles soient disponibles gratuitement, sinon un résumé de la technique présentée et le résultat serait génial.
Les articles techniques des implémentations réelles du compilateur sont également les bienvenus.
(*) This article about Eiffel illustre comment l'analyse de programme entier peut aider à supprimer les sites d'appels virtuels.
Belle implémentation de Multiple Dispatch. Il est très similaire aux tables virtuelles et contourne l'explosion combinatoire qu'un tel support nécessite généralement. Merci :) –