• [^] # Re: Analysons les arguments

    Posté par . En réponse au journal Python et les décideurs. Évalué à 10.

    Le problème se situe Lorsque tu attends des types particuliers en entrée.

    Avec une programmation défensive tu te retrouves à faire du contrôle de type dans tes méthodes alors que c'est typiquement le rôle d'un compilo de traiter ça.
    Si tu écris du code réutilisable il n'est pas facile d'anticiper toutes les circonstances d'utilisation de ta lib après coup.
    Prenons l'exemple d'un code qui définit une Pile d'objet mais qui fait des présupposés sur le contrat des objets traités dans la pile.
    Avec Java tu va utiliser un generics et des interfaces en guise de type.(Avant les generics c'était plus galère)
    Avec Python tu devras armer ton code pour en tenir compte.
    A contrario l'utilisation de type complètement générique est facilitée avec Python. Si tu te moques des types d'objet que contient ta pile tu en as pour 3 lignes.
    Avec Java, tu va t'appuyer sur la classe Object et être obligé d'être plus verbeux.

    Le duck typing c'est bien mais ce que tu gagnes en temps de prototypage tu le reperds ensuite en blindage du code et en maintenance ou en intégration avec des erreurs qui ne seraient jamais intervenues avec un langage compilé pendant les phases d'assemblage.