2009-08-09 25 views
5

A quali aree di programmazione si adatta meglio la lingua?Quando utilizzare C#/C++

Mi piacciono sia C++ che C# ma preferisco usare C# a causa di .NET.

La mia domanda è quando userete C++ e quando usate C#?

Quindi, se si crea un'applicazione finanziaria per un'azienda, si utilizzerà C#? (È facile progettare un modulo e connettersi a un database senza scaricare le librerie di terze parti e se si fanno algoritmi avanzati si usa C++ per la sua velocità?

Questa è la mia idea. Ho appena visto il video @http://www.academicearth.org, e sembra che le università preferiscono utilizzare C++ per l'apprendimento automatico, per esempio.

Cosa ne pensate di esso? e qual è la vista industriale su questo.

+0

C# vs C++. Netto o C# rispetto a C++ nativo? – Dykam

+0

C++ Nativo :) .. .. ... –

+0

Grazie Jalf per aver modificato la mia domanda, ora è molto più chiara. –

risposta

12

Cercare di confrontare i due non è corretto: il C++ viene solitamente utilizzato al giorno d'oggi quando si ha la necessità di un codice di basso livello o portatile ad alte prestazioni. Raramente lo si trova usato per implementare la logica di business per i sistemi aziendali, anche se circa 10 anni fa l'hai fatto. Sicuramente non vorresti iniziare lo sviluppo con un sistema aziendale con C++ oggi, a meno che tu non abbia davvero una buona ragione per farlo.

Ma in ambito accademico, C e C++ sono stati utilizzati per molti anni, quindi non è probabilmente sorprendente che ci sia una grande base di codice C++ per cose come Machine Learning. C++ può spesso essere più veloce di C# quando è ottimizzato correttamente. Può funzionare con meno memoria, su più piattaforme e con meno dipendenze su framework di grandi dimensioni rispetto a C#.

C#, tuttavia, è molto più indulgente con il suo modello di memoria e in genere ha accesso al framework di Microsoft o Mono molto ampio e completo che consente agli sviluppatori di fare molte cose con il minimo sforzo di sviluppo, tempo e costi. Se stai lavorando sulla piattaforma Microsoft, è probabilmente la lingua standard al giorno d'oggi.

+0

Grazie per la risposta. –

+0

Concordato per la maggior parte, anche se non sono completamente in linea con il raggruppamento di C e C++ nella stessa categoria. Le cose * veramente * di basso livello vengono coperte da pure C still e * not * C++ (ad esempio kernel, driver). Probabilmente, il C++ copre una lacuna di potere/facilità d'uso che non esiste più con l'avvento di C# e altri linguaggi simili. – Noldorin

+0

Devo notare che i test di velocità per l'ultima versione del compilatore/CLR C# corrispondono o addirittura battono C++ in vari casi. – Noldorin

2

Spesso useremo C# per front-end sviluppo dell'interfaccia utente, e C++ per lato server Una delle ragioni principali è la portabilità/velocità: le persone mi dicono che mono per C# su linux/OSX è veloce e stabile, ma da quello che ho visto non è il caso. YMMV.

+1

Mono funziona bene, se usi GTK # come gui, non i moduli di Windows. Non è così male IMHO. –

+0

Ho usato Monodevelop e GTK # molto tempo fa, l'ambiente di sviluppo era piuttosto carino ma si è rivelato difficile quando si tenta di trasferire il codice GTK # su Windows. Dovrei dargli un altro colpo. – daed

+0

Gnome-Do è scritto in mono. Vedi te stesso quanto è performante e stabile. – Ray

7

Utilizzare sempre C# per le soluzioni aziendali. È un linguaggio più evoluto.

Ho lavorato per un'azienda che esegue l'autenticazione in tempo reale per PPV (ad esempio se acquisti WWE o boxing via cavo). Hanno un volume enorme proprio prima dell'evento. Il team che ha lavorato su quella parte ha insistito sul fatto che doveva essere scritto in C++ per la velocità.

Dopo un anno di dibattiti, abbiamo finalmente scritto un prototipo di sostituzione in C#. Si è scoperto che la sostituzione era due volte più veloce.

Ci sono MOLTO pochi domini problematici in cui è necessario ottimizzare le ottimizzazioni in C++ che non sono disponibili in C#, ma il codice C# è molto meno soggetto a errori.

+2

+1 per contrastare gli inevitabili downvotes che otterrai. Ma hai assolutamente ragione. –

+0

Grazie anche per la risposta (ovviamente tutte le risposte) Mi dà più fiducia nel concentrarmi su C# –

+0

La soluzione C++ di 1 anno è stata superata da 2 a 1 da un prototipo C# ?! Non riesco neanche a immaginare quanto deboli debba essere stata la programmazione in C++. – rpg

2

L'unica caratteristica che mi piace in C++ è l'accesso a basso livello alla memoria e il controllo sul layout di memoria delle strutture. Se si interfacciano con API di livello ancora inferiore come OpenGL, di solito si interagisce con matrici di tipi di dati di base, ad esempio float. In C++, puoi lanciare una texture * vuota a tipi definiti dall'utente come Image2D<PixelWithAlphaChannel<float, 4> > e utilizzare un'interfaccia completamente orientata agli oggetti per questo dump altrimenti non strutturato di dati non specificati.

Se non puoi permetterti di conservare più copie di dati API di basso livello, C++ è il modo per mantenere pulito il tuo codice. Tuttavia, scambi molto tempo di sviluppo per questo. Mentre in teoria C++ consente un codice più veloce (o almeno la stessa velocità, è possibile implementare .NET in C++, ma non viceversa), strumenti come Resharper e dotTrace possono consentire agli sviluppatori di migliorare le prestazioni più velocemente. Quindi, in pratica, opterei per C# per entrambe le applicazioni finanziarie e per gli algoritmi critici, se non sono vincolati da API di basso livello.

1

Da una prospettiva commerciale e di supporto, C# è ancora una meraviglia della piattaforma. Se non stai prendendo di mira il runtime .NET, di solito non è una scelta realistica usare C#.

C++ è supportato da una vasta gamma di piattaforme, dai SO integrati ai super-computer.

Se si utilizza .NET come destinazione, C# è probabilmente un linguaggio più adatto, in realtà non esiste un buon binding per C++, C++/CLI è più come una lingua diversa o estesa in ogni caso.

Se esiste una scelta reale, la considerazione più importante dovrebbe essere l'esperienza disponibile. Ottenere un gruppo di esperti C++ da sviluppare in C# è un cattivo uso delle competenze; scrivere un sistema in C++ senza esperti C++ probabilmente causerà un pasticcio.

Problemi correlati