J'ai vu des comparaisons entre par exemple, Python ne semble pas avoir des métaclasses. Smalltalk n'a pas de concept de générateurs. Et bien que les deux soient dites dynamiquement, je pense que Python ne fait pas d'expédition de méthode dynamique. Est-ce correct? Em> p>
5 Réponses :
Selon page Wikipedia sur la méthode dynamique Dispatch: P>
Mise en œuvre SmallTalk forte> p> SmallTalk utilise un message basé sur le type Dispatchers. Chaque instance a un seul Type dont la définition contient le méthodes. Quand une instance reçoit un message, le répartiteur regarde la méthode correspondante dans le Carte de messages à la méthode pour le type et puis invoque la méthode. [...] p>
Beaucoup d'autres dactylographiés dynamiquement langues, y compris
python strong>, rubis, Objective-C et groovy approches. P> blockQuote> L'emphase a ajouté et un paragraphe snipé. Donc, au moins cette partie semble être similaire entre les deux langues. P>
Python a certainement des métaclasses. P>
SmallTalk a des caractéristiques inhabituelles: p>
Par exemple, Python ne semble pas avoir des métaclasses. p>
Il suffit de générer une nouvelle métaclasse pour chaque classe: elle utilise la même métaclasse que la classe parente, ou
type code> par défaut. La philosophie de design de Python, alias "le zen de python", peut être traitée en faisant
importer ce code> à une invite d'interprète interactive; Le point applicable ici est le second ", explicite est meilleur que implicite." p>
dans Python 2.x, vous spécifiez une métaclasse personnalisée avec la syntaxe suivante: p>
xxx Pré> dans Python 3.x, plus élégamment, vous utilisez la syntaxe de l'argument nommée: p>
xxx pré> smalltalk n'a pas Concept de générateurs. P> blockQuote>
Les générateurs de Python sont des fonctions de première classe (typiquement autonomes) et SmallTalk n'a pas le concept de fonctions "autonomes" - il a des méthodes à l'intérieur de classes. Mais cela a certainement des itérateurs - comme des classes, bien sûr: p>
xxx pré> puisque SmallTalk dispose de "blocs de code" de première classe (Ruby les a pris de cela), vous accomplissez l'itération , comme d'autres "structures de contrôle", en envoyant un bloc de code à une méthode appropriée, et si vous le souhaitez, vous pouvez le faire directement avec la collection (penser
Sélectionnez: CODE>): P>
themethod = myobject.bah for i in range(10): themethod()
SmallTalk n'a pas de concept de générateurs. p> blockQuote>
True, mais ils peuvent être mis en œuvre dans la plupart des dialectes de SmallTalk dans la langue. GNU SmallTalk est livré avec des générateurs dans le cadre de son Bibliothèque de flux . P>
"J'aimerais particulièrement savoir quelles sont les différences fondamentales de la mise en œuvre, de la syntaxe, de l'extensibilité et de la philosophie." Eh bien, c'est à peu près tout. Donc, le seul moyen de répondre à cette question est de vous enseigner à la fois des langues. :-)