C ++. Net è ampiamente utilizzato?

25

Sono un codificatore C ++ per tradizione. Negli ultimi 12 mesi circa ho fatto molta codifica in C # e sono stato piacevolmente sorpreso dall'approccio pragmatico di C # (una volta ho smesso di provare a codificarlo come se fosse "C ++ con garbage collection").

Recentemente abbiamo avuto alcuni laureati e quando ho aiutato uno di loro mi sono reso conto che stava usando .Net in C ++. Dopo averle chiesto il motivo, ha detto che le era stato "detto di usare C ++ dal suo manager". A parte il problema di comunicazione ovvio, presumo che stesse usando .Net perché è l'unica struttura a cui è stata esposta.

Mi sono imbattuto in un vecchio progetto di uno sviluppatore anziano che usava anche il C ++ per gestire un front-end di moduli. Ora questo sarebbe stato scritto intorno al tempo. Net apparve per la prima volta, quindi presumo che fosse un esercizio di apprendimento da parte sua a giocare con .Net. Era solo una piccola applicazione di utilità.

Avendo dovuto apportare alcune modifiche minori in questa app, mi è sembrato che usare C ++ per guidare .Net ti desse il peggio di entrambi i mondi. Nessuna raccolta di dati inutili o sicurezza della memoria, ma allo stesso modo non esistono vere opportunità di ottimizzazione / velocità poiché hai a che fare con un framework gestito.

Quindi la mia domanda è se le persone usano C ++ .Net per qualsiasi grande codice di produzione stand-alone (cioè non idraulico), e in tal caso quali sono le ragioni per farlo? Ammetto che non ho mai approfondito le estensioni di C ++. NET, quindi potrei averne un cattivo servizio.

    
posta GazTheDestroyer 13.07.2012 - 10:07
fonte

1 risposta

31

C ++. NET (o, appunto, C ++ / CLI) fa ha garbage collection, proprio come qualsiasi altra cosa che gira su .NET. Per ottenere ciò rimanendo compatibile con C ++, usa ^ syntax e gcnew per i puntatori garbage-collected ('safe').

C ++ / CLI è considerato un abominio da molti, è molto più spiacevole lavorare con C # o C ++, e anche più complicato di entrambi (semplicemente perché porta la complessità del C ++ stesso alla tabella e aggiunge quello che porta a lavorare con .NET al mix). Learning C # di solito paga anche nell'ambito di un singolo progetto di medie dimensioni. Tuttavia, c'è una cosa che può fare che né C # né C ++ nativo possono fare: compilare il C ++ esistente contro .NET e farlo parlare con altri componenti .NET.

Di conseguenza, non ha molto senso usare C ++ / CLI per un progetto da zero - tutto ciò che può essere fatto con .NET può essere fatto anche in C #, con una sintassi molto più bella e una maggiore sicurezza di non esponendo i puntatori grezzi per impostazione predefinita. La sua raison-d'etre più importante è il porting di codebase esistenti su .NET. Una società che decide di iniziare a utilizzare .NET, ma non vuole (o non è in grado a causa di limiti di tempo e risorse) di riscrivere ogni pezzo di software prodotto fino a quel momento, può usare C ++ / CLI per continuare a utilizzare la propria base di codice esistente con solo modifiche minime, e quindi riscrivi i componenti del loro sistema in C # uno per uno. Almeno questa è la teoria; Non l'ho mai visto in pratica da solo, quindi non posso dire quanto bene funzioni.

Si noti inoltre che C # può interfacciarsi con le librerie native, quindi anche se si devono usare basi di codice C ++ esistenti, non è necessario ricompilarle con .NET: spesso, l'interfaccia con esse tramite COM o P / Invoke è la soluzione migliore.

    
risposta data 13.07.2012 - 10:20
fonte

Leggi altre domande sui tag