Go est un langage de développé par Google. Il est compilé, concurrent et inspiré des langages C et Pascal. L’objectif de ce langage a été résumé par Rob Pike, un des trois fondateurs de Go, lorsqu’il affirma que les jeunes développeurs « ;ne sont pas capables de comprendre un langage brillant, mais nous voulons les amener à réaliser de bons programmes. Ainsi, le langage que nous leur donnons doit être facile à comprendre et facile à adopter ;». Ainsi donc, ce langage se veut facile à dompter afin d’écrire des programmes surs.
Depuis sa sortie en 2009, Go a connu une forte adoption dans la communauté des développeurs et se classe ce mois-ci à la 16e place dans le classement de l’Index Tiobe. Lukas Schörghuber fait partie de ces personnes qui ont porté leur dévolu sur ce langage depuis des années et en ont fait leur langage favori. Après l’avoir utilisé dans plusieurs projets, Schörghuber nous livre son sentiment sur les avantages et les inconvénients de GO.
Des avantages très intéressants
Pour ce qui concerne les avantages de Go, Schörghuber en trouve plusieurs. Étant conçu pour la programmation concurrente, Go est très excellent lorsqu’il s’agit de gérer les threads. Sa capacité à pouvoir utiliser des threads légers afin de gérer les messages provenant de plusieurs plateformes dans une architecture client-serveur est la raison principale qui a poussé Schörghuber à s’intéresser véritablement à ce langage.
Une fois résolu dans son projet de s’investir dans Go, Schörghuber a été sidéré par la facilité avec laquelle il a pu déployer son application Go. Un simple téléchargement du binaire sur le serveur ou une inclusion du binaire dans l’image du conteneur suivi d’une configuration standard et le tour est joué. Aucune gestion complexe du runtime ou autre péripétie n’est nécessaire. Bien évidemment, l’on ne fait pas référence à la création d’utilisateurs, l’ajout de firewall, ou encore à la sauvegarde de la base de données qui peuvent se faire en une seule fois et ne sont pas vraiment liés à la programmation.
Comme autre avantage cité par Schörghuber, le développeur met en avant la facilité d’installer les applications Go sur différents systèmes comme Windows et Linux. Une simple commande comme go install <applicationName> est suffisante pour exécuter l’application, peu importe que ce soit sur Linux ou Windows.
Passé ces différents points positifs de Go, Schörghuber a été négativement frappé par plusieurs aspects du langage qui ont vite fait de lui faire oublier l’enthousiasme qu’il avait en s’engageant dans cette aventure avec Go.
Des inconvénients qui font méditer
D’abord, le développeur note que Google souhaite imposer son style de codage à ceux qui utilisent Go. Généralement, chaque développeur adopte son style en fonction des conseils et des déductions personnelles faites à travers les années d’expérience. Schörghuber pour sa part a adopté son style en suivant les conseils de son professeur et en établissement des codes de bonnes pratiques tirés des années d’expérience en tant que développeur. Toutefois, ce dernier souligne qu’avec Go, lorsque vous placez un crochet ouvert sur une nouvelle ligne, cela provoque une erreur de syntaxe. De même, si vous commencez une concaténation de chaîne de caractères sur une nouvelle ligne, l’éditeur de code génère une erreur de syntaxe. Pour Schörghuber, cela est inacceptable que Google oblige les développeurs à adopter un style de codage particulier pour éviter ces erreurs. Selon lui, cela devrait être une suggestion et non une obligation.
La seconde chose qui a laissé un goût amer à Schörghuber est le gestionnaire de paquets. Un des gros avantages de ce dernier est qu’il fonctionne de manière transparente en allant chercher directement les dépendances de code à partir du système hôte ou des dépôts Git. Mais son gros inconvénient, selon Schörghuber, est qu’il n’existe aucun moyen de déterminer la version d’un paquet. Go résout ce problème en s’appuyant sur la version principale, mais lorsque des changements surviennent au niveau de cette branche principale, l’application ne compile plus, précise Schörghuber.
Un autre problème qui pourrait sembler trivial pour certains est rapporté par Schörghuber comme très gênant pendant la programmation. Il s’agit de l’absence de la notion d’héritage des objets. Alors que beaucoup diront qu’il n’a qu’à faire du copier-coller pour régler son problème, Schörghuber trouve vraiment aberrant d’avoir à écrire beaucoup de code dupliqué. Une solution qui lui a permis de régler ce problème d’héritage au niveau des méthodes d’objets est l’usage d’interface, mais pour les membres de données il n’a pas trouvé de solutions qui lui facilitent la vie.
Un autre boulet qui pousse Schörghuber à prendre ses distances vis-à-vis de Go est la non-prise en charge du concept de généricité. Pour le développeur, les créateurs de Go et sa communauté devraient prendre en charge ce concept dans la mesure où ils présentent Go comme un langage dynamique.
Enfin, Schörghuber explique comme dernier point qui a achevé de le convaincre d’abandonner Go est l’absence de certains composants dans la bibliothèque HTTP. Pour créer de simples services HTTP, la bibliothèque Go fait aisément l’affaire. Mais si vous voulez aller plus loin et ajouter des fonctionnalités comme des paramètres de style REST, des cookies ou encore des sessions, des plug-ins supplémentaires sont nécessaires, explique le développeur.
Et le comble dans cette affaire, précise Schörghuber, il n’y a aucune mention de ces choses absentes dans la documentation. Aussi, en voulant implémenter certaines fonctionnalités avec la bibliothèque HTTP, vous pourriez avoir des erreurs qui prendront des heures à dépanner en raison de ce manque d’information dans la documentation Go.
Après avoir pesé tous les avantages et les inconvénients de Go, Schörghuber a décidé d’abandonner ce langage qui lui a donné tant de satisfaction au départ. L’expérience étant variable en fonction des personnes, quelles sont les raisons qui vous ont poussé à adopter Go ;? Ou à vous en éloigner ;?
Au-delà du langage Go, quelles sont les raisons qui peuvent pousser un développeur à apprendre un langage ou à le rejeter ;?
Source : Blog de Lukas Schörghuber
Et vous ?
Pour quelles raisons avez-vous choisi d’apprendre Go ;? Quels sont les avantages que vous lui trouvez ;?
Avez-vous abandonné Go ;? Pour quelles raisons ;?
De manière générale, quels sont les éléments qui peuvent pousser un développeur à apprendre ou vomir un langage ;?
Voir aussi
Go : le langage de programmation de Google va à l'assaut du mobile, Go 1.4 introduit le support d'Android
TIOBE : Le langage de programmation Go de Google gagne en popularité, favorisé par la popularisation de Docker
Apprendre la programmation en langage Go par l'exemple, un tutoriel de Clement Keirua
Quels avantages ou inconvénients trouvez-vous au langage Go ?
Schörghuber raconte son aventure avec Go et finit par le rejeter pour diverses raisons
Quels avantages ou inconvénients trouvez-vous au langage Go ?
Schörghuber raconte son aventure avec Go et finit par le rejeter pour diverses raisons
Le , par Olivier Famien
Une erreur dans cette actualité ? Signalez-nous-la !