2012-04-12 7 views
8

Voglio svilupparlo in Qt e conosco già Python. Sto imparando C++, quindi quali sono i vantaggi di programmare Qt in C++ su Python? Il C++ sembra più complicato e sembra che non ci sia molto guadagno.Qual è il vantaggio dell'utilizzo del Qt C++ nativo su PyQt

+6

Gli stessi motivi per cui usi C++ su Python in generale ... – Anthony

+0

Ti aspetti che i tuoi utenti si trovino su più piattaforme o singoli? – Danish

risposta

7

Se si sta pianificando la distribuzione della propria app, è molto più semplice consegnare un eseguibile compilato autonomo piuttosto che affidarsi agli utenti finali per installare Python e PyQt. Ma potrebbe essere o non essere una considerazione per te.

+0

Probabilmente compilerei gli eseguibili con qualcosa come py2exe. – Orcris

+0

Wow, l'hai provato per PyQt? (Non ho.) L'eseguibile risultante sarà piuttosto enorme. –

+9

Definisci piuttosto enorme. Un sovraccarico di 10 MB potrebbe essere stato "enorme" nel 1995, ma oggi è ridicolo. Oggi, dal punto di vista della distribuzione delle app, è altrettanto semplice distribuire un'applicazione PyQT (o PySide) come nativa o qualsiasi app python per quella materia. – astevanovic

0

In breve, credo che a meno che non si abbiano requisiti di prestazioni elevati, è necessario attenersi a Python. Inoltre, come dice Greg, il tuo programma sarà più portabile con Python che con C++.

Amo il C++ ma in questi giorni, per la maggior parte del progetto, mi rivolgo principalmente a Python se non a Java. Tuttavia, se sto scrivendo un gioco o un'applicazione grafica, potrei prendere in considerazione il C++.

+1

Credo che il punto di Greg sia che è * meno * portatile con Python. Questa è stata comunque la mia esperienza. Ho scritto il programma PyQT per alcuni colleghi. Grosso errore. Ora mi viene chiesto costantemente di aiutarli a gestire l'installazione di PyQT. È ora il punto in cui, se qualcuno di loro si aggiorna a OS X Lion e ha problemi, sto gettando la loro macchina fuori dalla finestra. Se l'avessi fatto in C++, probabilmente questo sarebbe stato un problema minore. – ely

+0

Interessante, grazie per averlo condiviso. Suppongo di aver pensato che il tentativo di creare lo stesso programma C++ su più piattaforme sarebbe * più * rispetto all'installazione di Python e PyQT. MA se tutti gli utenti saranno su una piattaforma, allora C++ suona sicuramente molto meglio. – Danish

+0

Vero. Probabilmente si adatta anche al numero di persone che usano il tuo programma. Più persone hai bisogno di assistenza, più vorrai poter dare loro tutti i binari che non richiedono installazione. Se si distribuisce il programma solo a poche persone che raramente necessitano di manutenzione, il bonus del tempo di sviluppo di Python è probabilmente dominante. – ely

15

Qual è il vantaggio di utilizzare il nativo C++ Qt sopra PyQt

velocità/potenza/controllo.

L'applicazione PyQt richiede ancora python. L'applicazione C++/Qt viene compilata in formato nativo. Usando C++ avrai accesso a librerie di terze parti che non saranno disponibili in python, inoltre sterminerai "middle man" - il livello che si trova tra il tuo programma e qt dll e potenzialmente potrai ottenere prestazioni migliori. Ad esempio, non vorrei scrivere un archiviatore o un decompressore mp3 in python, anche se certamente si può fare.

Tuttavia, che ha un costo - C++ non ha un garbage collector, è molto più complessa, ha lo sviluppo (il tempo di compilazione) "più lenta", richiede anni per padroneggiare e potrai ottenere prestazioni migliori solo se il collo di bottiglia è all'interno di interprete (ad es. linguaggio scritto in alto). Cioè C++ offre più potenza a un costo di maggiore responsabilità e tempi di sviluppo più lunghi. Se non ne hai bisogno, non hai un motivo per restare con C++.

La scelta della lingua dipende dall'applicazione/dalla situazione e dalle preferenze personali. Se hai bisogno di creare un'applicazione SOON o fare un mockup, allora sarà ragionevole usare la lingua che conosci. Se si verificano seri problemi di prestazioni, è ragionevole assumere un programmatore C++ qualificato per svolgere il lavoro: rendere l'applicazione nativa, profilare, ottimizzare, ecc.

Si noti che la lingua è uno strumento. Se vuoi usare la tua lingua per tutto semplicemente perché ti piace la lingua, non stai lavorando in modo efficiente.

--EDIT--

Personalmente, non vorrei usare python per un'applicazione più grande mi aspettavo di mantenere per un lungo periodo di tempo. Tuttavia, questo perché la lingua non è esattamente compatibile con la mia mentalità (dipendenza dalla legge di Murphy) e (di conseguenza) non mi sento a mio agio con ciò. La persona che pensa diversamente sarà probabilmente molto più a suo agio con Python e potrebbe anche pensare che C++ sia troppo restrittivo.

Un'altra cosa è che a giudicare dalla mia esperienza di scrittura di plugin Blender e vari script Python, ci sono alcuni gravi costi di prestazioni che appaiono perché il linguaggio è copiato e una manipolazione di lista/mappa/array molto pesante che può essere eseguita VELOCE gratuitamente in C++ potrebbe richiedere 5x..10x volte più a lungo in python. Alcune persone potrebbero insistere sul fatto che questo può essere risolto, tuttavia, il costo di questo "aggiustamento" potrebbe superare i benefici derivanti dall'uso del linguaggio programmato.Indipendentemente dalle mie preferenze, utilizzo ancora Python per creare script di utilità che devono eseguire diverse utilità, dividere/splicare/analizzare il loro output di testo e fare qualcosa con esso (il C++ non è molto buono in queste situazioni), e lo farei ancora fornire collegamenti Python (supponendo che Lua non funzioni) in un programma che deve essere estensibile.

Alla fine si passa alla selezione dello strumento più adatto - se il C++ non ti da alcun vantaggio rispetto a Python, non c'è motivo di cambiare.

+4

Buona risposta, anche se vorrei sottolineare, la quantità di moduli disponibili per python è vasta e l'argomento di avere maggiore libertà con C++ è abbastanza discutibile. Per qualsiasi cosa che abbia un rendimento elevato andare in C++, il resto probabilmente si adatterebbe meglio con IMHO python. – astevanovic

+0

Bella risposta. Sto imparando QT e ho creato un paio di semplici applicazioni per vedere come funziona. Sono davvero impressionato dalle prestazioni e dall'editor GUI. La documentazione è facile da capire e puoi ottenere molte informazioni dal web. Per lo sviluppo dell'elettronica (il mio caso), ho trovato molto facile gestire le porte seriali e altre periferiche usando QT. – GTRONICK

3

C++ ottimizza la velocità della macchina.

Python ottimizza la velocità del programmatore.

C++ è relativamente prolisso: più parole per idea espresse. Bug/Lines_of_code è all'incirca una costante, quindi la concisione è importante.

La gestione della memoria di C++ è a volte manuale, il che può significare strani problemi di runtime http://stromberg.dnsalias.org/~strombrg/checking-early.html compresi i segfault e le perdite di memoria. Python prende questo dalle mani del programmatore e lo automatizza.

Le GUI raramente si preoccupano della velocità del loro linguaggio di implementazione: il problema principale è la velocità con cui l'utente finale può digitare e fare clic.

Problemi correlati