• [^] # Re: Le cerveau n'est pas logique

    Posté par . En réponse au journal Pourquoi la recherche en langages de programmation ?. Évalué à 2. Dernière modification le 23 octobre 2017 à 20:15.

    C'est pas vraiment le void * de C. En soi, utiliser interface{} est type-safe : ce qui n'est pas type-safe (au sens crash à la Python, pas au sens tu as carte blanche pour faire n'importe quoi comme en C), c'est l'assertion de type qui accompagne souvent les utilisations de interface{} côté utilisateur lors de l'utilisation d'un conteneur générique.

    Notons que, dans ces cas là, au prix d'un peu de verbosité, il est facile d'isoler ces assertions en faisant un wrapper des fonctions de la librairie qui n'utilise pas interface{}, ce qui en pratique mitige quand même pas mal les risques d'erreur.

    D'autant plus qu'à la base, ça représente déjà quand même pas grand chose comme proportion du code : je viens de faire un grep sur un de mes projets et les assertions de type ou switch sur des types représentent 0.1% du code (une ligne sur mille), c'est peut-être pas représentatif d'autres projets, mais peut-être même en pire, parce que j'ai pas fait particulièrement d'efforts pour réduire leur nombre : je me rends compte qu'en utilisant la méthode du wrapper je pourrais diviser leur nombre par à peu près deux.

    Bref, le méchant interface{} est à relativiser grandement : je pense qu'un projet quelconque Haskell ou OCaml a bien plus de 0.1% de code utilisant des exceptions (ou autre code sensible) à vérifier avec tout autant d'attention.