Qu'est-ce que le langage go
Histoire
Go (prononcé en anglais "Gow") aussi appelé Golang est un langage de programmation open source relativement jeune, développé 2007 par Robert Griesemer, Rob Pike et Ken Thompson, travaillant aujourd'hui chez Google.
Déclaration des experts à l’origine de Go lors de son lancement
« Chez Google, nous pensons que la programmation devrait être rapide, productive et surtout, fun. C’est pourquoi nous sommes ravis de proposer ce nouveau langage de programmation expérimental. Les opérations de compilation sont presque instantanées, et le code compilé propose une vitesse de fonctionnement proche de celle du C ».
Pour résumé leur message : Le langage de programmation Go rime avec efficacité et simplicité.
Le langage de programmation Go a été lancé en novembre 2009 et est utilisé dans certains systèmes de production de Google, c’est celui la même qui a été utilisé pour développer le logiciel de conteneurisation Docker (c'est d'ailleurs avec le projet Docker que j'ai connu pour la première fois ce langage).
Comparaison avec d'autres langages
Go est syntaxiquement similaire au langage C mais contrairement au C il possède une sécurité de la mémoire avec un Garbage Collector et c'est un langage à typage statique (les types des variables sont connus lors de la compilation et doivent être spécifiés expressément par le programmeur) comme dans d'autres langages de programmation à savoir le Java, le C ou le C++.
Go est souvent comparé au langage Python car tous les 2 se veulent très simples syntaxiquement. Personnellement je trouve python est plus simple syntaxiquement mais Python reste tout de même un langage interprété, contrairement à Go qui est un langage compilé.
Disclaimer : pas de guéguerre de langage ici :p, chaque langage de programmation a ses avantages et ses inconvénients, ça ne m’empêche pas d'utiliser Python sur plusieurs projets voir même de combiner les deux langages, tout dépend simplement des besoins 😉.
Rappel sur les langages interprétés et langages compilés
Certains d'entre vous ont peut être utilisé que des langages de programmation interprétés, si c'est le cas alors une petite explication s'impose pour ainsi commencer avec des bonnes bases :
- Dans un langage interprété, le code source est interprété, par un autre logiciel nommé l’interpréteur, celui-ci traduit au fur et à mesure les instructions de votre programme.
- Dans un langage compilé, le code source est tout d'abord compilé en langage binaire c’est une suite de 0 et de 1 uniquement compréhensible par votre machine par un autre logiciel qu'on appelle le compilateur.
Avantages et inconvénients des langages interprétés et langages compilés
Un programme écrit dans un langage compilé a l'avantage de ne plus avoir besoin une fois compilé de programme annexe pour s'exécuter (un langage interprété aura toujours besoin de son interpréteur), de plus comme votre code est exécuté directement par votre machine alors le temps d’exécution de votre programme sera en général plus rapide pour le même programme dans un langage interprété.
Cependant pour chaque modification de votre code source il faudra recompiler le programme pour que les modifications prennent effet, ensuite votre programme compilé n’est pas multi-plateforme il faudra donc créer un exécutable pour chaque système d’exploitation à l’inverse d’un l'inverse d’un langage interprété qui lui reste en général multi-plateforme.
Revenons à nos moutons !
Donc pour revenir à notre langage Go, c'est un langage qui se veut accessible et rapide pour une programmation à grande échelle, il est donc concevable de l'utiliser aussi bien pour écrire des applications, des scripts ou sur d'autres types des gros projets.
Les avantages du langage GO
Voici une courte liste d'avantages du langage GO :
- Une meilleure protection de la mémoire grâce à son ramasse-miettes (Garbage Collector) qui permet une gestion automatique de la mémoire.
- Profite de la puissance de calcul des processeurs les plus robustes du marché (processeurs multi-cœurs).
- Possibilité de faire du typage dynamique et intègre de nombreux types avancés tels que les mappages clé-valeur.
- Possède une riche bibliothèque standard, qu’il est même tout à fait possible de concevoir des programmes écrit avec le langage Go sans aucune dépendance externe.
- Une base de code propre nécessaire aussi pour assurer la maintenance et l'évolution des programmes sur plusieurs générations développeurs.
- Possède un temps de compilation rapide et intègre aussi un système de build beaucoup moins compliqué que celui de la plupart des langages de compilés.
- Au niveau de la portabilité il est possible de compiler votre code pour une large gamme de systèmes d'exploitation et de plateformes matérielles (Windows, Linux, MAC OS, Android, IOS).
Utilisation du langage GO
On retrouve le langage Go dans les domaines suivants (liste non exhaustive) :
- Serveurs
- Web
- Systèmes embarqués
- IOT (Internet Of Things)
- Android
- IOS
- Jeux-vidéos
- etc ...
Liste non exhaustive des entreprises utilisant Go :
- CloudFlare
- CoreOS
- DropBox
- Docker
- Nokia
- Ovh
- YouTube
- SoundCloud
- Splice
- etc ...
Public visé
Ce tutoriel est conçu pour des programmeurs ou des curieux ayant besoin de comprendre le langage de programmation Go à partir de zéro. Ce tutoriel vous donnera une compréhension suffisante du langage de programmation Go, qui vous permettra d’atteindre des niveaux d’expertise plus élevés.
Espace commentaire
Écrire un commentaire
Rejoignez la discussion
Vous devez être connecté pour poster un message.
35 commentaires
Prochaine étape pour vous : regardez comment gérer les routines pour le multi-coeur, c'est là que le langage brille vraiment.
Utilise
gofmtougoimports. Ne perds pas ton temps à indenter à la main.C'est quoi le meilleur outil pour le formatage ?
En Go, on appelle ça une conversion.
int(maVariableFloat). Pas de magie noire.J'ai un warning sur le typage, comment je force un cast ?
De rien. Pense à bien versionner ton
go.sumaussi.Merci, le
go mod tidya réduit mon temps de build de moitié.Vérifie tes dépendances, t'as peut-être des trucs lourds qui se re-téléchargent. Fais un
go mod tidypour nettoyer.Le compilateur est rapide, mais mon build met 10s. C'est normal ?
Bonjour @Romain merci d'avoir pris le temps de lire mes articles 👌💪
Oui, avec des libs comme Ebitengine par exemple. C'est pas pour du AAA, mais pour du 2D c'est très rapide.
On peut vraiment faire du jeu vidéo avec ?
Bonjour,Je tenais simplement à vous remerciez pour votre travail, je ne suis pas du monde de l'informatique mais avec vos explications et vos exemples j'ai beaucoup progressé, merci encore 💪👍😁
Pas du tout, c'est très intuitif.
Bonjour @baros, derien, profite bien du cours :) !
J'essaie de faire une API simple, les types avancés comme les maps sont complexes à manipuler ?
go buildcrée le binaire dans le dossier courant.go installle place dans ton$GOPATH/binpour qu'il soit accessible partout.C'est quoi la différence entre
go buildetgo install?Oui, le binaire final est statique par défaut. Tu peux copier ton binaire sur un serveur vide, il tournera direct sans
apt installou autre.Waw, c'est la première fois que je vois un cours complet en français sur GoLang, merci vraiment pour ce contenu de qualité !.
Je peux compiler sans dépendances externes comme dit dans l'article ?
Bonjour @Patrice,
Merci pour votre message, ça fait plaisir à entendre 😊. Et bon cours !
T'es probablement pas dans ton module. Initialise-le proprement :
J'ai une erreur
package main is not in GOROOT, c'est quoi ce délire ?Non, il est très optimisé. C'est bien mieux que de gérer la mémoire à la main comme en C, à ne jamais faire en prod si t'es pas expert.