• [^] # Re: go 2.0

    Posté par . En réponse au journal Pourquoi la recherche en langages de programmation ?. Évalué à 4.

    on a obtenu un truc "comme C mais avec un modèle de concurrence raisonnable et avec GC parce que c'est plus pratique". C'est juste aussi de dire qu'ils n'ont visiblement pas vraiment pris le temps de regarder ce qui s'était fait dans les autres langages pour en reprendre les bonnes idées, et que ça se voit dans le langage.

    À mon avis (ou alors c'est une coïncidence) ils ont aussi regardé du côté des langages dynamiques et ont copié le côté intégrer de façon ad hoc dans le langage les tableaux dynamiques et les tables de hachages, ce qui je pense rend le langage beaucoup plus accessible aux gens venant de ces langages.

    Dans le même genre d'idées, ils ont mis des choses dans le langage comme la réflection qui, bien qu'imparfaits, sont en même temps une solution simple (d'un point de vue théorique) à des choses comme la sérialisation qui me semblent être des points délicats et demandant un traitement particulier dans les langages avec système de types plus évolués que j'ai utilisés (Haskell et OCaml), même s'il y a du progrès.

    Les interfaces Go (qui sont le point central à la réflection en Go) sont un mécanisme simple qui permet de faire beaucoup, même si pas autant que d'autres systèmes. En pratique, l'avantage c'est que les gens les utilisent (contrairement au type class Haskell, qui sont pas pour les débutants, ou les modules et foncteurs en OCaml, ou certains systèmes objets plus compliqués). Et on retrouve ça partout dans la librairie standard: il suffit d'implémenter String() pour un type et on peut utiliser toutes les fonctions de formattage sytle printf après, et c'est seulement un exemple (la gestion de différent types de buffers et entrées sorties utilisant une même interface commune est aussi très agréable).

    Leur sémantique de package, ainsi que la possibilité de répartir dans plusieurs fichiers les éléments d'un même module, est aussi plutôt bien trouvée, même si c'est un point à la limite du langage.

    Bref, Go doit au minimum un certain nombre de traits aux langages dynamiques actuels (par accident ou non), ce qui le rend très différent de C. J'ai un peu l'impression de passer ce journal à défendre ce langage, mais il me semble qu'il y a des jugements un peu trop rapides à son sujet :)