L'apprendimento di C ++ sarà di aiuto per la creazione di applicazioni desktop veloci / senza requisiti aggiuntivi? [chiuso]

StackOverflow https://stackoverflow.com/questions/168298

  •  03-07-2019
  •  | 
  •  

Domanda

L'apprendimento del C ++ mi aiuterà a creare applicazioni native con una buona velocità? Mi aiuterà come programmatore e quali sono gli altri vantaggi?

Il motivo per cui voglio imparare il C ++ è perché sono deluso dalle prestazioni dell'interfaccia utente delle applicazioni basate su JVM e .NET. Si sentono lenti e iniziano anche lenti. Certo, un programmatore davvero cattivo può creare un'applicazione più lenta e lenta anche usando C ++, ma non sto prendendo in considerazione quel caso.

Una delle mie applicazioni preferite di utilità di Windows è Launchy . E nel file Readme.pdf, l'autore del programma ha scritto questo:

  

0.6 Questa è la prima versione C ++. Come sono diventato frustrato con C # & # 8217; s grande   Requisiti e utenti del framework .NET   mancanza di desiderio di installarlo, I   deciso di tornare al più veloce   lingua.

Concordo pienamente con l'autore di Launchy in merito al requisito del framework .NET o persino a un requisito JRE per le applicazioni desktop. Per non parlare della versione specifica di essi. E alcune delle migliori e mie applicazioni desktop preferite non richiedono .NET o Java per funzionare. Funzionano solo dopo l'installazione. Sono per lo più costruiti usando C ++? C ++ è l'unica opzione per applicazioni basate su GUI valide e veloci?

E sono anche molto interessato a sentire gli altri vantaggi dell'apprendimento del C ++.

È stato utile?

Soluzione

Se si desidera creare applicazioni Windows che verranno eseguite senza framework come .NET o macchine / interpreti virtuali, le uniche scelte realmente praticabili saranno Visual Basic o C / C ++

Ho già scritto alcune piccole app di Windows in codice C ++, e c'è sicuramente un vantaggio in termini di velocità e facilità di distribuzione, a spese della difficoltà di sviluppo. Il C ++ può essere molto veloce, compilare in modo nativo, ha molte funzionalità linguistiche moderne e un ampio supporto. Il compromesso è che è probabile che dovrai scrivere più codice in determinate situazioni, o cercare librerie come Boost che forniscono la funzionalità che stai cercando.

Come programmatore, lavorare in C ++ e specialmente in C è una buona esperienza per aiutarti a capire qualcosa di un po 'più vicino alla macchina di quanto non lo sia .NET, Java o un linguaggio di scripting come VBScript, Python, Perl ecc. Ha vinto ti renderà necessariamente un programmatore migliore, ma se sei aperto all'apprendimento di nuove lezioni da esso potresti scoprire che ti aiuta a ottenere una nuova prospettiva sul software. Dopotutto, la maggior parte dei framework e dei sistemi da cui dipendi sono scritti in C pura, quindi non ti farà mai male capire le basi. Il C ++ è un animale diverso dal C dritto, ma se sviluppi in C ++ per Windows probabilmente ti troverai a lavorare in un mix di C e C ++ per lavorare con le API di Windows, quindi avrà un effetto a cascata.

Altri suggerimenti

sì, C ++ è assolutamente fantastico. Controlla Qt . Ha un ottimo Python binding , così puoi facilmente prototipare in Python e quando / se hai bisogno di prestazioni extra, il porting su C ++ è principalmente una traduzione 1: 1.

Ma in effetti, scrivere C ++ non è così difficile quando hai una grande piattaforma, la parte peggiore è scrivere tutte le dichiarazioni di classe :-)

Ho scritto app Windows C ++ per 10 anni e sono passato a c # circa 2 anni fa per lavorare sull'ultimo prodotto. Sono imbarazzato da quanto patetica sia l'app C #. Ci vogliono 20 secondi per avviarsi, devi aspettare un secondo circa per passare da una schermata all'altra. Ho usato una libreria di controllo della GUI di terze parti, che perde la memoria come un setaccio! La mia app funziona a 150 mega e non fa quasi nulla.

Sto cercando di tornare al C ++.

Puoi usare MFC, sarà molto più veloce di .Net. Oppure, se vuoi davvero masterizzare, dai un'occhiata a WTL - aSebbene, non ci sia molta documentazione per questo. Ti suggerisco di andare con MFC o Qt perché troverai molte buone informazioni e tutorial per loro.

Vedo che C # può essere più veloce da sviluppare, e forse in alcune versioni future sarà più veloce e più piccolo.

Odierai la mia risposta:

I maggiori colli di bottiglia nello sviluppo della GUI di solito non sono dovuti alla lingua. Dopo quasi tutto il tempo nella maggior parte delle applicazioni, l'interfaccia utente è inattiva, in attesa di input dell'utente. Riesco già a sentire le tue urla, ma ho detto nella maggior parte delle app.

Mettiamola così: sono abbastanza sicuro che si possa progettare una buona UI in cima al CLR .Net. L'apprendimento del C ++ è una buona cosa, ma non risolverà i problemi inerenti allo sviluppo di una buona interfaccia utente.

Come sempre. Dipende. Finché stai lontano dai microsoft grandi framework, come MFC, .net ecc., Le tue applicazioni possono essere incredibilmente veloci, ma difficili da codificare. Il vostro vantaggio: imparerete davvero come funziona Windows dietro la sua bella superficie (?). Basta guardare il codice di inizializzazione per COM-Objects e capisci cosa intendo. Non vedrai mai cose del genere in VB o C #

Devi programmare da solo ogni pulsante, ogni finestra e ogni controllo, inviando messaggi stupidi, comunque le tue applicazioni sono piccole, molto piccole. Questa è un'arte dimenticata:

Scrivi piccoli programmi veloci

Buona fortuna!

Se sei impegnato ad apprendere i dettagli grezzi e grintosi di Win32, allora C ++ ti porterà lì. Se non lo sei, finirai comunque per usare un sacco di involucri. Per qualcosa come una piccola utility o specialmente qualcosa come un'estensione della shell (dove provare ad usare .NET ti causerà comunque problemi), C ++ ti permetterà di scrivere codice efficace con il minimo assoluto in dipendenze esterne. Per un'app più grande, YMMV: gran parte della lentezza dell'interfaccia utente disponibile deriva da un design scadente: algoritmi ingenui, una riluttanza a trasformare operazioni non banali su thread separati, affidamento a componenti di terze parti scritti male invece di controlli personalizzati ... Errori facilmente realizzati in qualsiasi lingua.

Ecco la mia risposta onesta a questo.

In primo luogo, penso che ogni programmatore dovrebbe imparare il C / C ++ solo per il fatto che imparando il C ++ impari sulla programmazione. È un linguaggio a livello di sistema. Devi considerare i dettagli più fini della gestione della memoria e così via. Sono scioccato da quanti programmatori non capiscono gli aspetti fondamentali di un linguaggio di programmazione o di un sistema informatico. Imparando C / C ++, ti forzi a comprendere la programmazione a un livello più intimo. Inoltre, se impari a programmare in C / C ++, puoi programmare in quasi tutto.

Ciò non significa che C / C ++ sia sempre lo strumento giusto per il lavoro. Può essere una seccatura totale eseguire il debug e impiegare più tempo a scrivere codice più significativo. Tuttavia, è perfetto per quelle situazioni in cui è necessario il controllo assoluto dell'esecuzione di un programma.

Questo vuol dire che non preferisco C / C ++ per la programmazione dell'interfaccia utente. Devi ancora utilizzare un framework di finestre specifico per il sistema operativo su cui esegui (MFC, Win32, Motif, GTK, QT, ecc.). Queste strutture non si prestano a curve di apprendimento facili. Per lo sviluppo almeno di Windows, .NET è davvero il futuro dello sviluppo dell'interfaccia utente (anche se sorprendentemente MFC ha ottenuto una profonda revisione per Vista che fa cose che .NET non ha ancora fatto). Se scrivi la tua UI in .NET, è più facile da mantenere e per gli altri.

In genere scrivo la mia interfaccia utente in .NET e il back-end in C ++.

Sì e no. Si tratta di ottimizzazione ... E poiché C ++ ti consente di lavorare a un livello inferiore, C ++ è uno dei migliori linguaggi per scrivere applicazioni veloci. Tuttavia, quei meccanismi di basso livello implementati in C ++ potrebbero essere molto fastidiosi se sei abituato ad approcci più astratti a OOP. Testare il tuo software in C ++ di solito è un processo lungo. Se cerchi comunque la velocità, C ++ sarebbe sicuramente una delle migliori scelte.

Il C ++ ti renderà potenzialmente un'applicazione più snella, più cattiva e più veloce (se lo fai nel modo giusto).

Tuttavia, .NET framework è stato progettato per il massimo comfort dal punto di vista degli sviluppatori; un notevole miglioramento rispetto all'API o all'MFC Win32, che può sembrare un duro lavoro a confronto, quindi considera come implementerai gli aspetti per i quali la tua applicazione dipende da .NET (ci sono altri framework disponibili che potrebbero essere più facili dell'API MFC o Win32) e considerare anche i costi e le problematiche relative alla licenza dell'utilizzo di tali framework; ad esempio la VC ++ Express Edition gratuita, ad esempio, non include il supporto MFC.

Se sai dove l'applicazione è lenta, C ++ / CLI potrebbe essere una soluzione; permettendoti di mescolare codice gestito e codice nativo per accelerare le parti che ne hanno bisogno. Tuttavia, se è la GUI intrinsecamente lenta piuttosto che l'elaborazione dell'applicazione; questo potrebbe non essere un percorso utile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top