Хорошо, для начала у меня есть опыт программиста-любителя Obj-C / Cocoa и Ruby с Rails. Это здорово, но они не очень полезны для написания кроссплатформенных приложений (надеюсь, однажды GNUStep будет достаточно завершенным, чтобы первый стал мультиплатформенным, но этот день еще не сегодня).
C ++, насколько я могу судить, чрезвычайно мощный, но в то же время огромный уродливый чудовище, на освоение которого может уйти полдесяти лет или больше. Я также читал, что вы можете очень легко не только выстрелить себе в ногу, но и оторвать им всю ногу, поскольку управление памятью осуществляется вручную. Очевидно, это все довольно пугающе. Это правильно?
Кажется, что Python предоставляет большую часть возможностей C ++, и его гораздо проще подобрать ценой скорости. Насколько велика эта жертва? Это имеет смысл или может быть проигнорировано?
Что заставит меня писать быстрые, стабильные, высоконадежные приложения в разумные сроки?
Кроме того, лучше ли использовать Qt для вашего пользовательского интерфейса или вместо этого поддерживать отдельные родные интерфейсы для каждой платформы?
РЕДАКТИРОВАТЬ: Для большей ясности, я хочу написать два типа приложений: одно - чрезвычайно дружественный и удобный интерфейс базы данных, а другое, которое, без сомнения, появится намного позже, - редактор трехмерного мира.
источник
Ответы:
C / C ++ работает быстро. Реальность такова, что большинству приложений такая производительность не нужна в зависимости от состояния оборудования. Обычный способ - разработать приложение на языке высокого уровня, например на python, а затем оптимизировать его при необходимости с языками низкого уровня, такими как C / C ++.
Python значительно повысит производительность, его легко освоить и достаточно быстро. Существует Cython , который вы можете использовать для написания расширений C для использования в вашем приложении Python с Python-подобным синтаксисом для устранения узких мест.
Для стандартных приложений с графическим интерфейсом Python может дать вам достаточно производительности. А в python есть что-то очень классное, называемое Kivy , платформа с графическим интерфейсом, которая работает на Mac, Windows, Linux, Android и iOS и поддерживает мультитач. Бонусная часть состоит в том, что критические части производительности оптимизированы с помощью C, используя Cython.
источник
Я бы пошел с Python, поскольку он дает вам большой прирост производительности. Вы по-прежнему можете писать части своего приложения, которым требуется скорость, на C ++, есть проект Cython, который позволяет использовать библиотеки C ++ непосредственно на Python. Если вы беспокоитесь о безопасности своих источников, Cython также может помочь с этим, вы можете использовать его для компиляции вашего обычного кода Python в код C ++.
Я бы рекомендовал встраивать движок Chrome и использовать такие технологии, как: HTML5 + CSS3 + Javascript + JQuery + Canvas для пользовательского интерфейса.
Существует интегрированная среда, которая позволяет легко встраивать движок Chrome в ваше приложение C ++, она называется CEF - Chromium Embedded Framework . Поддерживает Windows, Linux, Mac OS.
Если вам нравится Python, взгляните на CEF Python , это проект, который предоставляет привязки Python для инфраструктуры CEF (с использованием Cython ). CEF python в настоящее время поддерживает только Windows, но есть планы и для других ОС.
Вот список приложений, которые успешно использовали CEF (взяты отсюда ):
Также посмотрите на эту запись в блоге: Создание приложения для настольных компьютеров на основе веб-технологий - команда редакторов скобок, объясняющая, как они создавали его с использованием инфраструктуры CEF и таких веб-технологий, как: jQuery , Bootstrap , LESS CSS , requireJS , Jasmine for Unit-тестирование , JSlint ,
Отказ от ответственности: я являюсь автором проекта CEF Python.
источник
Путь Qt в C ++ великолепен и чист, поэтому, пожалуйста, отбросьте часть «уродливый бегемот», я пробовал их обоих, и лично я гораздо более продуктивен / удобен с Qt / C ++, чем с привязкой Qt в Python. Это мой совет, если вы решите пойти с Qt. Кроме того, помимо родного опыта, предоставляемого виджетом Qt, Qt5 и QtQuick2 с технологией QML и возможностью встраивать JavaScript и HTML5 в ваше приложение, при желании вы получите современный веб-внешний вид, если вы решите это сделать.
Итак, почему я не люблю Python в настольных приложениях и предпочитаю хранить его для сценариев или для серверных вещей?
Python немного ломает кросс-платформенную радость, ваш клиент должен установить Python для запуска вашего приложения (особенно в Windows), а различные версии Python, представленные на официальном сайте python, теперь приводят клиента в замешательство, какую из них загрузить / установить ,
Python для исполнения , создавать большие приложения (с точки зрения размера).
Приложения Python, есть больше памяти.
Это личная точка зрения. Родительская система Qt, умные указатели, не позволит вам выстрелить себе ни в ногу, ни в ноги, C ++ 11 предоставит вам еще больше возможностей.
источник