2012-04-12 7 views
8

Ich möchte in Qt entwickeln, und ich kenne bereits Python. Ich lerne C++, also was sind die Vorteile der Programmierung von Qt in C++ gegenüber Python? C++ scheint komplizierter zu sein und scheint nicht viel zu gewinnen.Was ist der Vorteil der Verwendung der nativen C++ Qt über PyQt

+6

Die gleichen Gründe, die Sie C++ über Python im Allgemeinen verwenden würden ... – Anthony

+0

Erwarten Sie, dass Ihre Benutzer auf mehreren Plattformen oder einzeln sind? – Danish

Antwort

7

Wenn Sie Ihre App verteilen möchten, ist es viel einfacher, eine eigenständige kompilierte ausführbare Datei zu liefern, als sich darauf zu verlassen, dass Ihre Endbenutzer zuerst Python und PyQt installieren. Aber das kann oder darf nicht eine Überlegung für Sie sein.

+0

Ich würde wahrscheinlich ausführbare Dateien mit etwas wie py2exe kompilieren. – Orcris

+0

Wow, hast du das für PyQt ausprobiert? (Ich habe nicht.) Die resultierende ausführbare Datei wird ziemlich groß sein. –

+9

Definiere ziemlich groß. 10 MB Overhead waren vielleicht 1995 "riesig", heute ist es lächerlich. Heute ist es aus Sicht der App-Verteilung genauso einfach, eine PyQT- (oder PySide-) App als eine native oder eine beliebige Python-App zu implementieren. – astevanovic

0

Kurz gesagt, ich glaube, dass wenn Sie starke Leistungsanforderungen haben, sollten Sie bei Python bleiben. Wie Greg erwähnt, ist Ihr Programm mit Python portabler als mit C++.

Ich liebe C++, aber heutzutage, für die meisten Projekte, wende ich mich meistens an Python, wenn nicht Java. Wenn ich jedoch ein Spiel oder eine Grafik-Anwendung schreibe, könnte ich C++ in Erwägung ziehen.

+1

Ich denke, Gregs Punkt war, dass es mit Python * weniger * tragbar ist. Das war sowieso meine Erfahrung. Ich habe PyQT-Programm für einige Kollegen geschrieben. Großer Fehler. Ich werde nun ständig gebeten, ihnen bei der Installation von PyQT zu helfen. Es ist jetzt soweit, dass, wenn eine von ihnen auf OS X Lion upgradet und Probleme hat, ich ihre Maschine aus dem Fenster werfe. Hätte ich es in C++ gemacht, wäre das wahrscheinlich weniger ein Problem. – ely

+0

Interessant, danke für das Teilen. Ich nehme an, ich nahm an, dass der Schmerz, das gleiche C++ - Programm auf mehreren Plattformen zu erstellen, * mehr * wäre als die Installation von Python und PyQT. Aber wenn alle Benutzer auf einer Plattform sind, dann klingt C++ definitiv viel besser. – Danish

+0

Wahr. Es skaliert wahrscheinlich auch mit der Anzahl der Personen, die Ihr Programm verwenden. Je mehr Leute Sie bedienen müssen, desto mehr wünschen Sie, dass Sie ihnen alle Binärdateien geben können, die keine Installation erfordern. Wenn Sie das Programm nur an ein paar Leute verteilen, die nur selten gewartet werden müssen, dann ist der Entwicklungszeitbonus von Python wahrscheinlich dominant. – ely

15

Was ist der Vorteil der Verwendung der nativen C++ Qt über PyQt

Geschwindigkeit/Leistung/Kontrolle.

PyQt-Anwendung wird weiterhin Python erfordern. C++/Qt-Anwendung kompiliert zu native exe. Durch die Verwendung von C++ erhalten Sie Zugriff auf Bibliotheken von Drittanbietern, die in Python nicht verfügbar sind, und Sie eliminieren "Mittelmann" - Ebene, die zwischen Ihrem Programm und QT DLLs sitzt und möglicherweise eine bessere Leistung erzielen kann. Zum Beispiel würde ich keinen Archiver oder MP3-Dekompressor in Python schreiben, obwohl es sicherlich getan werden kann.

Aber das kommt zu einem Preis - C++ hat keinen Garbage Collector, ist viel komplexer, hat "langsamere" Entwicklung (Kompilierzeit), erfordert Jahre zu meistern und Sie werden nur dann bessere Leistung bekommen, wenn Ihr Engpass ist innerhalb des Interpreters (dh Skript-Overhead). I.e. C++ bietet mehr Leistung auf Kosten von mehr Verantwortung und längerer Entwicklungszeit. Wenn Sie das nicht brauchen, haben Sie keinen Grund, bei C++ zu bleiben.

Die Sprachauswahl hängt von Ihrer Anwendung/Situation und Ihren persönlichen Vorlieben ab. Wenn Sie eine SOON-Anwendung oder ein Mock-up-Programm benötigen, ist es sinnvoll, die Ihnen vertraute Sprache zu verwenden. Wenn Sie ernsthafte Leistungsprobleme haben, dann ist es sinnvoll, qualifizierte C++ - Programmierer zu engagieren, um die Aufgabe zu erledigen - native Anwendung erstellen, profilieren, optimieren, usw.

Bitte beachten Sie, dass Sprache ein Werkzeug ist. Wenn Sie Ihre Sprache für alles verwenden möchten, nur weil Sie die Sprache mögen, arbeiten Sie nicht effizient.

--EDIT--

Persönlich würde ich nicht Python für eine größere Anwendung verwende ich erwartet habe für eine lange Zeit aufrecht zu erhalten. Dies liegt jedoch daran, dass die Sprache nicht genau mit meiner Denkweise kompatibel ist (Murphys Gesetz) und ich mich damit nicht wohl fühle. Eine Person, die anders denkt, wird wahrscheinlich viel besser mit Python umgehen und könnte sogar denken, dass C++ zu restriktiv ist.

Eine andere Sache ist, dass aus meiner Erfahrung zu urteilen Skripte Blender Plugins und verschiedene Python zu schreiben, gibt es einige ernsthafte Leistung Gemeinkosten ist, die angezeigt wird, weil die Sprache Skript ist und sehr schwer Liste/map/Array Manipulation, die FAST kostenlos durchgeführt werden kann, in C++ könnte in Python 5x..10x länger dauern. Einige Leute können darauf bestehen, dass dies behoben werden kann, jedoch könnten die Kosten für dieses "Reparieren" die Vorteile, die Sie aus der Verwendung einer Skriptsprache ziehen, überwinden.Ungeachtet meiner Vorliebe benutze ich immer noch Python, um Hilfsskripte zu erstellen, die mehrere Dienstprogramme ausführen müssen, ihre Textausgabe teilen/spleißen/parsen und etwas damit machen (C++ ist in diesen Situationen nicht sehr gut), und ich würde es trotzdem tun Bereitstellen von Python-Bindings (unter der Annahme, dass Lua nicht gut ist) in einem Programm, das erweiterbar sein muss.

Am Ende kommt es auf die Auswahl des am besten geeigneten Tools an - wenn C++ Ihnen im Vergleich zu Python keinen Vorteil bringt, dann gibt es keinen Grund zu wechseln.

+4

Gute Antwort, obwohl ich darauf hinweisen möchte, dass die Menge der verfügbaren Module für Python riesig ist und das Argument, größere Freiheit mit C++ zu haben, durchaus umstritten ist. Für alles Leistungsintensive gehen C++, der Rest würde wahrscheinlich besser mit Python IMHO passen. – astevanovic

+0

Schöne Antwort. Ich lerne QT, und ich habe ein paar einfache Anwendungen gemacht, um zu sehen, wie es funktioniert. Ich bin sehr beeindruckt von der Performance und dem GUI Editor. Die Dokumentation ist einfach zu verstehen und Sie können viele Informationen aus dem Internet erhalten. Für die Elektronikentwicklung (mein Fall) fand ich sehr einfach, serielle Ports und andere Peripheriegeräte mit QT zu verwalten. – GTRONICK

3

C++ optimiert die Maschinengeschwindigkeit.

Python optimiert die Geschwindigkeit des Programmierers.

C++ ist relativ wortreich: mehr Wörter pro Idee ausgedrückt. Bugs/Lines_of_code ist ungefähr eine Konstante, daher ist die Entscheidung wichtig.

C++ 's Speicherverwaltung ist manchmal manuell, was seltsame Laufzeitprobleme http://stromberg.dnsalias.org/~strombrg/checking-early.html einschließlich segfaults und Speicherlecks bedeuten kann. Python nimmt das aus den Händen des Programmierers und automatisiert es.

GUI kümmert sich selten um die Geschwindigkeit ihrer Implementierungssprache - das Hauptproblem ist, wie schnell der Endbenutzer tippen und klicken kann.

Verwandte Themen