• [^] # Re: Même remarque que précédemment

    Posté par . En réponse au journal Présentation des librairies pydiderotlibs dédiées à l'enseignement de python. Évalué à 4.

    Je crois qu'il y a un malentendu : je n'ai pas de problème particulier avec les mixins, ni avec wikipédia (pas au point d'aller corriger ce qui s'y trouve). Mon problème vient de la manière dont sont présentés les principes de la POO tant dans les livres que dans l'enseignement : on y soutient des choses logiquement fausse (que l'on retrouve ensuite sur wikipédia).

    Au lieu de prendre un exemple sur wikipédia, j'aurais pu prendre cette discussion sur linuxfr avec le commentaire final de Tonton Th :

    C'est quoi le sous-entendu sur les devs Ada ?

    C'est que si tu ne fais pas gaffe dès la première minute, tu vas au marché, tu achètes cinq pommes et deux poires, ben quand tu es rentrée chez toi, tu ne sais pas combien de fruits tu as :)

    D'autant qu'Ada gère très bien le sous-typage et les problèmes de covariance-contravariance qui y sont associés (en logique, ces notions se ramènent à la distinction entre une raison suffisante et une raison nécessaire).

    Ce que je reproche à la POO, c'est de prétendre que pour modéliser ce genre de situation, on va avoir une classe fruit qui aura deux sous-classes pomme et poire : sauf que ce n'est pas du tout cela la relation sémantique entre ces concepts. La relation qu'il y a entre eux est une relation de sous-typage et non de sous-classe. C'est cette relation d'héritage entre classe à laquelle faisait allusion mon extrait de wikipédia : les pommes sont une sorte de fruits. Or quand on dit que les pommes sont une sorte de fruits, on affirme que le type pomme est un sous-type (et non une sous-classe) du type fruit. De la même manière que les femmes sont une sorte d'être humains, ou que les femmes entre 18 et 28 ans sont une sorte de femmes. Et c'est là que l'on revient sur l'intérêt d'étudier les patatoïdes, ou les principes de bases de la logique formelle. ;-)

    En gros, la POO mélange allègrement la notion de concepts et de théories sur un concept donné : elle met tout cela dans un gros sac fourre-tout qu'elle appelle classe. Ainsi, comme exemple d'aberration, si l'on ajoute un résultat à une théorie (mais sans changer le moins du monde le concept dont elle parle), c'est-à-dire si l'on rajoute une méthode à une classe donnée, on obtient une autres famille d'objets (une autre classe). Ce qui revient tout bonnement à dire que Archimède ne parlait pas des même cercles qu'Euclide, sous ce très pernicieux prétexte qu'il avait consigné d'autres résultats sur eux que lui. Tout personne normalement constituée trouverait cela inepte, et c'est pourtant ce que l'on dit en permanence quand on fait de la POO.

    En POO, notamment avec Python, je peu surcharger les operateurs et dénaturer complétement les fondements de l'arithmétique en ré définissant l'addition la soustraction et tout les opérateurs si je le souhaite.

    Existe t il un principe mathématique derrière cela ?

    Je ne suis pas sûr de comprendre la question, mais je dirais que cela s'appelle l'art de refuser de se soumettre à de fortes contraintes (principalement en Python) afin de pouvoir écrire à peu près tout et n'importe quoi, mais surtout n'importe quoi. :-P

    Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.