Compilation À La Volée vs Interprétation
Fleetingcompilation à 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