Was ist der Vorteil der Verwendung des nativen C ++ - Qt über PyQt
?
Geschwindigkeit / Leistung / Kontrolle.
Die PyQt-Anwendung benötigt weiterhin Python. 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-Dekomprimierer in Python schreiben, obwohl es sicherlich getan werden kann.
Aber das hat seinen Preis - c ++ hat keinen Garbage Collector, ist viel komplexer, hat eine "langsamere" Entwicklung (Kompilierungszeit), benötigt Jahre, um zu meistern, und Sie erhalten nur dann eine bessere Leistung, wenn Ihr Engpass darin 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 Wahl der Sprache 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 schwerwiegende Leistungsprobleme haben, ist es sinnvoll, qualifizierte C ++ - Programmierer einzustellen, um die Aufgabe zu erledigen - native Anwendungen erstellen, Profile erstellen, 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.
- BEARBEITEN -
Persönlich würde ich Python nicht für eine größere Anwendung verwenden, von der erwartet wird, dass ich sie für lange Zeit aufbewahre. 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 nach meiner Erfahrung beim Schreiben von Blender-Plugins und verschiedenen Python-Scripts ernsthafte Performance-Overheads auftreten, weil die Sprache scripted ist und eine sehr schwere Listen- / Map- / Array-Manipulation FAST kostenlos in C ++ ausgeführt werden kann 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 der 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 Stellen Sie Python-Bindungen (vorausgesetzt, Lua ist nicht gut) in einem Programm bereit, 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, gibt es keinen Grund für einen Wechsel.
Wenn Sie Ihre App verteilen möchten, ist es viel einfacher, eine eigenständige kompilierte ausführbare Datei zu erstellen, 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.
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 merkwürdige Laufzeitprobleme Ссылка einschließlich der Segfaults und des Speichers bedeuten kann Lecks. Python nimmt das aus den Händen des Programmierers und automatisiert es.
Die GUI kümmert sich selten um die Geschwindigkeit ihrer Implementierungssprache - das Hauptproblem ist, wie schnell der Endbenutzer tippen und klicken kann.
Kurz gesagt, glaube ich, dass Sie bei Python bleiben sollten, wenn Sie keine starken Leistungsanforderungen haben. Wie Greg erwähnt, ist Ihr Programm mit Python besser portierbar 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 Grafikanwendung schreibe, könnte ich C ++ in Betracht ziehen.