Quanto è importante una conoscenza approfondita del Common Language Runtime per uno sviluppatore .NET?

4

Mi chiedo quanti sviluppatori .NET abbiano una conoscenza pratica di CIL e dove sia stato utile per loro.

Nel caso in cui manchi il mio significato, ecco un semplice esempio CIL per aggiungere due posizioni insieme:

ldloc.0
ldloc.1
add
stloc.0    // a = a + b or a += b;
    
posta CarneyCode 11.04.2011 - 19:47
fonte

4 risposte

7

Le volte in cui ho dovuto usare Reflector o Dip in IL sono sempre state dovute all'odore del codice. In particolare, ricordo due volte:

  1. Stavo usando un metodo di debug scarso che ha portato a una variabile ottimizzata dal compilatore

  2. Il codice originale è stato perso. Reflector ha fatto poco per recuperare il codice. Il tempo che mi ci sarebbe voluto per rimettere il codice in formato leggibile era molto più grande del tempo necessario a riscriverlo (non offuscato).

Il mio punto è, se sei uno sviluppatore "normale" (E.G. non funziona su MS sul sorgente CLR), c'è pochissima necessità di scansionare IL. Gli sviluppatori regolari dovrebbero cercare soluzioni più comuni ai problemi o potrebbero sprecare un sacco di tempo sulla soluzione sbagliata o sulle micro-ottimizzazioni.

    
risposta data 11.04.2011 - 20:24
fonte
5

Lo uso nella misura in cui ho bisogno per seguire cose come il libro di Jeff Richter , e a volte post del blog simile a Eric Lippert . In tal senso è importante per me quindi ho una buona conoscenza della piattaforma nel suo complesso.

Ho (quasi) mai usato IL direttamente nel mio "lavoro diurno". Tuttavia, se strumenti come Reflector non esistessero avrei potuto, ma per fortuna esistono gli strumenti, quindi non ne ho bisogno.

Modifica - il commento qui sotto mi ha ricordato che in alcune occasioni potrebbe essere necessario eseguire il debug in IL se non si dispone del codice sorgente disponibile. Posso solo recal fare questo una volta ma è certamente uno scenario in cui è utile qualche conoscenza di IL.

    
risposta data 11.04.2011 - 20:00
fonte
1
  • la comprensione dei principi è importante
  • dettagli come nel tuo esempio - piuttosto no. Ci sono molte più utili conoscenze per nutrire un cervello
risposta data 11.04.2011 - 19:59
fonte
0

Il titolo chiede di CLR , Common Language Runtime. Il testo della domanda riguarda il CIL , The Common Intermediate Language. Sono cose diverse!

  • CLR. Sì, qualsiasi sviluppatore .net necessita di una buona conoscenza del CLR.

  • CIL. No, uno sviluppatore tipico non ha bisogno di conoscere CIL in nessuna profondità. Se hai bisogno di scrivere un compilatore o eseguire alcune analisi di basso livello ne hai bisogno, altrimenti no.

risposta data 22.06.2016 - 09:45
fonte

Leggi altre domande sui tag