5. Hello World !▲
Le premier programme montré dans la plupart des livres qui présentent un langage de programmation est le programme hello world. C'est un programme très simple et très court qui affiche « hello world » et qui se termine (NDT « hello world » signifie « bonjour le monde »). Ce programme est important parce qu'il présente quelques concepts essentiels de ce langage.
Voilà ce que ça donne en langage D :
import
std.stdio;
void
main
(
)
{
writeln
(
"Hello world!"
);
}
Le code source ci-dessus doit être compilé par un compilateur D pour obtenir un programme exécutable par l'ordinateur, l'ordinateur ne pouvant pas directement exécuter le code source.
5-1. Installation du compilateur.▲
Lors de l'écriture de ce chapitre, nous avons le choix entre trois compilateurs :
- dmd, le compilateur de Digital Mars ;
- gdc, le compilateur de GCC ;
- ldc, le compilateur adapté à l'architecture LLVM.
dmd est le compilateur qui est utilisé pendant la conception et le développement du langage D depuis des années. Tous les exemples de ce livre ont été testés avec. (NDT L'auteur affirme que pour cette raison, ce serait plus facile pour vous de commencer avec dmd et d'essayer d'autres compilateurs seulement en cas de besoin spécifique. Personnellement, j'utilise plutôt gdc, parce qu'il est libre, parce que je connais déjà GCC et parce qu'il est plus simple à installer chez moi, mais je n'ai pas revérifié si tous les codes du tutoriel fonctionnaient avec. À priori oui, d'autant que c'est avec ce livre que j'ai appris le D.)
Pour installer dmd, rendez-vous sur la page de téléchargement de Digital Mars et sélectionnez la version qui correspond à votre système. n'installez pas un compilateur fait pour la version 1 du langage D. Ce livre ne couvre que la version 2 du D. Le processus d'installation ne devrait pas être très compliqué. (NDT Les utilisateurs de Linux devraient pouvoir installer gdc comme n'importe quel autre logiciel, il se trouve dans les dépôts de n'importe quelle distribution répandue.)
5-2. Fichier source▲
Le fichier que le programmeur écrit et qui est compilé par le compilateur D s'appelle le fichier source. Comme D est un langage compilé, le fichier source lui-même n'est pas un programme exécutable. Il doit être converti en un programme exécutable par le compilateur.
Comme avec n'importe quel fichier, le fichier source doit avoir un nom. Même si le nom peut être n'importe quoi, il est conseillé d'utiliser l'extension .d pour le fichier source parce que les environnements de développement, les outils, les programmeurs s'attendent tous à ce que ce soit le cas. Par exemple, test.d, game.d, invoice.d, etc. sont des noms de fichiers source appropriés.
5-3. Compiler le programme hello world▲
Copiez le code du programme hello world précédent dans un fichier texte et enregistrez-le sous le nom hello.d (NDT Je vous conseille de vous créer un dossier dans lequel vous placerez tout ce dont vous aurez besoin lors de votre apprentissage du langage D).
Le compilateur va bientôt vérifier la syntaxe de ce code source (c.-à-d. si elle est valide selon les règles du langage) et produire un programme à partir de ce code en le traduisant en code machine. Pour compiler le programme, suivez ces étapes :
- Ouvrez un terminal ;
- Déplacez-vous vers le dossier où vous avez placé votre fichier hello.d ;
- Entrez la commande suivante :
- pour les utilisateurs de dmd : dmd hello.d ,
-
pour les utilisateurs de gdc :
- si vous êtes sous Windows : gdc hello.d -o hello.exe ,
- sinon :gdc hello.d -o hello .
Si vous n'avez fait aucune erreur, vous pouvez penser qu'il ne s'est rien passé. Au contraire, ça veut dire que tout s'est bien passé. Il devrait y avoir un exécutable nommé hello (ou hello.exe sous Windows) qui vient d'être créé par le compilateur.
Si par contre le compilateur a affiché des messages, vous avez probablement fait une erreur. Identifiez-la, corrigez-la et réessayez de compiler. Vous allez régulièrement faire beaucoup d'erreurs en programmant, le processus de correction-compilation vous deviendra habituel.
Une fois le programme créé, tapez le nom de l'exécutable pour le lancer. Vous devriez voir « Hello world » s'afficher à l'écran :
$
./hello # exécution du programme.
Hello world!
# le message qu'il affiche
Le dollar ($) est ici pour séparer la commande de sa sortie. Il ne faut pas l'inclure dans la commande lorsqu'on l'exécute.
Félicitations ! Votre programme fonctionne comme prévu.
5-4. Paramètres du compilateur▲
(NDT Les mentions de gdc dans cette sous-partie n'apparaissent pas dans l'œuvre originale, elles ont été ajoutées par le traducteur.)
Le compilateur a beaucoup de paramètres en lignes de commande qui sont utilisés pour influencer la compilation du programme.
Pour voir une liste des paramètres, les utilisateurs de dmd taperont simplement le nom de leur compilateur :
$
dmd # ← Entrez seulement le nom
DMD64 D Compiler v2.059
Copyright (
c) 1999
-2012
by Digital Mars written by Walter Bright
Documentation: http://www.dlang.org/index.html
Usage:
dmd files.d ... { -switch }
files.d D source files
...
-unittest compile in
unit tests
...
-w enable warnings
...
NDT Les utilisateurs de gdc sont invités à lire la page de manuel de gdc et celle de gcc, gdc acceptant la plupart des options de gcc (pour quitter le manuel, appuyez sur « q ») :
$
man gdc
$
man gcc
L'extrait de sortie ci-avant montre seulement les paramètres que je vous recommande d'utiliser à chaque fois. Même si ça ne change rien pour le programme « hello world » de ce chapitre, la ligne de commande suivante compilera le programme en activant les avertissements et les tests unitaires. Nous verrons à quoi cela correspond ainsi que d'autres paramètres du compilateur plus en détail dans les chapitres suivants :
dmd hello.d -w -unittest
NDT Les utilisateurs de gdc pourront utiliser cette ligne :
-
sous Windows :
- gdc hello.d -o hello.exe -Wall -funittest
-
autres systèmes :
- gdc hello.d -o hello -Wall -funittest
La liste complète des paramètres de dmd peut être trouvée dans la documentation du compilateur DMD.
Un autre paramètre de la ligne de commande que vous pouvez trouver utile est -run. Il compile le code source, produit l'exécutable et le lance en une seule commande :
$
dmd -run hello.d -w -unittest
Hello world!
← Le programme est automatiquement exécuté
5-5. IDE▲
En plus du compilateur, vous pouvez aussi considérer l'installation d'un EDI (Environnement de Développement Intégré, IDE en anglais). Les EDI sont conçus pour rendre le développement de programmes plus facile en simplifiant les étapes d'écriture, de compilation et de débogage.
Si vous installez un EDI, compiler et exécuter un programme sera aussi simple qu'appuyer sur une touche ou cliquer sur un bouton. Je vous recommande tout de même de vous familiariser avec la compilation manuelle en ligne de commande.
Si vous décidez d'installer un EDI, allez sur la page de dlang.org sur les EDI pour voir la liste des EDI disponibles.
5-6. Contenu du programme hello world▲
Voici une petite liste des quelques concepts du langage D qui apparaissent dans ce petit programme.
5-6-1. Bases du langage▲
Chaque langage définit sa propre syntaxe, ses types fondamentaux, mots-clés, règles, etc. Tous ces éléments font partie des fondements du langage. Les parenthèses, les points-virgules, des mots comme main ou void font tous partie des règles du langage D. Ils sont similaires aux règles du français : sujet, verbe, ponctuation, structures de la phrase, etc.
5-6-2. Bibliothèques et fonctions▲
Les bases du langage ne définissent que sa structure. Elles sont utilisées pour définir des fonctions et des types de l'utilisateur, qui sont à leur tour utilisés pour créer des bibliothèques. Les bibliothèques sont des collections de parties de programmes réutilisables qui sont liées à vos programmes pour les aider à atteindre leur but.
Ci-dessus, writeln est une fonction de la bibliothèque standard du langage D. Elle est utilisée, comme son nom l'indique, pour écrire une ligne (« write line »).
5-6-3. Modules▲
Les bibliothèques sont composées de parties regroupant des codes formant une certaine unité par leur rôle, les tâches qu'ils accomplissent, etc. Ces parties forment ce qu'on appelle des modules. Le seul module que ce programme utilise est std.stdio, qui gère les entrées et sorties de données.
5-6-4. Caractères et chaînes▲
Les expressions du type "Hello world" sont appelées chaînes de caractères (ou simplement « chaînes »), et les éléments des chaînes sont des caractères. La seule chaîne de ce programme contient les caractères 'H', 'e', '!', entre autres.
5-6-5. Ordre des opérations▲
Les programmes accomplissent leurs tâches en exécutant des opérations dans un certain ordre. Ces tâches commencent avec les opérations qui sont écrites dans la fonction nommée main. La seule opération dans ce programme écrit « Hello world! ».
5-6-6. Sens des lettres minuscules et majuscules▲
Vous pouvez choisir de taper n'importe quel caractère dans des chaînes, mais vous devez taper les autres caractères exactement tels qu'ils apparaissent dans le programme. C'est parce que les majuscules et les minuscules sont significatives dans les programmes D. Par exemple, writeln et Writeln sont deux noms différents.
5-6-7. Mots-clés▲
Les mots spéciaux qui font partie du langage de base sont appelés mots-clés. Il y a deux mots-clés dans ce programme : import, qui est utilisé pour inclure un module au programme, et void, qui veut dire « ne retourne rien ».
La liste complète des mots-clés de D est : abstract, alias, align, asm, assert, auto, body, bool, break, byte, case, cast, catch, cdouble, cent, cfloat, char, class, const, continue, creal, dchar, debug, default, delegate, delete, deprecated, do, double, else, enum, export, extern, false, final, finally, float, for, foreach, foreach_reverse, function, goto, idouble, if, ifloat, immutable, import, in, inout, int, interface, invariant, ireal, is, lazy, long, macro, mixin, module, new, nothrow, null, out, override, package, pragma, private, protected, public, pure, real, ref, return, scope, shared, short, static, struct, super, switch, synchronized, template, this, throw, true, try, typedef, typeid, typeof, ubyte, ucent, uint, ulong, union, unittest, ushort, version, void, volatile, wchar, while, with, FILE, MODULE, LINE, FUNCTION, PRETTY_FUNCTION, __gshared, __traits, __vector, et __parameters.
Nous les découvrirons tous dans les chapitres suivants à l'exception de asm et de __vector, qui sortent du cadre de ce livre; delete, typedef, et volatile sont dépréciés; et macro n'est pas utilisé pour le moment.
5-6-8. Exercices▲
- Modifiez le programme pour qu'il affiche autre chose.
- Changez le programme pour qu'il affiche plus d'une ligne.
- Essayez de compiler le programme après avoir apporté d'autres modifications ; par exemple, supprimez le point-virgule à la fin de la ligne qui contient writeln et observez les erreurs de compilation.