Compilation informatique : définition concrète et rôle
Un compilateur informatique est un programme qui traduit le code source (compréhensible par les humains) en code binaire (compréhensible par les machines). Le but étant de générer un programme exécutable par un ordinateur.
Qu'est-ce que la compilation en informatique ?
La compilation informatique désigne le procédé de traduction d’un programme, écrit et lisible par un humain, en un programme exécutable par un ordinateur. De façon plus globale, il s’agit de la transformation d’un programme écrit en code source, en un programme transcrit en code cible, ou binaire. Habituellement, le code source est rédigé dans un langage de programmation (langage source), il est de haut niveau de conception et facilement accessible à un utilisateur. Le code cible, quant à lui, est transcrit en langage de plus bas niveau (langage cible), afin de générer un programme exécutable par une machine.
Quel rôle joue un compilateur ?
Un compilateur est un sous-programme d’un langage de programmation. Il a pour rôle de rechercher toutes les erreurs possibles dans un programme source, telles que des fautes d’orthographe, les variables, les types, etc.
Quelles sont les étapes de compilation d'un programme ?
Un programme se compile selon une série d’étapes :
- le prétraitement : il intervient avant toute analyse, pour savoir comment traiter les informations ;
- l’analyse lexicale : elle divise le code source en petits morceaux : les tokens (les jetons). Chaque token a une unité lexicale unique de la langue (ou lexème), tel qu’un identifiant, un symbole ou un mot-clé par exemple. Cette étape est aussi nommée le lexing ou balayage, car le programme qui exécute cette analyse lexicale peut se nommer scanner ou analyseur lexical ;
- l’analyse syntaxique : elle analyse la séquence des tokens pour reconnaître la structure syntaxique du programme. On modifie la syntaxe linéaire des tokens par une structure en arborescence, générée selon la grammaire formelle qui détermine la syntaxe du langage. L’arborescence est fréquemment modifiée et améliorée pendant la compilation ;
- l’analyse sémantique : le compilateur, durant cette étape, complète l’arborescence par des informations sémantiques et érige la table des symboles. Cette phase teste les erreurs de type, ou une tâche définie (telles que les variables locales), ou l’objet de liaison, et peut même dispenser des avertissements ou rejeter des programmes inexacts ;
- la modification du code source en code intermédiaire ;
- l’optimisation du code intermédiaire, en rendant le programme plus performant selon son usage ;
- l’allocation de registre avec la génération de codes et la traduction du code intermédiaire en code cible ;
- l’édition des liens, pour finir.
Jusqu’à l’optimisation du code intermédiaire, ces étapes sont dites "frontales". Les deux dernières phases correspondent à la partie finale. L’informatique restant en perpétuelle évolution, la compilation informatique est, elle aussi, en constante transformation.