Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

C SHARP compilato o interpretato?

738 views
Skip to first unread message

Piero

unread,
Mar 13, 2011, 5:14:33 AM3/13/11
to
Buongiorno a tutti,
voglio chiedervi se C SHARP � un linguaggio compilato(ovvero si possono
scrivere programmmi che dialogano direttamente con il processore,cio� senza
sistema operativo)oppure se � un linguaggio interpretato(cio� che dialoga
solo con il sistema operativo presente nel calcolatore,tipo JAVA,PHP,ASP ect
ect).
Personalmente credo che C SHARP si� un linguaggio interpretato ma non ne
sono sicuro al 100%.
Grazie per una eventuale risposta.


Raffaele Rialdi [MVP]

unread,
Mar 13, 2011, 5:45:20 AM3/13/11
to
Piero wrote:
> Buongiorno a tutti,
> voglio chiedervi se C SHARP è un linguaggio compilato(ovvero si possono
> scrivere programmmi che dialogano direttamente con il processore,cioè senza
> sistema operativo)oppure se è un linguaggio interpretato(cioè che dialoga
> solo con il sistema operativo presente nel calcolatore,tipo JAVA,PHP,ASP ect
> ect).
> Personalmente credo che C SHARP sià un linguaggio interpretato ma non ne sono
> sicuro al 100%.
> Grazie per una eventuale risposta.

È compilato.
Il compilatore csc di C# compila in formato "IL" che significa
"Intermediate Language" un linguaggio che è facilmente traducibile
(quasi 1:1) con la maggior parte di assembly language delle cpu
attuali.

Quando l'assembly (la dll/exe che contiene codice IL) viene eseguita
sul PC avviene una seconda compilazione a cura del JIT (just in time
compiler) che traduce molto velocemente il codice IL nell'assembly
della CPU sulla quale sta per essere eseguito.
Il vantaggio di questa compilazione finale è di poter utilizzare al
meglio le specificità della CPU su cui sta per essere eseguito (per
esempio x32 x64, oppure istruzioni che esistono solo in CPU di ultima
generazione)
Il JIT compila solo i metodi eseguiti (non tutto l'exe) e ovviamente
una sola volta.

Se vuoi evitare anche il passo del JIT (in alcuni casi è desiderabile,
ma spesso è inutile) puoi eseguire il precompilatore ngen che crea
direttamente il codice assembler finale senza più avere la necessità di
quello che fa il JIT (addirittura non viene neppure caricato il codice
del compilatore JIT in memoria).
Questo step è possibile in queste condizioni:
- ngen deve essere eseguito sempre e solo sulla macchina su cui verrà
avviata l'applicazione
- ad ogni cambio di versione ngen deve essere rifatto
- l'assembly originale (quello con il codice IL) deve essere sul pc
perché contiene il manifest e altri metadati indispensabili
all'esecuzione

Per verificare il tempo e il numero di compilazioni del JIT è
sufficiente usare perfmon e misurare l'attività del JIT


Su molti tipi di algoritmi un listato C# può anche essere più
performante rispetto a codice C/C++.
La prima causa di mancanza di performance di C# rispetto a C/C++ è il
marshalling di memoria durante operazioni di interoperabilità (COM/API
native, etc.) e non di 'esecuzione' in quanto tale.

L'unica piattaforma sulla quale C# è invece interpretato è il Micro
Framework (destinato a CPU sui 100MHz senza MMU) ma qui l'architettura
è molto diversa anche perché HAL, PAL e CLR fanno anche da sistema
operativo.

--
Raffaele Rialdi http://www.iamraf.net
Weblog: http://blogs.ugidotnet.org/raffaele
Microsoft MVP profile
https://mvp.support.microsoft.com/profile/raffaele
UGIdotNET - http://www.ugidotnet.org/


Piero

unread,
Mar 13, 2011, 12:01:20 PM3/13/11
to
Grazie Raffaele,una risposta piů esauriente e chiara di questa non la potevo
trovare.Complimenti per il Web log ,molto ben organizzato con una fonte
preziosa di esempi di codice e informazioni.Complimenti sopratutto per i
traguardi che hai raggiunto,una certificazione Microsoft (MVP) non č certo
una cosa facile.Ti faccio i miei migliori auguri per la tua brillante
carriera.

Thanks.


Raffaele Rialdi [MVP]

unread,
Mar 13, 2011, 12:42:48 PM3/13/11
to
Piero wrote:
> Grazie Raffaele,una risposta più esauriente e chiara di questa non la potevo
> trovare.Complimenti per il Web log ,molto ben organizzato con una fonte
> preziosa di esempi di codice e informazioni.Complimenti sopratutto per i
> traguardi che hai raggiunto,una certificazione Microsoft (MVP) non è certo
> una cosa facile.Ti faccio i miei migliori auguri per la tua brillante
> carriera.
>
> Thanks.

Grazie a te!

0 new messages