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
Antwort
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.
Ich würde wahrscheinlich ausführbare Dateien mit etwas wie py2exe kompilieren. – Orcris
Wow, hast du das für PyQt ausprobiert? (Ich habe nicht.) Die resultierende ausführbare Datei wird ziemlich groß sein. –
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
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.
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
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
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
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.
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
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
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.
- 1. Was ist der Vorteil der Base64-Codierung?
- 2. Was ist der Vorteil der Verwendung von Feder REST Docs
- 3. Was ist der Vorteil der Verwendung von Async mit MVC5?
- 4. Was ist der Vorteil von .c-Dateien?
- 5. Was ist der Vorteil der Verwendung eines generics-where-clause-Aufrufs über einen nicht-generischen Aufruf?
- 6. Was ist der Vorteil von extend.js?
- 7. Was ist der Vorteil der Verwendung von Web-API über Web-Methode in ASP.NET
- 8. Was ist der Vorteil der Verwendung von Antennehouse über Apache FOP?
- 9. Was ist der Vorteil von sync.WaitGroup über Kanäle?
- 10. Was ist der Vorteil des Python-Skripts über die Befehlszeile?
- 11. Was ist Vorteil der Verwendung von (function() {...})() in JavaScript
- 12. Was ist der Vorteil dieser Konstruktordefinition?
- 13. In Racket, was ist der Vorteil von Listen über Vektoren?
- 14. Was ist der Vorteil von scrypt über bcrypt?
- 15. Was ist der Vorteil von Marionette AppRouter + Controller über Backbone.Router?
- 16. Vorteil der Pfeile über Funktionen
- 17. Was ist der Vorteil der Verwendung von Klammern in dieser Notation Versen die anderen
- 18. Was ist der Vorteil dieses indirekten Funktionsaufrufs?
- 19. Was ist der Vorteil von "Lambda-Ausdrücken"?
- 20. Was ist der Vorteil von Bridge Pattern
- 21. Was sind die Vorteile bei der Verwendung von Qt?
- 22. Was ist der Vorteil der Verwendung eines QueudSynchronizer zur Implementierung von CountLatch
- 23. Was ist der Vorteil (falls vorhanden) der Verwendung von APR mit Tomcat?
- 24. Was ist der Vorteil der variablen erklärt in für
- 25. Was ist der Vorteil der Verwendung von Standard-Session-Speicher ohne Verbindung?
- 26. Vorteil der Verwendung von Thread.Start vs QueueUserWorkItem
- 27. Was ist der Vorteil eines Listenverständnisses gegenüber einer for-Schleife?
- 28. PHP: Was ist der Vorteil von spl_autoload_register? Leistung umfasst
- 29. Was ist der Nachteil der Verwendung von Django fastcgi Server
- 30. Was ist der Vorteil scalaz Tag statt einer Fallklasse
Die gleichen Gründe, die Sie C++ über Python im Allgemeinen verwenden würden ... – Anthony
Erwarten Sie, dass Ihre Benutzer auf mehreren Plattformen oder einzeln sind? – Danish