Programmazione desktop multipiattaforma: C ++ vs. Python [chiuso]

11

Bene, per iniziare, ho esperienza come programmatore amatoriale Obj-C / Cocoa e Ruby w / Rails. Questi sono grandi, ma non sono molto utili per scrivere applicazioni multipiattaforma (si spera che GNUStep un giorno sia abbastanza completo perché il primo sia multipiattaforma, ma quel giorno non è oggi).

C ++, da quello che riesco a raccogliere, è estremamente potente, ma anche un enorme, brutto colosso che può impiegare oltre mezzo decennio per padroneggiarlo. Ho anche letto che puoi facilmente non solo spararti ai piedi, ma saltare tutta la gamba con essa poiché la gestione della memoria è tutta manuale. Ovviamente, questo è tutto abbastanza intimidatorio. È corretto?

Python sembra fornire la maggior parte della potenza del C ++ ed è molto più facile da raccogliere al costo della velocità. Quanto è grande questo sacrificio? È significativo o può essere ignorato?

Quale mi consentirà di scrivere applicazioni veloci, stabili e altamente affidabili in un ragionevole lasso di tempo?

Inoltre, è meglio usare Qt per l'interfaccia utente o gestire invece front-end nativi separati per ogni piattaforma?

EDIT: Per maggiore chiarezza, ci sono due tipi di applicazioni che voglio scrivere: una è un frontend del database estremamente amichevole e conveniente e l'altra, che senza dubbio arriverà molto più tardi, è un editor 3D del mondo.

    
posta John Wells 23.09.2012 - 08:18
fonte

3 risposte

8

C / C ++ è veloce. La realtà è che la maggior parte delle app non ha bisogno di quella prestazione con lo stato del software attuale. Il modo usuale è di sviluppare l'applicazione in un linguaggio di alto livello, come python, piuttosto che ottimizzare quando necessario con linguaggi di livello inferiore, come C / C ++.

Python ti darà un grande incremento di produttività, è facile da imparare e abbastanza veloce. C'è Cython , che puoi usare per scrivere estensioni C da usare nella tua applicazione python con sintassi simile a Python per accelerare i colli di bottiglia.

Per le app GUI standard, python può fornire prestazioni sufficienti. E python ha qualcosa di molto interessante chiamato Kivy , un framework GUI che funziona su Mac, Windows, Linux, Android e iOS e supporta il multi-touch. La parte bonus è che le parti critiche per le prestazioni sono ottimizzate con C, usando Cython.

    
risposta data 23.09.2012 - 08:46
fonte
5

Vorrei andare con Python, dato che ti dà un grande incremento di produttività. Puoi ancora scrivere parti della tua app che richiedono velocità in C ++, c'è un progetto Cython che permette di usare le librerie C ++ direttamente in Python. Se sei preoccupato per la sicurezza delle tue fonti, anche Cython può aiutarti, puoi usarlo per compilare il tuo normale codice Python in codice C ++.

Suggerirei di incorporare il motore Chrome e utilizzare tecnologie come: HTML5 + CSS3 + Javascript + JQuery + Canvas per l'interfaccia utente.

Esiste un framework che semplifica l'integrazione del motore Chrome nell'app C ++, si chiama CEF - Chromium Embedded Framework . Supporta Windows, Linux, Mac OS.

Se ti piace Python, dai un'occhiata a CEF Python , è un progetto che fornisce collegamenti Python per il CEF framework (usando Cython ). CEF python attualmente supporta solo Windows, ma ci sono piani per altri SO.

Ecco un elenco di applicazioni che hanno avuto successo utilizzando CEF (tratto da qui ):

  • Adobe Brackets - editor di codice per il web
  • Adobe Edge - Strumento di creazione multimediale
  • AppJS: crea applicazioni desktop utilizzando Node.js
  • AOL Instant Messenger: il client Windows utilizza CEF
  • Cubiez: integra i tuoi contenuti preferiti sul desktop
  • Desura - piattaforma di gioco online
  • Dish World IPTV - piattaforma di streaming video
  • Evernote - software di gestione delle note
  • ExeOutput: consente di distribuire applicazioni html5 / php come applicazioni desktop
  • GitHub per Windows - software client GitHub per Windows
  • Janetter - software client Twitter
  • mChef - plugin per browser mIRC
  • MediaMan - software organizer
  • MetaVR - software di simulazione geografica
  • MTG Studio - software per l'organizzazione di giochi
  • OpenSpace3D - Piattaforma di sviluppo 3D
  • Rdio - piattaforma di streaming musicale
  • Spotify - piattaforma musicale in streaming
  • Steam Client - piattaforma di gioco online
  • Tencent QQ - programma di messaggistica istantanea e browser web
  • Trend Micro - software di sicurezza Internet
  • WBEA Desktop: consente di distribuire applicazioni html5 come applicazioni desktop

Dai anche un'occhiata a questo post del blog: Creazione di un'app per la qualità del desktop su tecnologie Web - Il team dell'editor di staffe spiega come l'ha realizzato utilizzando CEF framework e tecnologie web come: jQuery , Bootstrap , MENO CSS , requireJS , Jasmine per il test dell'unità , JSLint .

Dichiarazione di non responsabilità: sono l'autore del progetto CEF Python.

    
risposta data 23.09.2012 - 09:27
fonte
5

Il Qt way of C ++ è fantastico e pulito, quindi per favore, lascia la parte "brutta behemoth", li ho provati entrambi, e personalmente sono molto più produttivo / a mio agio con Qt / C ++ che con il binding Qt di Python . Questo è il mio consiglio se scegli di andare con Qt. Inoltre, oltre all'esperienza nativa fornita dal widget Qt, Qt5 e QtQuick2 con tecnologia QML e la possibilità di incorporare JavaScript e HTML5 all'interno della tua app, ti danno un look & senti, se scegli di farlo.

Quindi, perché non mi piace Python nelle app desktop e preferisco tenerlo per gli script o le cose sul lato server?

  • Python rompe un po 'la gioia multipiattaforma, il tuo client deve installare Python per eseguire la tua app (specialmente su Windows), e le diverse versioni di Python che si trovano sul sito ufficiale di Python ora rendono confuso il client, quale scaricare / installare.

  • Python to exe , crea app più grandi (in termini di dimensioni).

  • App Python, mangia più memoria.

Questo è un punto di vista personale. Il sistema genitore di Qt, i puntatori intelligenti, non ti permettono di spararti nel piede, né le gambe, il C ++ 11 ti darà ancora più funzionalità.

    
risposta data 23.09.2012 - 11:38
fonte

Leggi altre domande sui tag