ChPr a écrit : ↑ven. 3 janv. 2020 19:27
C'est donc une compilation vers un langage intermédiaire normalisé.
Oui, c’est ça. Ce code Intermédiaire est le meme pour tous les os et toutes les architectures. Ce sont soit des .exe ou des .dll (extensions bien connus de tous les windowsiens).
ChPr a écrit : ↑ven. 3 janv. 2020 19:27
On en arrive donc à la compilation finale : il faut alors un compilateur JIT spécifique à chaque type de processeur.
Exactement. Qui dit langage compilé machine dit obligatoirement compilateur et le JIT n’est rien d’autre qu’un compilateur temps réel très haute performance qui ne connait qu’un seul langage, le CIL (en fait il est bien plus que ça, mais ne chipotons pas).
ChPr a écrit : ↑ven. 3 janv. 2020 19:27
Donc, chaque machine (un PC avec x86, ..., un Raspberry avec son ARM) doit fournir ce JIT propre à son processeur (mais apparemment indépendant de l'OS si j'ai bien compris).
Exactement, mais Il n'est pas indépendant de l'os. Le JIT est déjà compilé pour l'OS et embarque les instructions spécifique pour l'architecture. Il fait le meme boulot que n'importe quel autre compilateur. Si on voulait comparer avec du C par exemple, il faut que chacun de tes programme en C soit compilé pour chaque os et chaque architecture avec un compilateur lui meme compilé pour ce meme ensemble. ici c'est pareil sauf que le JIT compile très vite un seul langage universel (le CIL) a chaque fois qu'il y en a besoin et sans que tu n'est besoin de lui demandé. pour résumer :
Developement sur n'importe quel os/plateforme:
Code Langage (n'importe lequel de compatible) => CIL
Execution sur n'importe quel os/plateforme:
CIL => Compilation à la volée par le JIT Spécifique OS/Plateforme
ChPr a écrit : ↑ven. 3 janv. 2020 19:27
Comment s’appelle-il sur chacune de ces machines, comment savoir s'il existe ?
Il s’appelle tout simplement ‘runtime .net’. Comme je l’ai déjà mentionné, il y a une foule de Framework pour .NET (comme il y a une foule de compilateur en tous poil pour tout). Mais si on enlève les trucs d’intégristes qui ne fonctionnent pas et que l’on se contente de parler de Linux, Mac ou Windows, on a vite fait le tour et il ni en a que 3, à savoir MS .Net Framework, Mono et .Net Core.
Je n’avais pas prévu de faire ici une synthèse de .Net mais si ça intéresse du monde, je peux ouvrir un sujet là-dessus et faire un tableau qui explique qui fait quoi et où se place le PI et les différents autre systèmes dans tout ça (qui est un peut le boxon pour les non initiés il faut bien l'admettre, mais qui finalement est très bien encadré).
Pour Mono, c’est là :
https://www.mono-project.com/download/s ... n-raspbian
A utiliser sur linux et mac si tu veux développer ou faire tourner des applications Desktop Portable (qui peuvent etre développées depuis Windows sans Mono)
(J’ai déjà détaillé une fois la procédure d’install sur ce forum, mais où ? …)
Et pour .Net Core, ça peut etre d’ici :
https://dotnet.microsoft.com/download/dotnet-core/3.1 (Linux arm32 pour Raspbian! ).
Ca c'est pour tout le reste.
J’ai expliqué sommairement en début de post comment installer .Net Core sur le PI et un peu plus loin comment mettre à jour ou ajouter des versions.
ChPr a écrit : ↑ven. 3 janv. 2020 19:27
Existe-t-il un lien automatique entre le fichier CIL et le JIT ?
Ça tu n’as pas à t’en occuper. Le code CIL est créé automatiquement en .exe (ou .dll) quand tu génères ton projets (meme en phase de débogage). le JIT est automatiquement appelé quand tu démarres ton application. Tu peux aussi avoir accès à l’assembleur du langage intermédiaire mais ça concerne surtout les développeurs expérimentés à titre d’analyse ou qui sont à la recherche d’optimisation.
Voila une petite image qui résume le fonctionnement :
La partie noté 'compilation', c'est le développement. Chaque langage est fournie avec son compilateur langage=>CIL
La parti runtime, c'est l'exécution CIL=>Code Native
Il y a une abstraction totale entre 2 en terme d'architecture, et de system . Le seul point de convergence, c'est le CIL
- overview01.jpg (30.87 Kio) Vu 5745 fois
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).