Sono un programmatore e ho esperienza con codice sia nativo che gestito. Ho iniziato con Pascal e C, poi mi sono trasferito in C ++ e infine in C #.
Nel corso dell'ultimo anno o giù di lì, ho programmato quasi esclusivamente in C # e ho perso molto di ciò che era naturale quando ero un programmatore C ++.
Qualche settimana fa, quando mi sono seduto per scrivere un codice C ++ nativo, mi sono ritrovato a armeggiare mentre lentamente mi facevo conoscere le complessità, le stranezze e le idiosincrasie di tutto ciò. Sono quasi imbarazzato nel dire che avevo completamente dimenticato che passare una matrice allocata in modo dinamico a una funzione senza passare anche la sua dimensione significherebbe che la funzione di ricezione non avrebbe modo di sapere quanto è lunga la matrice.
Esistono innumerevoli articoli e documenti che confrontano e contrastano il codice gestito rispetto a quello non gestito. Sappiamo tutti che il codice nativo, se ben ottimizzato, può essere eseguito in modo significativamente più veloce e leggero del codice gestito. D'altra parte, il codice gestito ha garbage collector e l'ottimizzazione specifica della CPU e del sistema operativo in fase di runtime che può far funzionare il codice nativo per i suoi soldi.
Puramente dal punto di vista tecnico, non esiste un chiaro vincitore.
Non c'è dubbio che il codice gestito è più semplice da codificare e comprendere per ordini di grandezza. Basta guardare la differenza nel numero di righe necessarie per costruire una semplice GUI in Win32 C ++ vs C #.
Ai miei tempi con i codici nativi, scrivevo principalmente simulazioni matematiche su supercomputer. Avevano brutti CLI ed erano principalmente focalizzati sugli algoritmi. Oggi scrivo in C # e produco bellissime applicazioni GUI, ma mi perderei se dovessi creare qualcosa di simile calibro su una lingua madre. Anche con un framework come QT, ci vorrebbe ancora il doppio del tempo per produrre qualcosa in C ++ / QT rispetto a quanto farebbe in C #.
Ogni volta che vedo qualcuno che ha scritto un'applicazione GUI su larga scala e completa in C / C ++, non posso fare a meno di provare un senso di timore reverenziale e un pizzico di gelosia.
Sono curioso di sapere come altri programmatori esperti vedono le lingue gestite e non gestite. Vedi il codice gestito come amatoriale ? Vedi i programmatori nativi come più hardcore ?