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.