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

Ne quittez plus vos serveurs des yeux !
GNU/Linux-Magazine Hors-série N°62
Ne quittez plus vos serveurs des yeux !
Créez vos applications Android comme un pro !
GNU/Linux-Magazine Hors-série N°61
Créez vos applications Android comme un pro !
20 Recettes pour développer vos applications Android
GNU/Linux-Magazine Hors-série N°60
20 recettes pour développer vos applications Android
ZEND Framework 2
GNU/Linux-Magazine Hors-série N°58
ZEND Framework 2
Carnet de Root
GNU/Linux-Magazine Hors-série N°57
Carnet de Root

Les derniers articles Premiums

Les derniers articles Premium

Stubby : protection de votre vie privée via le chiffrement des requêtes DNS

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Depuis les révélations d’Edward Snowden sur l’espionnage de masse des communications sur Internet par la NSA, un effort massif a été fait pour protéger la vie en ligne des internautes. Cet effort s’est principalement concentré sur les outils de communication avec la généralisation de l’usage du chiffrement sur le web (désormais, plus de 90 % des échanges se font en HTTPS) et l’adoption en masse des messageries utilisant des protocoles de chiffrement de bout en bout. Cependant, toutes ces communications, bien que chiffrées, utilisent un protocole qui, lui, n’est pas chiffré par défaut, loin de là : le DNS. Voyons ensemble quels sont les risques que cela induit pour les internautes et comment nous pouvons améliorer la situation.

Surveillez la consommation énergétique de votre code

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Être en mesure de surveiller la consommation énergétique de nos applications est une idée attrayante, qui n'est que trop souvent mise à la marge aujourd'hui. C'est d'ailleurs paradoxal, quand on pense que de plus en plus de voitures permettent de connaître la consommation instantanée et la consommation moyenne du véhicule, mais que nos chers ordinateurs, fleurons de la technologie, ne le permettent pas pour nos applications... Mais c'est aussi une tendance qui s'affirme petit à petit et à laquelle à terme, il devrait être difficile d'échapper. Car même si ce n'est qu'un effet de bord, elle nous amène à créer des programmes plus efficaces, qui sont également moins chers à exécuter.

Donnez une autre dimension à vos logs avec Vector

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Avoir des informations précises et détaillées sur ce qu’il se passe dans une infrastructure, et sur les applications qu'elle héberge est un enjeu critique pour votre business. Cependant, ça demande du temps, temps qu'on préfère parfois se réserver pour d'autres tâches jugées plus prioritaires. Mais qu'un système plante, qu'une application perde les pédales ou qu'une faille de sécurité soit découverte et c'est la panique à bord ! Alors je vous le demande, qui voudrait rester aveugle quand l'observabilité a tout à vous offrir ?

Body