• [^] # Re: Testez-le, ensuite vous pourrez critiquer

    Posté par . En réponse à la dépêche Quelques nouvelles rapides du langage Go. Évalué à 2.

    Pour information, le fait que toutes les classes qui ont les bonnes méthodes respectent automatiquement l'interface est ce qu'on appelle précisément le "structural subtyping", par rapport au "nominal subtyping" utilisé dans la plupart des langages OO mainstream. "structural" puisque c'est la structure des objets (l'ensemble des méthodes exposées et de leur type) qui décide la relation de sous-typage, et pas des déclarations explicites et "nominales" au niveau de la déclaration de la classe.

    Ce n'est pas exactement nouveau, les différences entre ces deux techniques (qui ont chacun avantages et inconvénients, la structurelle étant généralement considérée comme meilleure mais un peu plus complexe) ont été débattues à mort. Pour donner un exemple, la couche objet de OCaml, apparue au tout tout début des années 2000, utilise le sous-typage structurel.

    (Le lien avec les templates C++ est plus que ténu : les templates n'ont pas de rapport avec le sous-typage, et le comportement extrêmement ad-hoc qui permet de le faire croire ici est une conséquence (parmi d'autres) de leur stratégie de compilation par ailleurs extrêmement pénible pour un usage normal.)