Compilateurs et interpréteurs
Comment passer du code à un programme utilisable ?
Comment ça marche un ordinateur ?
Processeur, données et instructions
- Le processeur à un set d'instructions simples (X86 , ARM , etc...)
- Il peut éxécuter ces instructions sur des données en mémoire
- Tout est binaire
- Données en mémoire
- Instructions (language machine)
Exécuter un programme
- C'est un fichier dit éxécutable
- Liste d'instructions à suivre
- Processeur traite/lit le fichier
- Premiers logiciels ont été créés directement en instructions binaires
Ca a l'air compliqué de créer des logiciels comme ça.
Languages compilés
- Ecrire du code plus lisible par un humain
- Code transformé en instructions
- Un ou plusieurs fichiers textes sont transformé en fichier exécutable
- Programme spécial : le compilateur
Assembleur
Langage du plus bas niveau lisible par un humain
Très proche du language machine
Tu es sur que c'est plus simple ?
Languages haut niveau
- Beaucoup plus lisible par un humain
- Exemples
- C/C++ (gcc)
- fortran
- go
- rust
Les compilateurs
sont eux mêmes des programmes compilés
souvent d'abord écrit dans un language plus ancien
Puis récrit dans le même language
Caractéristiques des Languages compilés
plus rapides et efficient
nécessite un temps de compilation
Doit être compiler pour chaque plateforme
la compilation peut échouer
Languages interprétés
- Programme spécial : l'interpreteur
- Le programme éxécuté c'est l'interpreteur
- Code transformé en instructions par l'interpreteur à la volée
- Exemples
Les interpréteurs
sont eux mêmes des programmes compilés
souvent écrits dans un language différent
Exemple: PHP est écrit en C
Caractéristiques des languages interprétés
plus lents à l'éxécution
plus facilement multi-plateforme
l'éxécution peut être stoppée pour débugger
Hybrides
Une première étape de compilation
Une deuxième étape interprétée
Exemples
De quelle catégorie fait partie
Systemes d'exploitation
Programme un peu a part
Souvent doit être compilé par rapport au matériel