GNU/Linux Magazine Hors-série N°
Numéro
63

Apprenez à programmer en Go !

Temporalité
Novembre/Décembre 2012
Image v3
Apprenez à programmer en Go !
Article mis en avant

Résumé
La première version stable du langage Go a été publiée en mars de cette année. Il s'agit donc du langage le plus récent disponible pour une utilisation en production et comme avec tout nouveau langage, de nombreuses questions se posent. À quoi sert-il ? Pourquoi encore un langage différent ? Le projet est-il pérenne ? Comment l'utiliser ? Ce premier article tente de répondre à ces questions.

Dans ce numéro...


Après avoir installé le compilateur, voici venu le temps des premiers tests et du classique « Hello world ». Pour ces premiers tests, nous allons focaliser notre attention sur la syntaxe de base, la manière d'écrire du code et la compilation. Notre point d'entrée pour ces tests sera un petit programme « Hello world » que nous ferons évoluer et qui nous permettra d'introduire, de manière basique, quelques notions qui seront approfondies plus tard, dans d'autres articles. Le compilateur est installé et fonctionnel : en avant pour le grand saut.
Les structures de contrôle sont essentielles pour pouvoir programmer : sans la possibilité d'effectuer des branchements logiques à l'aide de structures de test ou la possibilité de répéter des instructions, impossible de développer quoi que ce soit...
L'une des activités principales de la programmation consiste à manipuler des données stockées en mémoire et accessibles sous forme de variables. Encore faut-il savoir ce que peuvent contenir ces variables...
Nous utilisons constamment des chaînes de caractères, que ce soit pour afficher des messages ou rechercher des informations dans un fichier texte. Il est donc important de maîtriser parfaitement la manipulation de ces objets.
Qui dit manipulation de données en mémoire, dit adresse mémoire. Et qui dit adresse mémoire, dit pointeur, la bête noire de nombreux développeurs amateurs ou étudiants. Démystifions la croyance populaire qui veut que le pointeur soit le mal personnifié...
La variété et la simplicité (ou non) d'utilisation des structures dites complexes font qu'un langage sera plus ou moins apprécié des développeurs. Go propose trois structures... Il reste à voir si l'on peut les utiliser sans difficulté.
Les fonctions permettent d'écrire un code réutilisable et paramétrable. Ça, tout le monde le sait. Mais chaque langage propose sa vision des fonctions, offrant de petites subtilités qui peuvent paraître anodines, mais qui le sont en fait rarement... Go ne déroge pas à la règle.
Inutile d'encombrer la mémoire des machines avec du code qui ne sera jamais utilisé. Pour « étendre » Go, on utilise les paquetages qui vont permettre d'effectuer des actions de plus haut niveau, sans avoir à réinventer la roue (éventuellement carrée...). Si le domaine sur lequel on souhaite intervenir n'a pas encore été traité par un paquetage, nous aurons la possibilité de créer le nôtre.
La majorité des langages modernes sont des langages orientés objet. Nous n'avons jusqu'à présent utilisé que de la programmation impérative en Go. Peut-on développer en utilisant une architecture orientée objet ? Si un article entier est présent dans ce hors-série, vous devez vous douter de la réponse. Mais peut-être serez-vous surpris par la mise en œuvre et la conclusion...
Un code ne s'exécute pas toujours correctement. Cela est d'autant plus vrai lorsque l'utilisateur peut saisir des données ou que des données sont lues dans des sources externes. Il faut alors indiquer proprement qu'une erreur est apparue.
Que l'on souhaite conserver des données après l'exécution d'un programme ou obtenir des informations issues d'un autre programme ou d'un quelconque dispositif électronique, la manière la plus simple de faire sera de passer par des fichiers.
Les décennies passent et ne se ressemblent vraiment pas. Il n'y a pas si longtemps, un code qui fonctionnait était un code qui donnait un résultat. Heureusement pour nous, depuis, le monde a bien changé et les tests sont devenus importants. Dans cet article, nous allons voir ce que le Go propose à ce niveau-là.
La plupart des langages vous proposent leur mécanisme de mise en place des traitements concurrents. Thread, fork, coroutines sont des moyens possibles pour faire cela. Dans ce domaine, le Go innove et vous propose une nouvelle façon de mettre en place la concurrence : les goroutines.
GTK+, nom issu de GIMP Toolkit, est une bibliothèque permettant de réaliser des interfaces graphiques (elle est utilisée dans GIMP, GNOME, etc.).
Pour accéder à un SGBD (Système de Gestion de Bases de Données), il faut forcément un driver capable d'établir un dialogue entre le code et la base.
Nous allons voir un exemple de développement web en Go pur. Il est toutefois assez fastidieux de développer un projet web sans framework. Python dispose de l'excellent Django, en PHP on peut utiliser Symfony, avec Ruby il y a Rails, ... et en Go ? Go propose notamment go-start. Bien sûr, chaque langage ne dispose pas d'un unique framework et il faut faire un choix à un moment donné. go-start me paraît être le meilleur choix actuellement, sachant qu'aucun framework Go n'est disponible en version stable. Il s'agit d'un framework MVC (Modèle-Vue-Contrôleur), disposant d'un système de paquetages additionnels, dont les modèles sont définis à l'aide de simples structures et qui utilise une base de données « NoSQL » MongoDB comme base par défaut. Comme avec toute version instable, attendez-vous à rencontrer quelques problèmes si vous l'utilisez, notamment au niveau de la documentation que l'on ne peut même pas qualifier d'incomplète, car ça signifierait qu'il en existe une... Vous aurez tout juste accès à la godoc des paquetages. Voilà pourquoi nous allons rester sur un exemple de développement sans framework.
Go fournit un paquetage standard permettant de récupérer et de traiter des arguments passés depuis la ligne de commandes (on parle souvent de mode CLI pour Command Line Interface).

Magazines précédents

Les derniers contenus premiums