Programmazione GUI c ++ o c #

Sto prendendo lezioni di ingegneria del software presso la mia università. Ho appena preso le strutture dei dati e ho quasi finito di prendere schemi di progettazione. Con la class dei modelli di progettazione, l’istruttore ci ha permesso di scegliere quale lingua utilizzare e quale IDE usare nei nostri laboratori. Dal momento che conosco il C ++, per lo più l’ho usato. La maggior parte della class ha usato c # e alcuni hanno usato java ..

Beh, mi sono appena iscritto alla programmazione della spring della GUI, ed è lo stesso insegnante, e ha detto che possiamo usare quello che ci piace. Dal momento che non ho mai usato C # in modo efficace, potrebbe essere meglio usare c ++? Ho cercato di utilizzare QT4 ma non so quanto sia difficile, e quanto aiuta davvero là fuori? Dal momento che non ci saranno molte lezioni

Sto prendendo in considerazione l’utilizzo di C # poiché ho preso lezioni in VB.NET e ho usato le winform un bel po ‘. Tuttavia, mi piacerebbe usare C ++ quali sono i tuoi pensieri? C ++ gui è qualcosa che potrei usare in futuro nel mondo reale? o sto meglio cercando di imparare C # Mi piacerebbe rimanere con C ++ nel mio percorso di carriera però ..

Allo stesso tempo, non voglio essere bloccato ad imparare C # e GUI. QT4 è un buon modo per andare?

qt non è così difficile da lavorare. Ho provato alcuni kit di strumenti gui per c ++ e questa è la mia esperienza in termini di c ++

Qt

Per lo sviluppo c ++ e per i gui preferirei in modo schiacciante Qt invece di librerie alternative come win32 api, classi di base di Microsoft, ecc.

vantaggi

  • qt è multipiattaforma e può essere usato su windows, linux, symbian, windows ce, mac osx
  • qt non è così difficile da imparare. Se comprendi le basi delle classi c ++ e alcuni programmi di programmazione
  • qt è usato per creare professionalmente guis. Non ricordo esattamente, ma credo che autodesk maya e adobe photoshop stiano usando qt per i loro gui
  • qt4 ha più di una semplice programmazione gui cioè ha librerie per networking, internazionalizzazione, phonon per video e audio, framework di animazione, etc etc

svantaggi

  • non è una libreria nativa quindi la tua applicazione sarebbe più grande di se hai usato win32 api ma anche allora penso ancora che sia più piccolo del tempo di esecuzione .net

Per iniziare a imparare qt ora

  • trova il libro c ++ gui programming usando qt4 seconda edizione. o un’altra buona risorsa
  • scarica il qt sdk per visual studio 2008
  • scarica l’addin di qt visual studio per visual studio 2008
  • crea un nuovo progetto qt4 e compila ed esegui il tuo primo progetto

C #

dovrei dire fin dall’inizio che non sono uno sviluppatore di ac # ma so che ha alcune cose buone

Vantaggi noti

  • ti permette di usare windows form, wpf, linq (query di lingua integrata) ecc
  • wpf è ciò che ti interessa maggiormente come sviluppatore di # ac

svantaggi

  • come tutti i linguaggi .net, è ancora più lento delle applicazioni native realizzate in c ++
  • non portabile a diversi sistemi operativi come mac osx, linux (ma ricorda che MOST UTENTI (90%) SONO IN FUNZIONE WINDOWS)
  • Se scegli come target gli utenti di windows xp, dovresti scomodarli dovendo scaricare .net per far funzionare la tua applicazione. Per me questo è il più grande svantaggio dei linguaggi .net dal momento che la maggior parte degli utenti che conosco hanno connessioni Internet lente

Per iniziare a imparare lo sviluppo di gui usando c #

  • trova il libro di presentazione di Windows Foundation scatenato o qualsiasi buon libro c # / wpf

avvertimento

  • non sono un esperto di c ++ o c # e sto solo dando la mia opinione o esperienza.
  • ho esperienza limitata in c #

Sto prendendo in considerazione l’utilizzo di C # poiché ho preso lezioni in VB.NET e ho usato le winform un bel po ‘. Tuttavia, mi piacerebbe usare C ++ quali sono i tuoi pensieri?

Se si desidera utilizzare Windows Form e C ++, è ansible utilizzare C ++ / CLI (precedentemente noto come Managed C ++). Questo utilizza estensioni a C ++ per supportare .NET ed è l’unico linguaggio .NET che consente la combinazione di CLI e codice nativo, quindi una volta incollato il codice dell’interfaccia al codice dell’applicazione, è ansible utilizzare esclusivamente ISO C ++.

Detto questo, tranne dove ho implementato un’interfaccia per il codice C ++ esistente, ho trovato più facile imparare semplicemente C #, che è stato progettato da zero per essere un linguaggio .NET, quindi in genere è molto più comodo.

Nell’arena ISO C ++, le scelte includono Qt e WxWidgets, entrambi sono multipiattaforma e ben supportati da libri e informazioni e comunità on-line.

Ho usato WxWidgets prima (C ++). È facile e divertente. Afaik, una notevole quantità di progettazione dell’interfaccia utente viene eseguita con editor di progettazione o vari importatori XML / LUA, quindi il toolkit che usi essenzialmente non ha molta importanza, perché il codice basato sugli eventi che scrivi sarà molto simile per quasi tutto.

I tutorial di WxWidgets sono fantastici e i forum sono utili. Se ti stai chiedendo come WxWidgets si confronta con altri Toolkit, hanno una grande pagina wiki dedicata ad esso

Un’altra domanda le cui risposte possono essere discusse per l’eternità del tempo. Dalla mia esperienza, direi che entrambe le lingue hanno toolkit ugualmente maturi per la creazione di interfacce utente.

Quindi per qualsiasi progetto dipende solo da quale sarebbe la tua preferenza. Generalmente, lo sviluppo di un’interfaccia utente tramite .NET è più semplice grazie al fantastico supporto RAD fornito da Visual Studio che, sfortunatamente, non fornisce quel livello di sofisticazione per i progetti basati su C ++.

Detto questo, tieni presente che le interfacce utente esistono su tutti i sistemi operativi; non solo Windows. Quindi dovresti concentrarti sui principi base della programmazione della GUI e trattare la lingua solo come un mezzo per mettere in pratica i tuoi pensieri.

Quindi se vuoi davvero fare la programmazione dell’interfaccia utente su tutte le piattaforms; allora C ++ è la migliore scommessa (ovviamente in questi giorni hai Mono ma non sei sicuro di avere un toolkit basato su QT che stai guardando).

Piuttosto un boccone – ma per farla breve: è tutto sulla tua scelta e apprendimento. Se vuoi imparare C # e usarlo vai avanti. Ma se sei a tuo agio con C ++, puoi ancora usarlo e non c’è nulla che possa essere fatto in C # ma non può essere fatto usando C ++.

Beh, non potrei dare una risposta migliore di Dr.Deo, ma posso condividere la mia parte. Prima facevo un sacco di programmazione GUI (più di 5 anni fa, con VCL di Borland in Delphi o C ++). Recentemente ho dovuto produrre una GUI per un piccolo progetto, quindi sono andato per Qt4. Sono stato in grado di completare quasi completamente la GUI in un giorno senza alcuna conoscenza preliminare di Qt4 (ovviamente, era una semplice GUI a una finestra). L’ho trovato molto facile da usare e veloce da imparare. Se hai un’esperienza GUI, sarà molto intuitivo. Per quanto riguarda la conoscenza di C ++ richiesta, è minima. Devi essere a tuo agio con una buona dose di ereditarietà e polimorfismo, ma questo è molto tipico degli strumenti GUI ed è davvero solo una conoscenza base di C ++ di OOP.

Penso che molte persone abbiano già fatto il punto sull’essere cross-platform. Questo sarà sempre più importante in futuro in quanto le alternative a Windows stanno diventando mainstream (in pratica tutte le persone con cui lavoro hanno un Mac o eseguono una distribuzione di Linux) e mentre stanno emergendo altri prodotti tra telefono e tablet PC .

E, comunque, il linguaggio che usi per programmare una GUI non è poi così importante, è il set di strumenti. Penso che Qt4 sia molto completo. Inoltre ti risparmia la fatica di interfacciarti al tuo codice esistente (per non parlare dell’apprendimento di C #). Infine, Qt4 è molto ben utilizzabile con qualsiasi IDE o sistema di compilazione (se non si desidera passare il codice a qmake e / o Qt-Creator).

Dipende da cosa stai cercando di imparare.

Se vuoi sapere come funzionano le librerie GUI e non come usarle, allora vuoi vedere semplicemente Win32.

Se vuoi imparare come usarli, troverai C # o VB con WinForms il più facile da raccogliere. E ovviamente ti permettono di usare un grande designer.

Non preoccuparti di problemi come la piattaforma mentre stai imparando le basi! Dovresti concentrarti sui principi di apprendimento piuttosto che sugli aspetti specifici.

Come ha detto @David Heffernan, non preoccuparti della piattaforma multipla a meno che non sia necessario (ottimizzazione anticipata). C’è un prezzo da pagare per quella flessibilità offerta dalla maggior parte dei kit cross-platform. Inoltre, dalla mia esperienza pluriennale come sviluppatore e utente, i toolkit della piattaforma nativa offrono generalmente un’esperienza utente migliore (spesso meno sorprese su cosa e come l’utente è autorizzato e non è autorizzato a fare con ogni controllo o superficie).

In un ambiente di apprendimento, si desidera prendere in considerazione ciò che si spera di realizzare in un semestre. Un tipico programma semestrale di tre mesi con tappe successive indica che vorrai un basso attrito. L’apprendimento di una libreria GUI può essere un risultato eccellente, ma probabilmente vorresti familiarità di base con almeno l’ambiente o il contesto prima di iniziare al fine di completare effettivamente le attività intermedie in modo tempestivo: presumibilmente interazioni e altrimenti esperienza utente generale sono al centro dell’attenzione della class.

Per questi motivi, prenderei in considerazione l’idea di attenersi al c ++, poiché hai un senso per il paradigma e i fondamenti del linguaggio e degli strumenti. Ma, poiché è un ambiente di apprendimento, considererei fortemente qualcosa di meno mainstream, ma maturo con potenziale nella biblioteca. Potrei dare un’occhiata alle librerie di windows con accelerazione hardware, o xgl OpenGl basato su unix / linux o Windows Presentation Foundation se si tratta di Windows.

Per la programmazione della GUI potresti usare Visual C ++.

È difficile codificare tutto in VC ++, quindi le persone scelgono MFC. MFC offre centinaia di classi che semplificano la vita. Quindi tutto ciò che devi fare è imparare le basi di VC ++ e imparare MFC.