Кросплатформенне настільне програмування: C ++ проти Python [закрито]


11

Добре, для початку я маю досвід як аматорський програміст Obj-C / Cocoa та Ruby w / Rails. Вони чудові, але вони не дуже корисні для написання кросплатформних додатків (сподіваємось, GNUStep одного дня буде достатньо повним, щоб перша була багатоплатформна, але цей день не сьогодні).

C ++, з того, що я можу зібрати, надзвичайно потужний, але також величезний, потворний бегемот, який може освоїти пів десятиліття і більше. Я також читав, що ви можете дуже легко не тільки застрелити себе в ногу, але й збити всю цю ногу, оскільки управління пам’яттю - це все вручну. Очевидно, це все досить залякано. Це правильно?

Здається, Python забезпечує більшу частину енергії C ++ і набагато простіше підібрати ціною швидкості. Наскільки велика ця жертва? Це має сенс чи його можна ігнорувати?

Що дозволить мені писати швидкі, стабільні, високонадійні програми за розумну кількість часу?

Крім того, краще використовувати Qt для вашого інтерфейсу або замість цього підтримувати окремі, рідні передні кінці для кожної платформи?

EDIT: Для додаткової ясності я хочу написати два типи програм: одне - надзвичайно дружній та зручний інтерфейс бази даних, а інше, яке, без сумніву, з’явиться набагато пізніше, - це редактор 3D світу.


Ви ставите питання, на які відповіді будуть дуже суб'єктивними - ІМХО, що не є конструктивним, таким чином голосування закрити. Ви також задаєте принаймні 4 різні запитання в одному. Як ще хтось, крім вас, знає, чи кращий вибір для вас C ++ або Python ? Я пропоную вам спробувати створити невеликий додаток для графічного інтерфейсу з Python (який повинен займати у вас не більше дня) і той самий додаток з C ++, і порівняти самостійно.
Док Браун

Я здогадуюсь того, що я насправді намагаюся запитати, дається те, що я шукаю, що об'єктивно кращий вибір?
Джон Веллс

Чи можете ви дати додатковий контекст - що потрібно робити для настільних програм? Багато математики? Додаток про продуктивність? Доступ до бази даних? Гра?
JBRWilkinson

Додано редагування, щоб уточнити, що я хочу зробити.
Джон Веллс

Я б вирішив використовувати ту саму мову операційної системи та / або бібліотеки GUI. Ви можете зробити набагато більше глибоких маніпуляцій з інтерфейсом користувача легше. Спробуйте імітувати щось таке просте, як повноекранний (натисніть F11 у своєму браузері) на високому рівні, як Java або C #. Я решту своєї справи. Рідні рішення є портативними для більшого різноманіття пристроїв, ніж рішення високого рівня, такі як java (за іронією долі).
Лорд Тидус

Відповіді:


9

C / C ++ швидко. Реальність полягає в тому, що більшість додатків не потребують такої продуктивності зі станом поточного обладнання. Звичайний спосіб - розробити додаток мовою високого рівня, як python, ніж оптимізувати, коли це потрібно для мов нижчого рівня, як C / C ++.

Python дасть вам великий приріст продуктивності, його легко вивчити та досить швидко. Існує Cython , який ви можете використовувати для написання розширень C для використання у вашому додатку python із синтаксисом, схожим на python, щоб прискорити вузькі місця.

Для стандартних GUI-додатків python може забезпечити достатню продуктивність. А у python є щось дуже круте під назвою Kivy , графічний інтерфейс GUI, який працює на Mac, Windows, Linux, Android та iOS і підтримує мультитач. Бонусна частина полягає в тому, що критичні показники продуктивності оптимізовані за допомогою C, використовуючи Cython.


1
Ви, напевно, вірно щодо швидкості. Ківі здається дуже здібним, але чи може він створювати віджети, які є рідними для системи?
Джон Веллс

Ні, він використовує власний графічний движок для віджетів, використовуючи OpenGL ES. Qt, мабуть, стане вашою найкращою ставкою для рідних віджетів на різних платформах.
Хакан Деріал

5

Я б пішов з Python, оскільки це дає вам великий приріст продуктивності. Ви все ще можете писати частини свого додатка, які потребують швидкості в C ++, є проект Cython, який дозволяє використовувати бібліотеки C ++ безпосередньо в Python. Якщо ви стурбовані безпекою своїх джерел, Cython також може допомогти у цьому, ви можете використовувати його для компіляції вашого звичайного пітонного коду до коду 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 (взято звідси ):

  • Adobe Brackets - редактор коду для Інтернету
  • Adobe Edge - інструмент для створення мультимедійних файлів
  • AppJS - створюйте настільні програми за допомогою Node.js
  • AOL Instant Messenger - клієнт Windows використовує CEF
  • Cubiez - інтегрує улюблений вміст у робочий стіл
  • Desura - онлайн-ігрова платформа
  • Dish World IPTV - платформа потокового відео
  • Програмне забезпечення Evernote - примітка
  • ExeOutput - дозволяє розгорнути програми html5 / php як настільні програми
  • GitHub для Windows - клієнтське програмне забезпечення GitHub для Windows
  • Janetter - клієнтське програмне забезпечення twitter
  • mChef - плагін браузера mIRC
  • MediaMan - програмне забезпечення організатора
  • MetaVR - програмне забезпечення для географічного моделювання
  • MTG Studio - програмне забезпечення для організаторів ігор
  • OpenSpace3D - платформа для розробки 3D
  • Rdio - потокова музична платформа
  • Spotify - потокова музична платформа
  • Steam Client - онлайн-ігрова платформа
  • Tencent QQ - програма для обміну миттєвими повідомленнями та веб-браузер
  • Trend Micro - програмне забезпечення для безпеки в Інтернеті
  • WBEA Desktop - дозволяє розгорнути програми html5 як настільні програми

Також ознайомтеся з цим записом у блозі: Створення додатку якості для робочого столу на веб-технологіях - команда редакторів Brackets пояснює, як вони побудували його за допомогою CEF-фреймворку та веб-технологій, таких як: jQuery , Bootstrap , МЕНШЕ CSS , потребує JS , Жасмін для тестування одиниць , JSlint .

Відмова: Я автор проекту CEF Python.


Дякуємо за ваш внесок! CEF виглядає досить приємно, але я сподіваюся надати можливість для рідного користування на кожній платформі, якщо це можливо, що важко відтворити за допомогою HTML, CSS та JS.
Джон Веллс

@JohnWells, чому рідні? Люди звикли до веб-досвіду. Подивіться на Windows 8, кожна наступна ОС від Microsoft має менше стосунку до рідних, вони змушують веб-технологій, і це майбутнє, такого поняття, як "рідний досвід", немає, це минуле.
Чарек Томчак

Це залежить від того, про яке програмне забезпечення ви говорите. Програми, орієнтовані на споживача, можуть бути добре з "веб", але це не так добре, як програмне забезпечення, орієнтоване на створення вмісту. Крім того, хоча Windows 8 може бути орієнтована на веб-технології, Mac OS все ще міцно заземлена на рідній землі, і її користувачі, як правило, не люблять програмне забезпечення, яке відхиляється від цього.
Джон Веллс

1
Цілком правильно JBRWilkinson, але я дійсно не хочу писати відмінні CSS-віджети (у випадку CEF) для кожної платформи, якщо мені цього не потрібно.
Джон Веллс

1
Будучи самим користувачем Mac, рідний досвід для мене дуже важливий. На моїх очах, нічого гіршого, ніж програма, яка не з’являється і діє відповідно до ОС, на якій вона працює. Навіть чогось на кшталт масового підвищення продуктивності недостатньо, щоб переважати це.
Джон Веллс

5

Спосіб Qt для C ++ чудовий і чистий, тому, будь ласка, киньте "потворний бегемот", я спробував їх і те, і особисто мені набагато продуктивніше / комфортніше з Qt / C ++, ніж з прив'язкою Qt Python. Це моя порада, якщо ви вирішите поїхати з Qt. Крім того, окрім власного досвіду, який надає віджет Qt, Qt5 та QtQuick2 з технологією QML та можливістю вбудовувати JavaScript та HTML5 у свій додаток, надає вам сучасний зовнішній вигляд, схожий на Інтернет, якщо ви вирішите це зробити.

Отже, чому мені не подобається Python у додатках для настільних комп’ютерів, і я вважаю за краще зберігати його за сценаріями або на стороні сервера?

  • Python трохи порушує радість між платформами, ваш клієнт повинен встановити Python для запуску вашої програми (особливо в Windows), а різні версії Python, які розміщені на офіційному веб-сайті python, тепер змушують клієнта заплутатися, яку з них завантажити / встановити .

  • Python для exe , робити більші додатки (у розмірі).

  • Програми Python, їжте більше пам’яті.

Це особиста точка зору. Батьківська система Qt, розумні покажчики, не дозволяють вам стріляти в ногу, ні ноги, C ++ 11 надасть вам ще більше можливостей.


3
"ваш клієнт повинен встановити Python для запуску вашої програми" - ви можете поширювати файли python за допомогою свого додатка, користувач не потребує встановлення python вручну. Вам не потрібно використовувати py2exe або інших виробників баггі-файлів Exe (з мого досвіду), див. Вбудовування Python , це лише кілька рядків коду c ++, замініть PyRun_SimpleString на PyRun_SimpleFile, ви можете легко скомпілювати його самостійно, що не повинно робити накладних витрат розмір вашої програми. "Програми Python, їжте більше пам'яті." - використовуйте Cython для оптимізації пам'яті, яка вимагає частин вашого додатка.
Czarek Tomczak
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.