Qual è la lingua migliore per lavorare con i database? [chiuso]

2

Svilupperò un software che funziona con diversi database e sto valutando se utilizzare i linguaggi .NET o C ++. Ho saputo che .NET ha caratteristiche LINQ e ADO.NET ma ci sono caratteristiche del genere nel C ++ nativo? Quale funziona meglio, più velocemente con i database?

    
posta brillydev 19.05.2014 - 03:35
fonte

1 risposta

6

Non c'è una risposta chiara alla tua domanda - dipende da che tipo di lavoro hai intenzione di fare e dai requisiti di un particolare progetto - hai bisogno di "lo strumento giusto per il lavoro giusto". Inoltre, la tua domanda come detto non è interamente valida, poiché C ++ è chiaramente indicato come un linguaggio di sistema - non realmente progettato per lo sviluppo di applicazioni avanzate - ma i linguaggi .NET sono parte di un quadro che abbraccia praticamente tutti gli aspetti dello sviluppo moderno del software e si concentra sullo sviluppo di applicazioni per "consumatori". ( LINQ è una funzionalità linguistica di C # e non fa parte di C ++, anche se usando l'STL puoi fare cose simili, con il lavoro ...) Detto questo, ecco una panoramica di come le cose vanno in pezzi:

Quando usi i linguaggi .NET con VStudio, la roba del database è praticamente "pronta all'uso" - è tutto pronto per te - puoi fare tutto con pochissimo codice usando procedure guidate e progetti di template, ecc. , se questo è quello che vuoi. Oppure puoi codificare a mano usando le classi del framework per la gestione del database, o combinare gli approcci, a seconda delle tue capacità, gusti e requisiti. E naturalmente è integrato con ADO, ADO.Net (parte del framework stesso), ecc., Così puoi connetterti abbastanza facilmente a qualsiasi DBMS là fuori. (A volte dovrai pagare dei bei soldi per i pacchetti di fornitori ADO / ADO.net di alta qualità di terze parti.)

Ma c'è un prezzo da pagare con .NET, in termini di prestazioni (il tuo chilometraggio può variare a seconda di quello che stai facendo con esso), in termini di portafoglio, e in termini di essere bloccato in un proprietario framework, che MS ha una brutta abitudine di rompere e complicare di volta in volta ... ecc. - Essenzialmente parte del loro modello di business ... Sei anche bloccato nella piattaforma Windows con .NET. Anche se Mono e MonoDevelop (così come altri IDE) sono open source e sono disponibili per Linux, IMO non sono realmente alla pari con la catena di strumenti MS, e può diventare un po 'sgradevole tenere traccia delle versioni .NET e compatibilità, e rimanere sincronizzati, ecc.

Nel C ++ nativo è una storia molto diversa. "Fuori dagli schemi" C ++ non ha supporto per il database - poiché è un linguaggio di sistema, non fa parte dello standard. Fare tutto a mano non è generalmente un'opzione - potresti passare il resto della tua carriera solo sviluppando una solida struttura per accedere a vari database. Anche se hai bisogno di un solo database, è ancora impegnativo.

Quindi, quando si lavora con i database in C ++, è generalmente necessario lavorare con framework progettati per / con il supporto del database. QtSql per esempio, è molto popolare così come libdbi (google ti condurrà ad altri) o almeno scaricare o acquistare driver per vari database e imparare come collegarli. Di nuovo, non sempre così facile, ma abbastanza fattibile se sei a tuo agio con C ++.

L'aspetto positivo dell'utilizzo di C ++ è gratuito, ci sono ottimi strumenti per lo sviluppo che sono anche gratuiti, le prestazioni saranno, di norma, superiori a .NET, il tuo codice sarà più o meno multipiattaforma e tu Lavoreremo con ciò che è discutibilmente il linguaggio più importante nel computing moderno. (Non sto cercando di iniziare nessuna guerra linguistica qui - So che ci sono altri candidati ...)

Un'altra considerazione importante è la tua frontEnd: di nuovo, con .NET, tutto può essere fatto "fuori dagli schemi" - hai tutti i tipi di controlli facili da cablare input e output del tuo database. Anche in C ++, frontEnds non fa parte dello standard, poiché è un linguaggio di sistema, come spiegato. Quindi dovrai usare un altro framework per le tue cose frontEnd e "hand wire". La piattaforma QT fornisce una soluzione "end-to-end" in C ++ nativo, ma è ancora molto più lavoro dell'utilizzo degli strumenti MS, e ha i suoi lati negativi, anche se è molto popolare ed è ampiamente usato su Linux. Ad esempio, KDE un toolkit GUI molto importante e diffuso per Linux, è basato su QT.

Quindi - è la tua chiamata: se hai bisogno di soluzioni semplici e veloci solo per Windows, IMO vai su .NET. Se hai bisogno di soluzioni open source / multipiattaforma, ad altissime prestazioni e sei pronto a rimboccarti le maniche, C ++ è quello che vuoi. Ma in quel caso, altri linguaggi, come Java e Python, potrebbero anche essere candidati per te a investigare, a seconda delle tue esigenze e del tuo gusto. Sono più facili da usare rispetto al C ++ se sei nuovo in questo genere di cose.

    
risposta data 19.05.2014 - 05:19
fonte

Leggi altre domande sui tag