|
Mashiro
|
Bonjour à tous ! Je vous propose un petit post dédié à nos amis les Compilateurs ainsi qu'à leur cousin les
Interpréteur.
Que serait nos codes sources sans ces programmes que nous galérons tant à installer ? (Du moins sa à été le cas pour moi =w=') Je vais donc essayer de donner un peu de mon âme à l'écriture de ce sujet et n'hésité pas à commenter et déballer tout ce que vous savez sur le sujet ! <3 Nos ordinateurs sont des machines bizarre, c'est le moins que l'on puisse dire. On ne peut s'adresser à eux qu'en leurs envoyant des 0 et des 1. Ainsi, si je traduis « Fais le calcul 3 + 5 » en langage informatique, ça pourrait donner quelque chose comme (j'invente, je ne connais quand même pas la traduction informatique par cœur) : 0010110110010011010011110 Ce que vous voyez là, c'est le langage informatique de votre ordinateur, appelé langage binaire (retenez bien ce mot !). Votre ordinateur ne connaît que ce langage-là et, comme vous pouvez le constater, c'est absolument incompréhensible. Donc voilà notre premier vrai problème : Comment parler à l'ordinateur plus simplement qu'en binaire avec des 0 et des 1 ? Nos ordinateur ne parle pas l'anglais et encore moins le français. Pourtant, il est inconcevable d'écrire un programme en langage binaire. Même les informaticiens les plus fous ne le font plus, c'est vous dire ! (Bon ok à part peut-être quelque cas...#Interstellar) Eh bien l'idée que les informaticiens ont eue, c'est d'inventer de nouveaux langages qui seraient ensuite traduits en binaire pour l'ordinateur. Le plus dur à faire, c'est de réaliser le programme qui fait la « traduction ». Heureusement, ce programme a déjà été écrit par des informaticiens et nous n'avons plus besoin de les faire (ouf !). On va au contraire s'en servir pour écrire des phrases comme : « Fais le calcul 3 + 5 » qui seront traduites par le programme de « traduction » en quelque chose comme : « 0010110110010011010011110 ». Le schéma suivante résume ce que je viens de vous expliquer. ![]() La première case est « Votre programme est écrit dans un langage simplifié ». Ce fameux « langage simplifié » est appelé en fait langage de haut niveau. Il existe plusieurs niveaux de langages. Plus un langage est haut niveau, plus il est proche de votre vraie langue (comme le français). Un langage de haut niveau est donc facile à utiliser, mais se n'est pas le sujet de ce post donc nous ne nous y attarderons pas. Venons-en au « programme de traduction » qui traduit notre langage de haut niveau (comme le C) en binaire. Ce programme a un nom : on l'appelle le compilateur. La traduction, elle, s'appelle la compilation. Très important : il existe un compilateur différent pour chaque langage de haut niveau. C'est d'ailleurs tout à fait logique : les langages étant différents, on ne traduit pas le C de la même manière qu'on traduit le Delphi. Enfin, le programme binaire créé par le compilateur est appelé l'exécutable. C'est d'ailleurs pour cette raison que les programmes (tout du moins sous Windows) ont l'extension « .exe » comme EXEcutable. Reprenons notre schéma précédent, et utilisons cette fois des vrais mots tordus d'informaticien
L'interpréteur c'est un peu la même chose, à la différence qu'au lieu de traduire le code
source dans un langage binaire et créé un EXEcutable, il va traduire les codes sources
instruction par instruction et soumettre chaque instruction traduite directement au processeur
pour exécution :![]() Mais pourquoi existe-t'il deux type de traducteur ? Un seul suffirait largement non ? Hé bien la vérité est un peu plus compliqué : en effet chaque « traducteur » à ses avantages et ses inconvénients de plus, comme je l'ai mentionné plus haut « il existe un compilateur différent pour chaque langage » et il en va de même pour les interpréteur, du moins il existe des langage interprété et de langage compilé. Interpréteur V.s. Compilateur Un langage interprété est adapté pour le développement rapide et le prototypage :
Un langage compilé est préférable pour la réalisation d'applications efficaces et/ou de grande envergure :
Dans ces langages il y en a certain qui ne sont que compilé et jamais interprété (C, C++, Pascal, ADA) ; d'autre ne sont qu'interprété (Prolog). Bien sur, comme partout il existe des exceptions : Certains langages (LISP par exemple) peuvent être indifféremment interprété ou compilé ; ou bien encore certains sont semi-compilés (par exemple Java, V-Pascal) : je passerai les détails complexe mais l'idée est de rendre le programme indépendant de la plateforme. | |||||||||||
|
Encycliopedia
|
Bonne initiative, un sujet clair et concis pouvant être compris par un grand nombr/e.
Je me propose de compléter un peu ta partie « Interpréteur V.s. Compilateur » avec quelque informations supplémentaire :
Je poste un lien vers l'histoire des langages que j'ai développé si ça t'interesse. |