Interprétons la partition

D’un côté, nous avons un programme, soigneusement écrit dans un langage par nos développeurs préférés. De l’autre côté, nous avons le micro-processeur (µp) dont le travail est d’exécuter le programme pour apporter le service à l’utilisateur. Le µp ne fait que traduire les instructions apportées par le programme. Problème, il existe des milliers de µps différents et des milliers de langages. 

La compilation

Le programme doit donc être adapté au µp sur lequel il va s’exécuter. Il doit être préalablement traduit dans un langage dit ‘machine’, ou de première génération. C’est pour cela que le programme est compilé. La compilation traduit le programme en instructions compréhensibles par le µp.  Ainsi, le programme devient utilisable pour l’utilisateur sur son ordinateur. 

Cependant, le compilateur est lui aussi un programme. Il a ses contraintes et n’est pas exempt d’anomalies. De plus, ce programme permet de traduire 1 langage pour 1 type de microprocesseur. Certes le résultat est optimal, mais cette étape doit se répéter à chaque évolution du programme pour chaque type de µp. Diffuser son programme à la Terre entière relève du casse-tête. 

La compilation est donc réservée à des domaines où la performance du programme est importante. Les calculs scientifiques, le minage de crypto-monnaies et les programmes temps réels se font dans ce mode. Les langages de programmation utilisés sont souvent le C et l’assembleur. 

L’interprétation

L’autre solution est donc de réaliser la traduction du programme à la volée. Le programme écrit par le développeur est lu par un programme tiers, l’interpréteur, qui envoie à la volée les instructions au µp. Cette étape évite l’étape de compilation. Le programme n’a donc pas besoin d’être réinterprété en fonction du µp. Le développeur peut modifier et constater le fonctionnement de son application sans étape intermédiaire. 

Le problème de cette solution est qu’elle est coûteuse. En effet, pour exécuter un programme, il faut qu’un autre programme s’exécute et traduise chaque ligne du programme attendu. Un programme compilé s’exécutera 100 fois plus vite qu’un programme interprété. 

L’interprétation est utilisée pour des programmes dont on ne connaît pas la plateforme de destination. C’est le cas des programmes des sites internet. Le javascript et le CSS sont des langages interprétés. Toujours pour internet, le PHP s’est imposé côté serveur. Le postScript est un langage utilisé pour imprimer vos documents. 

La machine virtuelle

Il existe donc une troisième voie : la machine virtuelle. L’idée est d’optimiser l’étape d’interprétation. Ainsi on conserve l’avantage d’un programme écrit sur une plateforme et exécutable partout. Pour cela, le programme va être traduit dans un langage intermédiaire compréhensible par une machine virtuelle. Cette machine est un interpréteur optimisé. Ainsi le coût d’exécution est largement diminué. 

En apparence, on retrouve l’étape de compilation. Mais cette fois-ci, la traduction réalisée ne dépend pas du µp. Ainsi, une fois compilée, le programme peut être exécuté partout à travers la machine virtuelle. 

Les machines virtuelles sont utilisées pour la plupart des applications de gestion et dans les téléphones intelligents. Leur utilisation simplifie le travail des développeurs tout en conservant des performances acceptables. Si Java est le langage le plus connu, il existe bien d’autres machines virtuelles (.Net, Progress, …)

Conclusion 

Dans ces explications, je pars du postulat que compilateurs, interpréteurs, machines virtuels et µps sont exempts de tous défauts. S’il est possible d’intervenir sur des programmes (logiciels), une erreur sur un µp (matériel) n’était pas modifiable. Depuis peu, les fonctions défaillantes d’un µp peuvent être désactivées. 
Quoi qu’il en soit, pour qu’un programme s’exécute parfaitement, il doit être testé en amont. C’est pour cela que les tests représentent de nos jours une part importante du développement informatique. Et l’adage ‘Ça compile, donc c’est bon !’ relève du mauvais développeur. Pensez aux tests.

Partager l'article !!

J’ai de la chance !!!