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

De la scytale au bit quantique : l’avenir de la cryptographie

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

Imaginez un monde où nos données seraient aussi insaisissables que le célèbre chat de Schrödinger : à la fois sécurisées et non sécurisées jusqu'à ce qu'un cryptographe quantique décide d’y jeter un œil. Cet article nous emmène dans les méandres de la cryptographie quantique, où la physique quantique n'est pas seulement une affaire de laboratoires, mais la clé d'un futur numérique très sécurisé. Entre principes quantiques mystérieux, défis techniques, et applications pratiques, nous allons découvrir comment cette technologie s'apprête à encoder nos données dans une dimension où même les meilleurs cryptographes n’y pourraient rien faire.

Les nouvelles menaces liées à l’intelligence artificielle

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

Sommes-nous proches de la singularité technologique ? Peu probable. Même si l’intelligence artificielle a fait un bond ces dernières années (elle est étudiée depuis des dizaines d’années), nous sommes loin d’en perdre le contrôle. Et pourtant, une partie de l’utilisation de l’intelligence artificielle échappe aux analystes. Eh oui ! Comme tout système, elle est utilisée par des acteurs malveillants essayant d’en tirer profit pécuniairement. Cet article met en exergue quelques-unes des applications de l’intelligence artificielle par des acteurs malveillants et décrit succinctement comment parer à leurs attaques.

Migration d’une collection Ansible à l’aide de fqcn_migration

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

Distribuer du contenu Ansible réutilisable (rôle, playbooks) par l’intermédiaire d’une collection est devenu le standard dans l’écosystème de l’outil d’automatisation. Pour éviter tout conflit de noms, ces collections sont caractérisées par un nom unique, formé d’une espace de nom, qui peut-être employé par plusieurs collections (tel qu'ansible ou community) et d’un nom plus spécifique à la fonction de la collection en elle-même. Cependant, il arrive parfois qu’il faille migrer une collection d’un espace de noms à un autre, par exemple une collection personnelle ou communautaire qui passe à un espace de noms plus connus ou certifiés. De même, le nom même de la collection peut être amené à changer, si elle dépasse son périmètre d’origine ou que le produit qu’elle concerne est lui-même renommé.

Body