Go : Le langage informatique par Google

alexandre sabathier
ELP-2018
Published in
4 min readMay 15, 2018

Cet article a pour but de vous présenter les grandes lignes du langage informatique Go, en exposant son histoire et ses caractéristiques.

Ce langage est aujourd’hui très bien documenté, disposant d’une communauté grandissante et d’un appui fort de Google. Pour toute information détaillée, n’hésitez donc pas à aller consulter le site officiel.

Un peu d’histoire

Go est un langage créé par la société Google en 2009 dans le but d’obtenir un langage performant côté serveur, intégrant l’utilisation des fonctionnalités actuels tels que les processeurs multi-cœurs. Ce langage vise donc dans un premier temps la rapidité de compilation et d’exécution.

« Vous pouvez compiler et exécuter un programme Go avant même que certains interpréteurs ne démarrent » — Rob Pike, un des fondateurs de Go

Lors de sa création, l’autre objectif fut de créer un langage facilitant le développement de masse. Les créateurs de Go se sont donc inspirés des langages traditionnels tels que C et Pascal afin de satisfaire les développeurs chevronnés, tout en clarifiant la syntaxe de façon à obtenir un langage épuré, compréhensible par le plus grand nombre.

Copiez ce code dans un fichier “hello.go”, installer golang puis taper dans la console go run hello.go Félicitation, vous venez d‘exécuter le programme “Hello World” en Go !

Le langage est utilisé par Google depuis mai 2010 afin de remplacer C++ dans le développement côté serveur, mais il est amusant de constater qu’il est aussi utilisé par des programmeurs Python et Ruby pour sa rapidité d’exécution, et dans d’autres domaines que celui initialement prévu tels que le développement d’applications téléphoniques ou d’applications cloud.

Les particularités du langage

Le langage, se voulant épuré, se retrouve dispensé de traits syntaxiques considérés comme inutiles ou générateurs d’erreurs. Ainsi par exemple, les points virgules ne sont plus nécessaires à la fin de chaque ligne, et la déclaration de variable se fait simplement avec le suffixe var comme cela peu se faire en Pascal, ou encore plus simplement en utilisant :=. D’autre part, certaines fonctions telles que switch case se voient améliorées, cette dernière pouvant comporter différents tests et plusieurs alternatives.

Les Goroutines

Mais Go se voit surtout doté d’outils puissants tels que les goroutines, qui simplifient la programmation concurrente. Il s’agit simplement d’un fil d’exécution pouvant tourner en parallèle avec d’autres goroutines, à la manière des threads en C. Appliqué au développement serveur, cela permet par exemple la gestion de plusieurs utilisateurs et requêtes en simultanés.

Si on prend l’exemple d’une relation simple client/serveur, un programme classique va effectuer les opérations les unes à la suite des autres.

Résultat obtenu pour un programme linéaire classique

Or en utilisant les goroutines, les deux clients vont pouvoir se connecter en simultané, se voyant chacun attribué un fil d’exécution qui s’occupera de leurs requêtes.

Le mot clé go permet de lancer un appel de fonction dans une nouvelle goroutine et de ne pas attendre le résultat. Le programme principal continuera alors son exécution en parallèle de la fonction appelée.

Résultat obtenu avec l’utilisation de goroutines

On voit alors que le serveur n’attend pas la déconnexion du client 1 pour pouvoir connecter le client 2, ce qui réduit l’attente client et le temps de traitement global du serveur.

Il est bien entendu possible de communiquer entre les différentes goroutines, grâce aux canaux de communication ( ou channel ), qui se déclarent avec le mot clé chan suivit du type d’information qui va y transiter. Cela permet par exemple la communication entre la goroutine client et le programme principal serveur, mais c’est aussi une méthode de synchronisation.

Résultat obtenu côté serveur, en utilisant les canaux

Combiné à d’autres outils comme le structure select qui permet une gestion avancée de canaux, le système de goroutines s’impose comme un outil clair et puissant, indispensable notamment pour le développement serveur.

Références

--

--