af83

Faire ses premiers pas avec Go

On entend régulièrement parler de langages de programmation qui sont présentés comme des remplaçants du bon vieux C… Go est l'un de ces langages. Initialement commencé comme un projet interne à Google par une équipe notamment composée de Rob Pike et Ken Thomson (excusez du peu), il a rapidement dépassé ce cadre et est maintenant soutenu par une importante communauté Open-Source.

La sortie d'une première version stable, Go 1, va permettre à de nombreux développeurs d'envisager plus facilement l'utilisation de Go au regard des contraintes de production. Ça ne veut pas dire que le langage n'était pas utilisé en production jusque là, mais ses évolutions engendraient un coût pour maintenir les applications. D'ailleurs, Go peut d'ores et déjà se prévaloir de quelques très belles références : Google utilise Go au coeur de l'infrastructure de Youtube, sous la forme d'un proxy/multiplexer SQL nommé vitess (publié sous licence BSD). On peut également citer Heroku, Canonical et d'autres qui font confiance à Go pour des services importants de leurs infrastructures.

Ces exemples montrent que Go peut effectivement s'avancer comme un successeur du C, mais il serait trompeur de croire qu'il va entièrement remplacer le C et tous ses cas d'usage. Typiquement, je ne pense pas que Go soit particulièrement intéressant pour développer le noyau d'un système d'exploitation ou faire des systèmes embarqués avec des contraintes temps-réel et des ressources fortement limitées. Par contre, Go me paraît être extrêmement pertinent pour faire des daemons réseaux ou des services nécessitant fiabilité et performances ; en particulier, la combinaison des goroutines et channels semble très efficace pour construire des systèmes concurrents sans s'arracher les cheveux.

Mais le mieux est encore de vous montrer ce à quoi ressemblent des programmes en Go. Après tout, le titre de ce billet est « Faire ses premiers pas avec Go »…

La première étape consiste à installer Go. Si vous utilisez une distribution Linux, il y a fort à parier qu'elle fournit des paquets pour Go (c'est le cas d'Ubuntu par exemple). Dans le cas contraire, pas d'inquiétude, vous pourrez trouver des exécutables pour Windows, Linux, OSX et FreeBSD, ainsi que les sources. Et pour finir l'installation, il faudra définir quelques variables d'environnement (à ajouter à ~/.zshrc si vous utilisez zsh, ou son équivalent si vous utilisez un autre shell) :

export GOROOT="/usr/lib/go"
export GOPATH="$HOME/go"
export PATH="$PATH:$GOPATH/bin:$GOROOT/bin"

La première variable, GOROOT, sert aux outils de compilation pour savoir où Go est installé (notamment la bibliothèque standard). Par défaut, cela devrait être /usr/local/go mais, dans mon cas, le paquet Ubuntu a installé ça dans /usr/lib/go.

Ensuite, vient GOPATH. Cette variable va permettre d'aller chercher le code de diverses bibliothèques pour la compilation. Le premier répertoire listé joue un rôle particulier : il accueillera les bibliothèques installées avec la commande go install (je n'en dirais pas plus aujourd'hui, cela mérite un billet de blog à part).

Enfin, on ajoute nos chemins au $PATH pour pouvoir lancer les commandes Go sans avoir à taper les chemins complets.

L'étape suivante consiste à configurer son éditeur de texte favori. Vous avez le droit de sauter ce passage mais, pour moi, prendre 5 minutes pour faire cela permet de gagner bien plus de temps ensuite. Pour Vim, cela peut se limiter à ajouter ces 3 lignes à son ~/.vimrc dans un premier temps :

set rtp+=$GOROOT/misc/vim
filetype plugin indent on
syntax on

Comme vous pouvez le constater, Go est fourni de base avec des plugins pour différents outils. Vous pouvez en faire le tour dans le répertoire $GOROOT/misc. Et pour aller plus loin, http://go-lang.cat-v.org/text-editors/ est une ressource incontournable.

Il est maintenant temps de tester notre installation avec le très célèbre Hello World. Nous allons donc créer un fichier hello.go avec les 5 lignes suivantes :

package main

import "fmt"

func main() {
    fmt.Printf("Hello world\n")
}

Puis, nous allons compiler et lancer le programme en une seule commande :

go run hello.go

Si vous voyez Hello world, félicitations, votre installation de Go fonctionne et vous avez fait tourner votre premier programme dans ce langage. Pour continuer, je vous conseille de faire Le tour de Go ou de passer à l'écriture d'un service web en Go.

blog comments powered by Disqus