La traduction en langage machine
Notion de "code source"
Lorsque l'on dispose d'un programme exécutable par un ordinateur, on dispose de la traduction en binaire du programme rédigé en langage de haut niveau.
Le texte du programme en langage de haut niveau est appelé "code source".
Un logiciel "Open Source" est un programme pour lequel on dispose du code source.
Un logiciel "fermé" est un programme qui est la propriété d'une personne ou d'une société qui ne souhaite pas diffuser le code source.
Il est extrêmement difficile de reconstituer le code source à partir du code binaire. Si l'on souhaite pouvoir réaliser des modifications au programme, il est presque indispensable de disposer du code source.
Si l'on dispose du code source d'un programme, il est toujours possible d'étudier son fonctionnement et de le modifier en cas de besoin.
Le compilateur
Le code source d'un programme doit être traduits en langage machine. Ce travail est réalisé par un programme spécialisé appelé compilateur.
Il existe un grand nombre de compilateurs. Chacun est spécialisé dans le traitement de l'un ou l'autre langage évolué.
Un texte écrit dans un langage doit être compilé à l'aide d'un compilateur approprié à ce langage précis.
Un texte écrit en langage C doit être compilé par un compilateur C.
Un texte écrit en langage C doit être compilé par un compilateur C.
Les interpréteurs
Dans certains langages, le code source n'est pas préalablement traduit en langage machine par un compilateur.
Dans ce cas, la transformation en langage machine se fait au moment de l'exécution du programme : un interpréteur traduit le programme, ligne par ligne.
Le langage Python est un langage interprété.
Comme pour les langages compilés, il est nécessaire de disposer d'un interpréteur approprié pour chaque langage utilisé. Un programme écrit en langage Python doit être traité par un interpréteur Python.
Quand une ligne du programme doit être exécutée un grand nombre de fois, l'interpréteur la traduit autant de fois qu'elle est exécutée. Il en résulte une perte de temps et donc une moins grande rapidité des programmes en langage interprété par rapport aux langages compilés.
Par contre, il est plus rapide d'exécuter quelques lignes de programme afin de les tester dans un langage interprété.