Konubinix' opinionated web of thoughts

Compilation À La Volée vs Interprétation

Fleeting

compilation à la volée vs interprétation.

C’est quoi le lien/la différence entre la compilation à la volée (https://fr.wikipedia.org/wiki/Compilation_%C3%A0_la_vol%C3%A9e) et un interprète (langage interprétée) (https://fr.wikipedia.org/wiki/Interpr%C3%A8te_(informatique)) ?

==========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

image Konubinix J’ai toujours du mal à faire des comparaisons de ce genre

image Konubinix C’est un peu comme la différence/lien entre un marteau et une clé anglaise pour moi :-)

image Konubinix edited_at: 2021-05-21 09:45:24 Dans mon modèle mentale, la compilation à la volée, c’est un mécanisme de réécriture du code machine au fur et à mesure que le code tourne

image Konubinix Et l’intérprètation, c’est la capacité d’un programme à exécuter ton code au fur et à mesure que tu lui donne

image Konubinix Arf, en écrivant ça, je pense que je vois mieux la question

image Konubinix Quand il y a intérprétation dans le contexte d’un langage compilé, il y a effectivement compilation avant exécution

image Konubinix Pour rappel, « compilation == transformation d’un language vers un autre »

image Konubinix edited_at: 2021-05-21 10:03:55 J’ai seulement entendu compilation à la volée pour des programmes qui s’exécutaient et re compilaient le code en cours de route

image Konubinix Genre dans la JVM, qui se rendait compte qu’on ne rentrait pas dans certaines boucles et du coup optimisait le code pour les cas où on ne rentre pas dedans

image Konubinix Ou pypy, qui me semble fait aussi des trucs du genre

image Konubinix En lisant la page wikipédia, je vois que je dis n’importe quoi

image Konubinix On dirait que la compilation à la volée fait de la compilation bytecode -> langage machine

image Konubinix C’est plus cohérent. Je me demandais justement comment il optimise ton code pendant l’exécution où en théorie il n’a plus ton code sous la main

image Konubinix Du coup, c’est encore plus différent de intérprétation que ce que je pensait

image Konubinix Déjà, l’interprétation n’implique pas compilation

image Konubinix Par exemple, bash interprète tes commandes mais (j’ai pas regardé, mais je me sens confiant, à hauteur de 8/11) ne les compile pas

image Konubinix Mais l’interprète peut effectivement avoir besoin de compiler ton code en bytecode comme python le fait (indice de confiance 7/11. Peut être qu’il fait autrement, mais ça me paraît tiré par les cheveux de faire autrement)

image Konubinix edited_at: 2021-05-21 10:13:30 Du coup, l’interprète peut vouloir compiler « code humain -> bytecode » quand tu lui donnes le code alors que la compilation à la volée compile « bytecode -> code machine »

image Konubinix On dirait que python compile bien ton code au fur et à mesure que tu lui donne

image Konubinix

https://nedbatchelder.com/blog/201803/is_python_interpreted_or_compiled_yes.html

Is Python interpreted or compiled? Yes.
A common question: “Is Python interpreted or compiled?” Usually, the asker has a simple model of the world in mind, and as is typical, the world is more complicated.

image Konubinix En résumé, • interpréter, c’est juste lire le code humain pour exécuter les instructions, indépendemment de si le code a besoin d’être transformé dans un autre langage (aka. compilation) • compiler à la volée, c’est transformer du code de machine virtuelle en code natif au fur et à mesure qu’on exécute le code de la machine virtuelle