Introduction aux compilateurs C #

Dans l'article C # Compiler, Compiler est un logiciel qui convertit le code source (le code écrit par n'importe quel développeur dans n'importe quel langage) en langage d'apprentissage automatique afin qu'il puisse être compris par le processeur. Le processeur est la partie la plus importante de l'ordinateur qui ne comprend que les codes machine. Il est donc obligatoire de convertir tout code de langue en codes machine.

En C #, nous exécutons les compilateurs, il prend le code comme paramètre d'entrée et effectue un certain traitement, après le traitement, il fournit la sortie dans le langage intermédiaire. Cette sortie est enregistrée dans des fichiers * .dll ou * .exe

Ainsi, après le langage intermédiaire généré, nous avons dû convertir cet IL en codes machine car le processeur ne comprenait que les codes machine. Nous avons donc utilisé CLR (Common Language Runtime) pour cette conversion. CLR est un programme qui s'exécute sur l'ordinateur et modifie le code IL en codes machine à l'aide de Just-In-Time (communément appelé JIT). Lorsque nous avons double-cliqué sur le fichier .exe, le compilateur JIT est appelé et compile le code IL à ce moment-là, c'est pourquoi il est nommé JUST-IN-TIME (JIT).

La compilation peut se faire implicitement ou explicitement. La compilation implicite est une compilation à deux reprises dans laquelle d'abord, elle est compilée IS et ensuite, elle est compilée en langage machine. Ce processus est appelé compilation JIT ou compilation JUST-In-Time. JIT prend en charge plusieurs plates-formes et accélère l'exécution du code.

Types de compilateur juste à temps

Il existe trois compilateurs Just-In-Time différents

1. Compilateur pré JIT

Dans ce compilateur, il n'y a qu'un seul processus de compilation car tout le code source est compilé dans le code natif.

2. Compilateur JIT normal

Dans ce compilateur, seules ces méthodes sont compilées en code machine, qui est requis au moment de l'exécution. Le compilateur compile ces méthodes, les stocke dans le cache et utilise à nouveau la même méthode.

3. Compilateur Econo JIT

Dans ce compilateur, seules ces méthodes sont compilées dans le code machine qui est requis à l'exécution, mais ces méthodes sont supprimées si elles ne sont pas requises. Dans JIT, seule la méthode requise est compilée au moment de l'exécution, par conséquent, elle nécessite moins d'utilisation de la mémoire.

Dans le schéma ci-dessus

1-3 étapes s'exécuteront au moment de la compilation

3-5 étapes s'exécuteront au moment de l'exécution.

Ainsi, lorsque nous exécutons ces deux types d'erreur se produit.

Erreurs d'exécution et erreurs du compilateur

  • Erreurs du compilateur: ce type d'erreur se produit dans le compilateur C # lui-même. Il empêche le code C # de compiler au format .exe. Ces erreurs sont essentiellement survenues en raison d'une erreur de syntaxe.Lorsque nous avons mal orthographié une syntaxe ou manqué la virgule ou le point-virgule, le compilateur n'a pas compris cela, donc il arrête le traitement et génère l'erreur de compilation. Nous pouvons voir ces erreurs dans la fenêtre de sortie d'IDE. Ainsi, en examinant ces erreurs, nous pouvons rectifier notre code.
  • Erreurs d'exécution: il s'agit d'erreurs en temps réel. Ceux-ci se produisent lorsque le code est compilé avec succès mais rencontre des problèmes lors de l'exécution. Cela affecte le comportement du code. Par exemple, nous pouvons dire que lorsque nous essayons de diviser un nombre par zéro à ce moment, une erreur d'exécution se produit. Ces erreurs sont plus fastidieuses que les erreurs du compilateur car dans ce cas, nous devons rectifier le comportement du code.

Type de compilateurs C #

Les compilateurs Microsoft antérieurs étaient nommés .Net Framework comme le compilateur C # 2.0, le compilateur C # 3.5, le compilateur C # 4.x, etc. Ces compilateurs n'étaient pas écrits en C # ou nous pouvons dire que C # n'a pas été compilé par C #. Les autres compilateurs qui ont vu le jour après cela sont:

1. Roslyn

Auparavant, le compilateur était écrit en C / C ++. Roslyn est un compilateur .Net open source dans lequel le code C ++ est remplacé. Il récupère les types d'éléments dans le code, leur relation les uns avec les autres. Comme les équipes C # et VB ont écrit le compilateur, des modèles Visual Studio sont donc disponibles pour les deux. Il nous permet d'écrire du code qui analyse un fichier source et il nous est facile de modifier le code source.

Voici les quatre couches API de Roslyn

  • API de script: cette couche fournit un contexte d'exécution d'exécution et nous permet d'utiliser C # comme langage de script et n'a aucune dépendance sur les composants de Visual Studio.
  • API du compilateur: cette couche est utilisée pour la syntaxe et contient des références pour les assemblys et les fichiers de code source. Cette couche n'a pas non plus de dépendances sur les composants de Visual Studio.
  • API de service: cette couche fournit IntelliSense, le formatage, la recherche de toutes les références, etc. en haut du SDK. Il aide également à gérer les informations sur le projet et à gérer les dépendances du projet.
  • API Workspace: cette couche est principalement destinée à l'analyse de code et à la refactorisation via des IDE. Roslyn facilite le code et se compose d'un ensemble d'API comme le compilateur et le service qui fournit de nombreuses fonctionnalités comme le formatage, Intellisense, etc. Il prend en charge plusieurs langues. Les API Workspace fournissent des informations détaillées sur le code source.

2. Compilateurs mono

Compilateur mono C # basé sur les normes ECMA pour C #. Il a plusieurs versions avec un cadre comme C # 1.0, 2.0, 3.0, 4.0. Le compilateur mono mcs cible le framework 1.1, gmcs le framework 2.0 tandis que smcs et dmcs ciblent le framework 2.1 et 4.0 respectivement.

  • mcs: il prend en charge toutes les fonctionnalités C # 1.1 comme les méthodes anonymes, les types nullables, les tampons fixes, les modificateurs d'accès aux propriétés, les classes statiques, etc.
  • gmcs : il prend en charge les fonctionnalités C # 2.0 comme les expressions de requête, les initialiseurs d'objets, les méthodes partielles, les expressions lambda, les propriétés implémentées automatiquement, etc.
  • dmcs : il prend en charge les fonctionnalités C # 4.0 qui incluent les arguments nommés, la variance de type générique, la liaison dynamique, etc.

L'autre compilateur comme le compilateur RemObjects C # qui suit la norme C # selon la spécification EMCA et à part cela, il existe des compilateurs GNU C # qui implémentent C # et .Net.

Conclusion

Le compilateur C # est comme tout autre compilateur qui compile du code en code machine afin que le processeur puisse comprendre le processus.

Article recommandé

Cela a été un guide pour l'outil d'exploration de données. Nous discutons ici d'une introduction aux compilateurs C # et aux différents types de compilateurs Just-In-Time et de compilateurs C #. Vous pouvez également consulter nos autres articles suggérés pour en savoir plus -

  1. Compilateurs Python
  2. Compilateurs Java
  3. Meilleurs compilateurs C
  4. Meilleurs compilateurs Java
  5. Guide du compilateur PHP
  6. Modificateurs d'accès en PHP