7. Compilateur▲
Nous avons vu que les deux outils les plus utilisés en programmation D sont l'éditeur de texte et le compilateur. Les programmes D sont écrits dans des éditeurs de texte.
Le concept de compilation et le rôle du compilateur doivent aussi être compris lors de l'utilisation de langages compilés tels que le D.
7-1. Code machine▲
Le cerveau de l'ordinateur est son microprocesseur (ou le CPU : Central Processing Unit, ce qui veut dire « unité centrale de traitement »). Dire au CPU ce qu'il doit faire est appeler « coder » et les instructions qui sont utilisées pour le faire sont appelées « code machine ».
La plupart des architectures de CPU utilisent du code machine (des instructions) spécifique. Ces instructions sont déterminées par des contraintes matérielles pendant la conception de l'architecture. Au plus bas niveau, ces instructions sont implémentées comme des signaux électriques. Parce que la facilité de codage n'est pas la première préoccupation à ce niveau, écrire directement des programmes sous forme de code machine est une tâche très difficile.
Ces instructions sont des nombres spéciaux, qui représentent des opérations diverses prises en charge par le CPU. Par exemple, pour un CPU 8-bit fictif, le nombre 4 pourrait représenter l'opération de chargement, le nombre 5 l'opération de stocker et le nombre 6 l'opération d'incrémenter. En supposant que les 3 bits de gauche sont le numéro d'opération et que les 5 bits de droite sont la valeur utilisée dans cette opération, un simple programme en code machine pour ce CPU pourrait ressembler à ceci :
Opération |
Valeur |
Signification |
|
---|---|---|---|
100 |
11110 |
LOAD |
11110 |
101 |
10100 |
STORE |
10100 |
110 |
10100 |
INCREMENT |
10100 |
'000 |
00000 |
PAUSE |
Le code machine est si proche du matériel qu'il n'est pas adapté pour représenter des idées de plus haut niveau comme une carte de jeu ou une inscription d'étudiant.
7-2. Langage de programmation▲
Les langages de programmation sont conçus comme des moyens efficaces de programmer un CPU, capables de représenter des concepts de plus haut niveau. Ils n'ont pas a s'occuper des contraintes matérielles ; leurs buts principaux sont la facilité d'utilisation et leur expressivité. Ils sont plus faciles à comprendre pour des humains et plus proches des langages naturels :
if
(
une_carte_a_ete_jouee
(
)) {
afficher_la_carte
(
);
}
Cependant, les langages de programmation suivent des règles bien plus strictes et formelles que n'importe quel langage parlé.
7-2-1. Langages compilés▲
Dans certains langages de programmation, les instructions du programme doivent être compilées avant de devenir un programme que l'on pourra exécuter. De tels langages produisent des programmes rapides à l'exécution, mais le processus de développement implique deux étapes principales : écrire le programme et le compiler.
En général, les langages compilés aident à repérer les erreurs de programmation avant même que le programme commence son exécution.
D est un langage compilé.
7-2-2. Langages interprétés▲
Certains langages de programmation ne nécessitent pas de compilation. De tels langages sont appelés langages interprétés. Les programmes peuvent être exécutés directement à partir du programme écrit à la main. Quelques exemples de langages interprétés : Python, Ruby, Perl. Puisqu'il n'y a pas d'étape de compilation, le développement est plus facile en utilisant ces langages. D'un autre côté, comme les instructions du programme doivent être analysées pour être interprétées à chaque fois que le programme est exécuté, les programmes écrits dans ces langages sont plus lents que leurs équivalents écrits en langages compilés.
En général, pour un langage interprété, beaucoup de types d'erreurs ne peuvent pas être découverts avant l'exécution du programme.
7-2-3. Compilateur▲
Le rôle d'un compilateur est la traduction : il traduit le programme écrit dans un langage de programmation en code machine. C'est la traduction depuis le langage du programmeur vers le langage du CPU. Cette traduction est appelée compilation. Chaque compilateur comprend un langage de programmation particulier et est présenté comme un compilateur de ce langage, comme dans « un compilateur D ».
7-2-4. Erreur de compilation▲
Comme le compilateur compile un programme selon les règles du langage, il arrête la compilation dès qu'il rencontre une instruction illégale. Les instructions illégales sont celles qui sont hors des spécifications du langage. Des problèmes comme des parenthèses non fermées, un point-virgule manquant, un mot-clé mal orthographié, etc. sont des causes d'erreurs de compilation.
Le compilateur peut aussi émettre un avertissement lors de la compilation s'il rencontre un bout de code douteux qui peut poser problème, mais qui n'est pas forcément une erreur. Cependant, les avertissements indiquent presque toujours une erreur ou un mauvais style, il est donc monnaie courante de considérer la plupart des avertissements (sinon tous) comme des erreurs.