Introduzione ai compilatori C #

Nell'articolo C # Compiler, Compiler è un programma software che converte il codice sorgente (il codice scritto da qualsiasi sviluppatore in qualsiasi lingua) in linguaggio di apprendimento automatico in modo che possa essere compreso dal processore. Il processore è la parte più importante del computer che comprende solo i codici macchina. Quindi è obbligatorio convertire qualsiasi codice di lingua in codici macchina.

In C # eseguiamo i compilatori, prende il codice come parametro di input ed esegue alcune elaborazioni, dopo l'elaborazione fornisce l'output nella lingua intermedia. Questo output viene salvato in file * .dll o * .exe

Quindi, dopo il linguaggio intermedio generato, abbiamo richiesto di convertire questo IL in codici macchina perché il processore ha capito solo i codici macchina. Quindi abbiamo usato CLR (Common Language Runtime) per questa conversione. CLR è un programma che viene eseguito sul computer e modifica il codice IL in codici macchina con l'aiuto di Just-In-Time (comunemente chiamato JIT). Quando abbiamo fatto doppio clic sul file .exe, il compilatore JIT viene richiamato e compila il codice IL in quella parte del tempo, quindi è per questo che si chiama JUST-IN-TIME (JIT).

La compilazione può essere eseguita in modo implicito o esplicito. La compilazione implicita è due volte nella quale prima viene compilata IS e, successivamente, viene compilata in linguaggio macchina. Questo processo si chiama compilazione JIT o compilation JUST-In-Time. JIT supporta più piattaforme e accelera l'esecuzione del codice.

Tipi di compilatore just-in-time

Esistono tre diversi compilatori Just-In-Time

1. Compilatore pre JIT

In questo compilatore, esiste un solo processo di compilazione poiché l'intero codice sorgente viene compilato nel codice nativo.

2. Compilatore JIT normale

In questo compilatore, solo questi metodi vengono compilati nel codice macchina, necessario in fase di esecuzione. Il compilatore compila questi metodi, li memorizza nella cache e ha usato nuovamente lo stesso metodo.

3. Compilatore Econo JIT

In questo compilatore, solo questi metodi vengono compilati nel codice macchina richiesto in fase di esecuzione, tuttavia questi metodi vengono rimossi se non richiesti. In JIT, solo il metodo richiesto viene compilato in fase di esecuzione, pertanto richiede meno utilizzo della memoria.

Nel diagramma sopra

1-3 passaggi verranno eseguiti al momento della compilazione

3-5 passaggi verranno eseguiti in fase di esecuzione.

Quindi, quando eseguiamo questi due tipi di errore si verifica.

Errori di runtime ed errori del compilatore

  • Errori del compilatore: questo tipo di errore si verifica nel compilatore C # stesso. Impedisce la compilazione del codice C # in formato .exe. Questi errori si verificano sostanzialmente a causa dell'errore di sintassi, quando abbiamo sbagliato l'ortografia di una sintassi o mancata la virgola o il punto e virgola, il compilatore non l'ha capito, quindi interrompe l'elaborazione e genera l'errore di compilazione. Possiamo vedere questi errori nella finestra di output di IDE. Quindi esaminando questi errori possiamo correggere il nostro codice.
  • Errori di runtime: si tratta di errori in tempo reale. Questi si verificano quando il codice viene compilato correttamente ma si verificano problemi durante l'esecuzione. Ciò influisce sul comportamento del codice. Ad esempio, possiamo dire quando proviamo a dividere qualsiasi numero con zero in quel momento si verifica un errore di runtime. Questi errori sono più noiosi degli errori del compilatore perché in questo caso è necessario correggere il comportamento del codice.

Tipo di compilatori C #

I compilatori Microsoft precedenti erano denominati .Net Framework come compilatore C # 2.0, compilatore C # 3.5, compilatore C # 4.x, ecc. Questi compilatori non erano scritti in C # o possiamo dire che C # non era compilato da C #. Gli altri compilatori che sono nati dopo questo sono:

1. Roslyn

In precedenza il compilatore era stato scritto in C / C ++. Roslyn è un compilatore .Net open source in cui viene sostituito il codice C ++. Recupera i tipi di elementi nel codice, la loro relazione reciproca. Poiché i team di C # e VB hanno scritto il compilatore, quindi, i modelli di Visual Studio sono disponibili per entrambi. Ci permette di scrivere codice che analizza un file sorgente ed è facile per noi modificare il codice sorgente.

I seguenti sono i quattro livelli API di Roslyn

  • API di scripting: questo livello fornisce un contesto di esecuzione di runtime e ci consente di utilizzare C # come linguaggio di scripting e non ha dipendenze dai componenti di Visual Studio.
  • API del compilatore: questo livello viene utilizzato per la sintassi e contiene riferimenti per assiemi e file di codice sorgente. Questo livello non ha inoltre dipendenze dai componenti di Visual Studio.
  • API di servizio: questo livello fornisce IntelliSense, formattazione, Trova tutti i riferimenti, ecc. Nella parte superiore dell'SDK. Aiuta anche a gestire le informazioni sul progetto e gestire le dipendenze del progetto.
  • API dello spazio di lavoro: questo livello è principalmente per l'analisi del codice e il refactoring tramite IDE. Roslyn semplifica il codice ed è costituito da un insieme di API come compilatore e servizio che fornisce molte funzionalità come formattazione, Intellisense, ecc. Fornisce supporto per più lingue. Le API dell'area di lavoro forniscono informazioni approfondite sul codice sorgente.

2. Compilatori mono

Compilatore Mono C # basato su standard ECMA per C #. Ha più versioni con un framework come C # 1.0, 2.0, 3.0, 4.0. Il compilatore mono mcs si rivolge al framework 1.1, gmcs si rivolge al framework 2.0 mentre rispettivamente smcs e dmcs si rivolgono al framework 2.1 e 4.0.

  • mcs: supporta tutte le funzionalità di C # 1.1 come metodi anonimi, tipi nullable, buffer fissi, modificatori di accesso su proprietà, classi statiche, ecc.
  • gmcs : supporta funzionalità di C # 2.0 come espressioni di query, inizializzatori di oggetti, metodi parziali, espressioni lambda, proprietà implementate automaticamente, ecc.
  • dmcs : supporta le funzionalità di C # 4.0 che includono argomenti denominati, varianza di tipo generico, associazione dinamica, ecc.

L'altro compilatore come RemObjects C # compilatore che segue lo standard C # secondo le specifiche EMCA e oltre a questo ci sono compilatori GNU C # che implementano C # e .Net.

Conclusione

Il compilatore C # è proprio come qualsiasi altro compilatore che compila il codice in codice macchina in modo che il processore possa comprendere il processo.

Articolo raccomandato

Questa è stata una guida allo strumento di data mining. Qui discutiamo un'introduzione ai compilatori C # e ai diversi tipi di compilatore Just-In-Time e compilatori C #. Puoi anche consultare i nostri altri articoli suggeriti per saperne di più -

  1. Compilatori Python
  2. Compilatori Java
  3. I migliori compilatori C.
  4. I migliori compilatori Java
  5. Guida al compilatore PHP
  6. Modificatori di accesso in PHP

Categoria: