Is Learning C ++ attraverso il Qt Framework Really Learning C ++ [chiuso]

32

Il problema che ho, è che la maggior parte dei libri C ++ che leggo spendono quasi per sempre sulla sintassi e le basi della lingua, ad es. for e cicli while , matrici, elenchi, puntatori, ecc.

Ma non sembrano mai creare qualcosa che sia abbastanza semplice da usare per l'apprendimento, ma abbastanza pratico da farti capire la filosofia e il potere della lingua.

Poi mi sono imbattuto in QT che è un'incredibile libreria!

Ma lavorando attraverso le demo che hanno, sembra che ora sia nel dilemma inverso. Mi sento come se il figlio del ricco guidasse in una macchina sportiva sovvenzionata dal padre. Come se potessi creare un software fantastico, ma non ho idea di cosa sta succedendo sotto il cofano.

Come esempio del mio dilemma, prendi il compito di costruire un semplice browser web. In puro C ++, non saprei neanche da dove cominciare, ma con la libreria Qt si può fare in poche righe sul codice.

Non mi lamento di questo. Mi sto solo chiedendo come riempire il vuoto di conoscenza tra la struttura di base del linguaggio e l'interfaccia di alto livello fornita dal framework Qt?

    
posta user866190 06.01.2012 - 21:40
fonte

8 risposte

11

Vuoi sapere come accelerare l'acceleratore fa andare la macchina più veloce, o ti interessa solo che salire sull'acceleratore fa andare la macchina più veloce?

Stai vedendo il vantaggio della programmazione della scatola nera, che è un ottimo modo per progettare un sistema quando tutte le scatole funzionano. Qualcuno deve fare le scatole nere e se vuoi essere quel ragazzo / ragazza, allora devi sapere di più sulla lingua rispetto al ragazzo che usa la scatola.

Ci sono lavori che sono buoni lavori in ogni stile, quindi sta a te decidere cosa vuoi programmare. IMO ti faresti un disservizio anche se non avessi fatto lo sforzo di rimuovere parte dell'astrazione che QT ti sta dando alla fine.

    
risposta data 06.01.2012 - 22:10
fonte
18

Il maggior danno che farai a te stesso, se vuoi metterlo in questo modo, è che non imparerai a usare le strutture di dati, gli iteratori, gli algoritmi e le stringhe standard del C ++. Qt ha le librerie a sé stanti per tutti questi scopi, e siete tutti costretti a usarli invece delle entità C ++ standard perché le API Qt accettano solo strutture dati proprie.

Si potrebbe obiettare che imparare a usare una libreria di algoritmi dopo averne masterizzato altro è un compito banale. Prima di andare a un'intervista in cui gli intervistatori si aspettano di padroneggiare il C ++, assicurati di affrontare in anticipo quella banalità.

    
risposta data 06.01.2012 - 22:23
fonte
12

Considerando che Qt ha il proprio meta-compilatore con cui devi elaborare i tuoi file sorgente, è difficile considerare il codice Qt come "solo C ++".

Ma ancora più importante, lo stile di C ++ che Qt usa e incoraggia è qualcosa che, per il resto di noi, è stato visto l'ultima volta intorno al 1995.

In realtà, si tratta di un tentativo di rendere il C ++ come Java-like il più possibile. Manca o scoraggia tutte le cose straordinarie che rendono C ++ degno di essere utilizzato oggi . Invece, sei bloccato in un sottoinsieme che si sente soprattutto come un Java inferiore.

Quindi se l'obiettivo è imparare il C ++, direi di no, state alla larga da Qt. Forse date un'occhiata a Boost, se volete usare una libreria stabilita come punto di partenza. Boost incarna le pratiche che sono considerate buone oggi .

Ma sinceramente, se vuoi imparare il linguaggio C ++ , prendi un buon libro di testo e concentrati su la lingua .

Scrivendo un browser web, indipendentemente da come lo fai, ti insegnerà al meglio i browser web. Non ti insegnerà molto sulla lingua che stai utilizzando.

C ++ come linguaggio non ha una classe WebBrowser integrata. Se leggi lo standard C ++, dice niente sui browser. Non menziona nemmeno le applicazioni GUI.

Questo perché le cose sono costruite in cima, fornite da librerie come Qt. Il C ++, come qualsiasi linguaggio di programmazione, riguarda la logica, su come esprimere quella logica. E sì, questo significa lavorare con matrici e puntatori e loop e tutte queste cose.

Saresti in grado di scrivere un browser web usando solo quegli strumenti integrati, dato un tempo sufficiente ? Sapresti come esprimere la logica del programma? In caso contrario, devi dedicare più tempo a loop e puntatori e meno a chiamare new QWebKit() e solo a piggyback delle librerie già pronte.

La "filosofia e potenza della lingua" è in matrici e liste e loop, non nei browser web.

    
risposta data 07.01.2012 - 14:10
fonte
9

Is Learning C++ Through The Qt Framework Really Learning C++

Forse.

Dovrei vedere il codice che stai inserendo nei gestori di eventi.

Davvero, non essere ossessionato da quanto tu "sai". Tutti noi usiamo framework di finestre e stiamo ancora imparando. Continua a scrivere codice / leggere cose nuove e continuerai ad imparare C ++. Imparare un nuovo framework per finestre è una grande aggiunta alle tue capacità anche se ciò potrebbe non significare che puoi implementare una rete neurale o un quicksort in C ++.

    
risposta data 06.01.2012 - 21:54
fonte
5

Non preoccuparti; all'inizio la maggior parte del tuo codice userà usare il framework, ma dopo un po 'dovrai estenderlo , anche se solo un po'. Quindi dovrai usare sempre più C ++.

Ricorda anche che hai a disposizione l'intera fonte di Qt, l'IDE ti condurrà felicemente alla definizione di qualsiasi funzione / metodo / classe che desideri. Più vai a fondo, più C ++ vedrai.

Altri hanno menzionato la differenza tra Qt C ++ e standard C ++. Questi cadono in due campi:

  • libreria diversa: Qt include tutti i soliti contenitori: array, liste, insiemi, hashmap, ecc. Si adattano molto bene e sono buone implementazioni, ma non sono la varietà STD. Tuttavia, nelle ultime versioni (4.1 e successive, penso) hanno API 'STD-like' oltre alla vecchia varietà (e un'API simile a Java). Alla fine, le scelte progettuali (quando usare una matrice, quando usare una hashmap) sono le stesse, quindi passare a STD per progetti non-Qt non è così difficile.

  • % aggiunta di syntax dimoc: principalmente per la gestione del segnale, ma anche un paio di costruzioni di loop più belle. Molte persone sentono questo strumento significa che non è più C ++; ma IMHO, si sentono come dei macro leggermente più intelligenti. Una buona gestione del segnale unilaterale è un enorme vantaggio di un buon framework, ed è notoriamente difficile da fare su un linguaggio tipizzato statico. Nel moderno C ++, è fattibile con una pesante dose di modelli; ma questo era lontano dallo standard quando Qt ha ottenuto per la prima volta moc . Alla fine, se in seguito vuoi fare progetti non di Qt, per prima cosa controlla se userai qualsiasi framework e se ha segnali. Se sì, allora si applicherà la maggior parte di quello che sei abituato a fare con Qt, quindi nessun 'danno' nell'apprendimento di Qt.

risposta data 07.01.2012 - 13:03
fonte
4

Qt è ampiamente utilizzato nel mondo commerciale perché fornisce un set di strumenti e un ambiente di sviluppo completamente multipiattaforma, inclusa una buona libreria GUI.

Inoltre supporta pienamente l'internazionalizzazione, incluso l'eccellente strumento "Linguista".

Se pianifichi una carriera accademica, allora non mi preoccuperei di Qt. Se, invece, ti piace il C ++ e vuoi imparare un'abilità commerciabile, allora vale la pena imparare Qt.

E sì, Qt è C ++, e puoi mescolare le librerie standard e boost per i tuoi contenuti di cuori, se questo ti fa sentire meglio.

    
risposta data 08.01.2012 - 19:55
fonte
3

È una cattiva idea imparare C ++ tramite Qt. Prima devi imparare i concetti linguistici indipendentemente da qualsiasi quadro e questo è ciò che i libri c ++ ti insegnano e hanno ragione. Fondamentalmente, 'for and loops while, matrici, elenchi, puntatori' sono ciò che i linguaggi di programmazione sono tutti. Ulteriori funzionalità sono fornite da framework. Una volta acquisito un linguaggio di programmazione, è possibile apprendere qualsiasi framework come Qt o MFC costruito utilizzando la lingua, in modo che le applicazioni possano essere sviluppate rapidamente. Riguardo Qt, una volta imparato c ++, è un framework eccellente che ti rende produttivo come qualsiasi sviluppatore Java o .Net. A breve potrai sviluppare app ios e Android utilizzando Qt.

    
risposta data 30.09.2012 - 10:16
fonte
2

Bene, penso che il modo migliore per imparare il C ++ sia usando SOLO la sua sintassi (Standard C ++), così sarai in grado di usare le cose LANGUAGE, e NON il Qt (o qualsiasi altro framework, librerie ... ecc).

Perché? perché come principiante, quando guardi un qualsiasi codice C ++ mescolato con un altro codice non c ++ (Qt in questo caso) non sarai in grado di vedere quali sono le cose di C ++ e cosa no, piuttosto sarà un processo più complesso. / p>     

risposta data 01.02.2012 - 23:57
fonte

Leggi altre domande sui tag