Qu’est ce que : Définition de la compilation
Contents
- 1 Qu’est ce que : Définition de la compilation
- 1.1 La compilation est le processus par lequel un programme écrit dans un langage de haut niveau est traduit en code machine utilisé par une architecture informatique donnée pour une exécution directe.
- 1.2 En outre, nous devons également tenir compte des différents systèmes d’exploitation, même si nous travaillons pour la même plate-forme matérielle, car chacun d’eux a une manière différente d’interagir avec la machine physique.
- 1.3 Le processus de compilation suit une série d’étapes, comme la détection des erreurs syntaxiques dans le code source, puis un prétraitement pour connaître les ressources nécessaires au programme, et enfin la liaison avec les bibliothèques et les ressources nécessaires à son exécution.
- 1.4 Le processus de compilation est réalisé à l’aide d’un ou plusieurs outils spécifiques (compilateur), bien qu’il soit courant que celui-ci soit intégré aux environnements de développement (IDE), ce qui facilite son utilisation.
- 1.5 Les langues interprétées sont des langues qui sont traduites au moment de l’exécution, et non compilées.
- 1.6 Les langages de programmation qui s’exécutent sur une couche de virtualisation (machine virtuelle) nécessitent un processus intermédiaire similaire à la compilation, mais qui aboutit à un code qui n’est pas directement exécutable, bien que plus optimisé que celui exécuté par un langage interprété.
Comment pouvons-nous comprendre quelqu’un avec qui nous n’avons aucune langue en commun ? Par le biais d’un traducteur. Cette fonction de traduction est ce que fait un compilateur pour convertir le code source écrit par un programmeur en code exécutable.
La compilation est le processus par lequel un programme écrit dans un langage de haut niveau est traduit en code machine utilisé par une architecture informatique donnée pour une exécution directe.
Par conséquent, et selon l’explication que nous venons de donner, ce système nécessite le choix d’une architecture cible, qui peut être différente dans chaque cas et qui nous obligera à compiler séparément pour chacune des différentes architectures sur lesquelles nous voulons que notre programme s’exécute.
Ainsi, par exemple, nous pouvons exécuter un programme donné pour une architecture x86 32 bits, x86 64 bits, PowerPC ou ARM, en faisant également la différence entre 32 bits et 64 bits, selon le type de périphérique sur lequel nous voulons l’exécuter.
–
En outre, nous devons également tenir compte des différents systèmes d’exploitation, même si nous travaillons pour la même plate-forme matérielle, car chacun d’eux a une manière différente d’interagir avec la machine physique.
Prenons l’exemple de la plate-forme x86 64 bits. Nous pouvons vouloir compiler pour Windows, GNU/Linux ou macOS, ou pour chacun d’entre eux, ce qui implique trois processus de compilation distincts.
Parfois, cela nous oblige à modifier légèrement le code source, en maintenant souvent trois versions distinctes (ou plus, selon le cas) afin de les faire interagir correctement avec les particularités et les différences de la plate-forme cible.
Le processus de compilation suit une série d’étapes, comme la détection des erreurs syntaxiques dans le code source, puis un prétraitement pour connaître les ressources nécessaires au programme, et enfin la liaison avec les bibliothèques et les ressources nécessaires à son exécution.
De cette manière, un fichier exécutable est créé qui contient toutes les ressources nécessaires à son exécution, ainsi que les instructions nécessaires pour accéder aux ressources externes, telles que les bibliothèques de code partagé.
Le processus de compilation est réalisé à l’aide d’un ou plusieurs outils spécifiques (compilateur), bien qu’il soit courant que celui-ci soit intégré aux environnements de développement (IDE), ce qui facilite son utilisation.
Chaque langage de programmation possède son propre compilateur, même si depuis quelque temps, le compilateur correspondant à un langage et à un environnement est capable de générer des exécutables pour plusieurs plateformes logicielles différentes.
Existe-t-il une alternative au processus de compilation ? Oui, et il s’agit de langues interprétées.
Les langues interprétées sont des langues qui sont traduites au moment de l’exécution, et non compilées.
Par conséquent, leur code source est toujours disponible, et ce dont ils ont besoin, c’est que dans le système d’exploitation sur lequel ils fonctionnent, il y ait un interprète.
En évitant le processus de compilation, si l’interpréteur est disponible pour plusieurs plates-formes, il sera possible d’exécuter le programme directement sur chacune d’entre elles, généralement sans modifications.
Une autre approche, à mi-chemin entre les langages compilés et interprétés, est celle des langages qui nécessitent une machine virtuelle pour fonctionner, par exemple Java.
Les langages de programmation qui s’exécutent sur une couche de virtualisation (machine virtuelle) nécessitent un processus intermédiaire similaire à la compilation, mais qui aboutit à un code qui n’est pas directement exécutable, bien que plus optimisé que celui exécuté par un langage interprété.
Dans ces cas, un processus similaire dans sa forme à celui de la compilation est requis, mais qui donne un résultat différent et nécessite toujours, dans tous les cas, l’installation d’un runtime sur le système d’exploitation sur lequel nous voulons exécuter notre programme.