• [^] # Re: go 2.0

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

    Sur ce point, tu as très probablement raison, encore que je ne suis pas sûr que ça s'harmonise parfaitement avec le reste du langage, au sens, ça demande d'introduire une nouvelle notion, pas de changer une notion existante (les constantes en go étant déjà utilisées comme enum, le cas particulier d'utilisation le plus courant).

    Oui, mais pour utiliser les termes de mon billet ci-dessus, c'est de la complexité essentielle et pas incidente (traduction maison de accidental complexity dont je suis en toute modestie assez fier). Quand on manipule des données, le cas somme (ou manipule une donnée qui est soit de la forme A soit de la forme B) arrive vraiment dans tous les domaines métiers, c'est un concept indépendant du langage de programmation, et il y a deux camps, les langages qui permettent de le représenter et les autres. Go est chez les attardés. C'est compréhensible pour C qui a été écrit par des chercheurs en systèmes à une époque où il y avait peu de communication entre les équipes de recherche (il faut quand même noter que C et ML ont été inventé à la même époque, donc l'idée des types algébriques était déjà dans l'air et aurait pu être ajoutée à C si ses concepteurs avaient été un peu curieux), aujourd'hui c'est une faute professionnelle, appelons un chat un chat.

    (C'est quand même vraiment très con d'écrire (a, err) := foo(bar), en sachant que a n'est pas défini si err est nil !)

    Mais que juste ceci donne droit aux « 40 années de recherche ignorées » me semble légèrement injuste

    Non, toute la conception du langage est comme ça. Quand tu lis la référence du langage Go, tu vois des gens qui se sont bouchés les oreilles pour ne surtout pas entendre parler ou s'inspirer de ce qui ne vient pas de chez eux.

    Je ne pense pas qu'on puisse débattre de ce point. Tant pis si ça ne fait pas plaisir aux gens qui ont d'autres raisons (certainement intéressantes et valides) de s'intéresser au langage; après tout, on fait du Javascript sur le web parce qu'on est bien forcé, alors que c'est une daube (qui s'améliore ces temps-ci, parce qu'encore une fois on était bien forcé), personne n'essaie de défendre l'honneur perdu de Javascript, c'est une daube. Go est un langage régressif, autant l'admettre tout de suite et discuter de choses intéressants (par exemple le lien entre langages et outils) au lieu de dire que c'est injuste.

    (Je remarque que parfois les programmeurs et programmeuses rechignent à admettre des défauts de leurs langages parce qu'il y a une dimension communautaire voire marketing au choix du langage : on a besoin que les langages qu'on utilise séduisent les gens pour avoir plus d'outils et de bibliothèques, donc il faut avoir un discours positif et ne pas insister sur ses points faibles. Je pense que cette forme de subjectivité est inévitable dans certains contextes, mais elle n'a pas sa place dans le contexte de discussions sur la recherche en langage de programmation, où il faut essayer de s'exprimer au maximum de façon réaliste et précise.)

    ce n'est pas qu'une question d'outils, le succès de ce langage, c'est aussi (et peut-être surtout) une question d'approche par la simplicité (au risque d'être simpliste parfois), optique qui n'est pas du tout à la mode et qui manquait visiblement à pas mal de monde ; je pense que des langages avec des systèmes de types plus évolués pourraient essayer de s'en inspirer un peu.

    On a du mal à bien comprendre ce qui fait le succès d'un langage plutôt qu'un autre, donc ce que je vais dire n'a pas forcément plus de poids ou de validité que ce que tu as dit, on navigue au jugé. Mais je pense que (en plus du fait qu'il y a de bons outils) "ça vient de Google donc c'est bien" plus "un runtime et une bibliothèque standard bien faits pour faire de la tuyauterie web de bas-niveau" a eu beaucoup plus d'impact que la "simplicité" du langage pour expliquer son succès. Si tu regardes les canaux en Concurrent ML (CML, fin des années 90), c'est tout aussi simple que Go, et pourtant personne ne s'en sert. Je serais prêt à parier que si tu avais pris une équipe de taille non-négligeable à Google pour faire une syntaxe à la Javascript pour ce langage, un bon runtime et une bonne bibliothèque standard, tu aurais quelque chose tout aussi populaire que Go aujourd'hui, et ce serait clairement un meilleur langage de programmation.