• # Ça rejoint les typeclass de haskell, template du C++, Go

    Posté par . En réponse au journal Le problème de la POO pratiquée par des étudiants. Évalué à 10.

    En C++ on aime bien utiliser des templates pour faire du polymorphisme là où en java on ferait de l'héritage (ou du moins un implements interface). C'est en quelque sort du ducktyping à la compilation. « tiens, il essaye d'utiliser la méthode moo(), on va voir si ça existe pour le type. Si ça existe pas, je plante et râle très copieusement à la compilation ». Ainsi, tout objet qui a une opération < pourra être utilisé dans un map.

    Les typeclass de haskell définissent des signatures que doivent avoir les "objets". Et tout "objet" qui a la signature implémente la typeclass, sans se prendre la tête sur les classes abstraites, interface que java aime tant. « Si l'objet a la fonction print alors il printable »

    Enfin Go s'est fait remarqué parcequ'il ne gère carrément pas l'héritage et fait du polymorphisme un peu à la Haskell. La structure de données, et le traitement sont deux choses strictement orthogonales, là où la POO classique veut les réunir.

    Personnellement, j'aime bien cette tendance et je m'en réjouis.