Nipdev 23 – Go, go, go…

Podcast: Téléchargement

Dans la série langages, Antoine et Fabrice accueillent aujourd’hui Stéphane Klein que vous pouvez retrouver sur twitter ici et qui nous parle du langage Go de Google.

Sommaire

Histoire du langage Golang

Pourquoi/Motivation de la création de Golang ? [ref]

  • Les développeurs de chez Google ont fait le constat qu’il existe des langages qui ont les caractéristiques suivantes :
    • soit avec une compilation efficace (rapide)
    • soit avec une exécution efficace
    • soit avec une facilité de développement

mais qu’il n’existe pas de langage avec ces trois caractéristiques réunies, d’où l’idée du lancement du projet Go.

Quels sont les projets cibles, les développeurs cible du langage Go ?

  • Au départ : les développeurs systèmes C, C++ étaient la cible du langage Go
  • J’ai pu observer et en faire l’expérience que les développeur Python sont très rapidement opérationnels en Go et apprécient le langage
  • En pratique : beaucoup de développeur Ruby, Python, Php s’intéressent/migrent des projets vers ce langage.
  • Pour le moment, le langage Go est principalement adapté à des projets backend

Les forces du langage Golang

  • En pratique, les projets développés en Go ont de très bonnes performance, cela pour plusieurs raison :
    • Faible consommation mémoire
    • Rapide car c’est un langage compilé
    • Les fonctionnalités de concurrences directement intégré au langage
  • Go a un système de type statique, fortement typé mais permet aussi d’avoir un typage dynamique grâce aux interfaces
  • Gestion propre de la parallélisation sur un ou plusieurs coeurs
  • Go permet de faire facilement de la cross compilation
  • Facilité de déploiement
  • Les « batteries sont incluses » (la librairie standard du langage est riche)
  • Facilité d’apprentissage du langage (pas de concept nouveau pour faciliter l’adoption)
  • Communauté très active et de bon niveau

Spécificité du langage et sa syntax

Gestion des packages / modules

Comment apprendre le langage et se documenter :

Ce que j’aime avec dans le langage Golang

  • « explicite better implicite »
  • les outils inclus avec la commande « go »
  • les tests
  • couverture de code
  • go benchmark
  • go get
  • rapidité, peu d’emprunte mémoire
  • la gestion des import, ressemble énormément du Python
  • simplicité de déploiement :
    • exemple : https://github.com/gogits/gogs (Github/gitlab like), un fichier à déposer sur le serveur, c’est parti (en dehors de la conf postgresql), pas de runtime

Ce que j’aime pas dans le langage Golang

  • Pour moi, c’est quand même beaucoup plus rapide de coder en Python
  • La gestion des retour d’erreur partout, c’est pénible
  • À cause de la gestion d’erreur, il est souvent impossible d’enchainer des appels de fonctions
  • Moins de lisibilité que Python
  • Pour le moment, pas de solution mature pour créer des applications loudes, type Qt…

Adoption et des success stories

7 réflexions au sujet de « Nipdev 23 – Go, go, go… »

  1. Question coopérative :
    Comment se passe la négociation salariale ?

    C’est un peu magique le Go: une syntaxe légère avec des performances proche du C 0_0

    En php, on peu retourner plusieurs variables via un tableau:
    ——–
    Function exple(){
    return array($a,$b);
    }
    list($a,$b)=exple();
    ——–

    J’ai testé un peu sur http://golang.org/
    Je trouve ça sympa qu’il ne compile pas si on a des variables non utilisés: visualstudio fait de même pour information 😉

    Attention pour python : préfixé d’un ou de deux underscore est une convention de nommage: il n’y a pas de « portée/protection » de variable, cf nos derniers échanges sur le sujet (précédent nipDev)

    En entreprise on privilégie: la productivité de développement et la difficulté de maintenance: on privilégie l’économie de l’homme au dépend de la machine 😉 (les jours H étant plus élevé que les coûts machine ) 🙂

    Merci pour cet épisode qui m’a fait découvrir un peu mieux GO 😉

  2. > Question coopérative :
    > Comment se passe la négociation salariale ?

    Je pense qu’il n’y a pas de règles, chaque Scop fonctionne comme elle le souhaite.

    > En php, on peu retourner plusieurs variables via un tableau

    Oui parfaitement, mais c’est pas exactement pareil. Mais ce sont des détails.

    > Je trouve ça sympa qu’il ne compile pas si on a des variables non utilisés: visualstudio fait de même pour information 😉

    Mais là c’est directement lié au langage, ce n’est pas une option, c’est vraiment une erreur si une variable n’est pas utilisé.

    > Attention pour python : préfixé d’un ou de deux underscore est une convention de nommage: il n’y a pas de « portée/protection » de variable, cf nos derniers échanges sur le sujet

    Si si il y a une protection (que tu peux contourner) au niveau des attribues ou méthodes avec double underscore, exemple https://gist.github.com/harobed/5493d9e967f84e4ce0d3

    > En entreprise on privilégie: la productivité de développement et la difficulté de maintenance: on privilégie l’économie de l’homme au dépend de la machine 😉 (les jours H étant plus élevé que les coûts machine ) 🙂

    Oui tout à fait d’accord.

    > Merci pour cet épisode qui m’a fait découvrir un peu mieux GO 😉

    De rien.

      1. Il dit la même chose dans son code d’exemple. Tu peux « proteger » les attributs avec un double underscore mais tu peux contourner via _MaClasse__attribut. Après je considère juste qu’un attribut privée qui peut être accessible, n’est pas privé. Tous les attributs python sont bien publics et accessibles d’une manière ou d’une autre.

  3. Oui merci, je lis bien « Protected member is (in C++ and Java) accessible only from within the class and it’s subclasses. How to accomplish this in Python? The answer is – by convention. »
    C’est une convention non une protection 🙂
    En php on pourrait faire de même: mettre toutes les variables en public et préfixer les protected et private d’un underscore en indiquant bien que par convention elles sont publics 😉
    Mais on a une protection qui génerera une erreur si on essaie d’acceder à une propriété protected/private hors de son « scope » 😉

    J’aime bien son humour: « This will work, except, in case you see this, you kick your colleague, who’s responsible for it hard in the nuts. »

Laisser un commentaire