- Parce que Ruby a intégré les itérateur et les blocs de code depuis la première version ?
Je ne vois pas le rapport entre "implémenté avant" et "mieux implémenté".
Parce qu'en Ruby tout les types (y compris les nombres) sont des de vrais objets
En Python aussi. Oui, y compris les nombres, les classes, les modules, les fonctions...
Parce qu'en Python tout ceci n'a été ajouté que tardivement, et que ça se ressent dans la syntaxe
Ca ne se "ressent" que parce que tu as une vision religieuse des choses liée à ton expérience avec Ruby. En fait c'est très naturel : une fonction est la même chose qu'une méthode (on peut d'ailleurs binder l'une sur l'autre), c'est donc normal que le self soit explicite. De même le cls est explicite sur les méthodes de classe.
Et c'est avant tout justifié par un principe directeur de Python : explicit is better than implicit. En Python il y a peu de magie, la logique est apparente partout, contrairement à Perl et dans une moindre mesure Ruby.
Dire que c'est à cause d'une limitation quelconque du langage qu'il n'y a pas de self implicite est une grossière erreur : il n'aurait pas été compliqué de modifier l'instantiation des méthodes pour rajouter la logique correspondante. Il y a même des gens qui se sont amusés à implémenter cela en pur Python, sans toucher à l'interpréteur ( http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/3623(...) ).
... Ceci dit, la question d'origine est "en quoi les itérateurs de Ruby sont-ils mieux implémentés", et tu n'as pas répondu. :-)
[^] # Re: Célèbre ?
Posté par Antoine . En réponse à la dépêche Sortie de Ruby on Rails 2.0. Évalué à 2.
Je ne vois pas le rapport entre "implémenté avant" et "mieux implémenté".
Parce qu'en Ruby tout les types (y compris les nombres) sont des de vrais objets
En Python aussi. Oui, y compris les nombres, les classes, les modules, les fonctions...
Parce qu'en Python tout ceci n'a été ajouté que tardivement, et que ça se ressent dans la syntaxe
Ca ne se "ressent" que parce que tu as une vision religieuse des choses liée à ton expérience avec Ruby. En fait c'est très naturel : une fonction est la même chose qu'une méthode (on peut d'ailleurs binder l'une sur l'autre), c'est donc normal que le self soit explicite. De même le cls est explicite sur les méthodes de classe.
Et c'est avant tout justifié par un principe directeur de Python : explicit is better than implicit. En Python il y a peu de magie, la logique est apparente partout, contrairement à Perl et dans une moindre mesure Ruby.
Dire que c'est à cause d'une limitation quelconque du langage qu'il n'y a pas de self implicite est une grossière erreur : il n'aurait pas été compliqué de modifier l'instantiation des méthodes pour rajouter la logique correspondante. Il y a même des gens qui se sont amusés à implémenter cela en pur Python, sans toucher à l'interpréteur ( http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/3623(...) ).
... Ceci dit, la question d'origine est "en quoi les itérateurs de Ruby sont-ils mieux implémentés", et tu n'as pas répondu. :-)