Okay, zu Beginn habe ich Erfahrung als Amateur-Obj-C / Cocoa und Ruby mit Rails-Programmierer. Diese sind großartig, aber sie sind nicht wirklich hilfreich für das Schreiben plattformübergreifender Anwendungen (hoffentlich wird GNUStep eines Tages vollständig genug sein, damit die erste plattformübergreifend sein kann, aber dieser Tag ist nicht heute).
Soweit ich weiß, ist C ++ extrem mächtig, aber auch ein riesiger, hässlicher Gigant, dessen Beherrschung ein halbes Jahrzehnt oder länger dauern kann. Ich habe auch gelesen, dass Sie sich sehr leicht nicht nur in den Fuß schießen, sondern Ihr gesamtes Bein damit abblasen können, da die Speicherverwaltung vollständig manuell erfolgt. Offensichtlich ist das alles ziemlich einschüchternd. Ist es richtig?
Python scheint den größten Teil der Leistung von C ++ zu bieten und ist auf Kosten der Geschwindigkeit viel einfacher zu erlernen. Wie groß ist dieses Opfer? Ist es sinnvoll oder kann es ignoriert werden?
Was bringt mich dazu, in angemessener Zeit schnelle, stabile und hochzuverlässige Anwendungen zu schreiben?
Ist es auch besser, Qt für Ihre Benutzeroberfläche zu verwenden oder stattdessen separate native Frontends für jede Plattform zu verwalten?
BEARBEITEN: Für zusätzliche Klarheit gibt es zwei Arten von Anwendungen, die ich schreiben möchte: Eine ist ein äußerst benutzerfreundliches und praktisches Datenbank-Frontend und die andere, die zweifellos viel später erscheinen wird, ist ein 3D-Welteditor.
quelle
Antworten:
C / C ++ ist schnell. Die Realität ist, dass die meisten Apps diese Leistung mit dem Status der aktuellen Hardware nicht benötigen. Der übliche Weg besteht darin, die Anwendung in einer höheren Sprache wie Python zu entwickeln und sie dann bei Bedarf mit niedrigeren Sprachen wie C / C ++ zu optimieren.
Python bietet Ihnen einen großen Produktivitätsschub, ist einfach zu erlernen und relativ schnell. Es gibt Cython , mit dem Sie C-Erweiterungen für Ihre Python-App mit pythonähnlicher Syntax schreiben können, um Engpässe zu beschleunigen.
Für Standard-GUI-Apps bietet Python ausreichend Leistung. Und Python hat etwas sehr Cooles namens Kivy , ein GUI-Framework, das auf Mac, Windows, Linux, Android und iOS läuft und Multi-Touch unterstützt. Der Bonus ist, dass die leistungskritischen Teile mit C unter Verwendung von Cython optimiert werden.
quelle
Ich würde mit Python gehen, da es Ihnen einen großen Produktivitätsschub gibt. Sie können weiterhin Teile Ihrer App schreiben, die in C ++ Geschwindigkeit benötigen. Es gibt ein Cython- Projekt, mit dem C ++ - Bibliotheken direkt in Python verwendet werden können. Wenn Sie sich Sorgen um die Sicherheit Ihrer Quellen machen, kann Cython Ihnen auch dabei helfen. Sie können damit Ihren normalen Python-Code in C ++ - Code kompilieren.
Ich würde empfehlen, die Chrome-Engine einzubetten und Technologien wie HTML5 + CSS3 + Javascript + JQuery + Canvas für die Benutzeroberfläche zu verwenden.
Es gibt ein Framework, das das Einbetten der Chrome-Engine in Ihre C ++ - App erleichtert. Es heißt CEF - Chromium Embedded Framework . Es unterstützt Windows, Linux, Mac OS.
Wenn Sie Python mögen, werfen Sie einen Blick auf CEF Python , ein Projekt, das Python-Bindungen für das CEF-Framework bereitstellt (mithilfe von Cython ). CEF Python unterstützt derzeit nur Windows, es gibt jedoch Pläne für andere Betriebssysteme.
Hier ist eine Liste der Anwendungen, die mit CEF erfolgreich waren (von hier übernommen ):
Schauen Sie sich auch diesen Blogeintrag an: Erstellen einer Desktop-Qualitäts-App für Webtechnologien - Brackets-Redaktionsteam, das erklärt, wie sie mithilfe von CEF-Frameworks und Webtechnologien wie jQuery , Bootstrap , WENIGER CSS , requireJS , Jasmine for Unit-Tests , JSlint erstellt wurden .
Haftungsausschluss: Ich bin der Autor des CEF Python-Projekts.
quelle
Die Qt-Methode von C ++ ist großartig und sauber. Lassen Sie also bitte den Teil "Hässlicher Gigant" fallen. Ich habe beide ausprobiert und persönlich bin ich mit Qt / C ++ viel produktiver / komfortabler als mit Pythons Qt-Bindung. Das ist mein Rat, wenn Sie sich für Qt entscheiden. Neben der nativen Erfahrung, die das Qt-Widget bietet, bieten Qt5 und QtQuick2 mit QML-Technologie und der Möglichkeit, JavaScript und HTML5 in Ihre App einzubetten, ein modernes webähnliches Erscheinungsbild , wenn Sie dies wünschen.
Warum mag ich Python in Desktop-Apps nicht und bevorzuge es, es für Skripte oder serverseitige Dinge zu behalten?
Python bricht ein wenig die plattformübergreifende Freude, Ihr Client muss Python installieren, um Ihre App auszuführen (insbesondere unter Windows), und die verschiedenen Python-Versionen auf der offiziellen Website von Python machen den Client jetzt verwirrt, welche heruntergeladen / installiert werden soll .
Python zu exe , machen größere Apps (in Bezug auf die Größe).
Python-Apps, essen mehr Speicher.
Das ist eine persönliche Sichtweise. Das übergeordnete System von Qt, intelligente Zeiger, lässt Sie nicht in den Fuß oder in die Beine schießen. Das C ++ 11 bietet Ihnen noch mehr Funktionen.
quelle