Dobra, na początek mam doświadczenie jako programista Obj-C / Cocoa i Ruby w / Rails. Są świetne, ale nie są tak naprawdę pomocne w pisaniu aplikacji wieloplatformowych (mam nadzieję, że GNUStep kiedyś będzie wystarczająco kompletny, aby pierwsza była wieloplatformowa, ale ten dzień nie jest dzisiaj).
C ++, z tego co mogę zebrać, jest niezwykle potężny, ale także ogromny, brzydki behemot, którego opanowanie może zająć pół dekady lub więcej. Przeczytałem również, że bardzo łatwo możesz nie tylko strzelić sobie w stopę, ale także zdmuchnąć nią całą nogę, ponieważ zarządzanie pamięcią odbywa się ręcznie. Oczywiście wszystko to jest dość przerażające. Czy to jest poprawne?
Python wydaje się zapewniać większość mocy C ++ i jest znacznie łatwiejszy do zdobycia kosztem szybkości. Jak duża jest ta ofiara? Czy to ma sens, czy można je zignorować?
Co sprawi, że będę pisać szybkie, stabilne i niezawodne aplikacje w rozsądnym czasie?
Ponadto, czy lepiej jest używać Qt dla interfejsu użytkownika, czy zamiast tego utrzymywać osobne, natywne interfejsy dla każdej platformy?
EDYCJA: Dla większej przejrzystości, są dwa typy aplikacji, które chcę napisać: jeden jest niezwykle przyjaznym i wygodnym frontendem do bazy danych, a drugi, który bez wątpienia pojawi się znacznie później, to edytor światów 3D.
źródło
Odpowiedzi:
C / C ++ jest szybki. Rzeczywistość jest taka, że większość aplikacji nie potrzebuje takiej wydajności w stanie obecnego oprogramowania sprzętowego. Zwykle jest to aplikacja napisana w języku wysokiego poziomu, takim jak Python, a następnie zoptymalizowana w razie potrzeby za pomocą języków niższego poziomu, takich jak C / C ++.
Python da ci duży wzrost wydajności, jest łatwy do nauczenia się i dość szybki. Istnieje Cython , którego można używać do pisania rozszerzeń C do użycia w aplikacji Python ze składnią podobną do Pythona, aby przyspieszyć wąskie gardła.
W przypadku standardowych aplikacji GUI Python może zapewnić wystarczającą wydajność. A Python ma coś bardzo fajnego o nazwie Kivy , framework GUI, który działa na komputerach Mac, Windows, Linux, Android i iOS i obsługuje funkcję multi-touch. Dodatkową częścią jest to, że części krytyczne pod względem wydajności są zoptymalizowane za pomocą C, używając Cython.
źródło
Wybrałbym Python, ponieważ daje to duży wzrost wydajności. Nadal możesz pisać części aplikacji, które wymagają szybkości w C ++, istnieje projekt Cython , który pozwala na korzystanie z bibliotek C ++ bezpośrednio w Pythonie. Jeśli obawiasz się o bezpieczeństwo swoich źródeł, Cython może również w tym pomóc, możesz go użyć do skompilowania normalnego kodu Pythona do kodu C ++.
Polecam osadzić silnik Chrome i korzystać z technologii takich jak: HTML5 + CSS3 + JavaScript + JQuery + Canvas dla interfejsu użytkownika.
Istnieje platforma, która ułatwia osadzenie silnika Chrome w aplikacji C ++, nazywa się CEF - Chromium Embedded Framework . Obsługuje Windows, Linux, Mac OS.
Jeśli podoba Ci się Python, spójrz na CEF Python , to projekt, który zapewnia powiązania Pythona dla frameworka CEF (za pomocą Cython ). Python CEF obsługuje obecnie tylko system Windows, ale istnieją plany dotyczące innych systemów operacyjnych.
Oto lista aplikacji, które odniosły sukces przy użyciu CEF ( stąd ):
Zobacz także ten wpis na blogu: Budowanie aplikacji o jakości pulpitu w technologiach internetowych - zespół redaktorów nawiasów wyjaśniający, w jaki sposób zbudowali ją przy użyciu środowiska CEF i technologii internetowych, takich jak: jQuery , Bootstrap , LESS CSS , wymagają JS , Jasmine do testowania jednostek , JSlint .
Oświadczenie: Jestem autorem projektu CEF Python.
źródło
Sposób Qt w C ++ jest świetny i czysty, więc proszę, porzuć część „brzydkiego behemota”, wypróbowałem je obie i osobiście jestem o wiele bardziej produktywny / wygodny z Qt / C ++ niż z wiązaniem Qt Pythona. To moja rada, jeśli zdecydujesz się na Qt. Oprócz natywnego doświadczenia zapewnianego przez widżet Qt, Qt5 i QtQuick2 z technologią QML oraz możliwość osadzania JavaScript i HTML5 w Twojej aplikacji, zapewniają Ci nowoczesny wygląd podobny do sieci, jeśli zdecydujesz się to zrobić.
Dlaczego więc nie lubię Pythona w aplikacjach komputerowych i wolę przechowywać go w skryptach lub po stronie serwera?
Python trochę zrywa z radością międzyplatformową, twój klient musi zainstalować Pythona, aby uruchomić twoją aplikację (szczególnie w systemie Windows), a różne wersje Pythona, które są na oficjalnej stronie internetowej pytona, powodują, że klient jest zdezorientowany, którą z nich pobrać / zainstalować .
Python exe , tworzenie większych aplikacji (pod względem wielkości).
Aplikacje Python, jedz więcej pamięci.
To osobisty punkt widzenia. System nadrzędny Qt, inteligentne wskaźniki, nie pozwoli ci strzelić sobie w stopę, ani w nogi, C ++ 11 da ci jeszcze więcej funkcji.
źródło