web-dev-qa-db-ja.com

クロスプラットフォームデスクトッププログラミング:C ++とPython

さて、最初に、私はアマチュアのObj-C/CocoaとRuby w/Railsプログラマー)の経験があります。これらは素晴らしいですが、クロスプラットフォームアプリケーションの作成にはあまり役立ちません(うまくいけば、GNUStepが最初にマルチプラットフォームになるには十分な日になるでしょうが、その日は今日ではありません)。

私が集めることができるC++は非常に強力ですが、習得するのに半年以上かかる巨大で醜い巨大なものでもあります。メモリ管理はすべて手動なので、足で自分を撃つだけでなく、足全体を吹き飛ばすことが非常に簡単にできることも読みました。明らかに、これはすべてかなり威圧的です。それが正しいか?

PythonはC++のほとんどの機能を提供しているようで、速度を犠牲にして選択する方がはるかに簡単です。この犠牲の大きさはどれくらいですか?それは意味がありますか、それとも無視できますか?

適切な時間内に、高速で安定した、信頼性の高いアプリケーションを作成できるのはどれですか。

また、UIにQtを使用するか、プラットフォームごとに個別のネイティブフロントエンドを維持する方が良いですか。

編集:さらに明確にするために、私が書きたいアプリケーションには2つのタイプがあります。1つは非常にフレンドリーで便利なデータベースフロントエンドで、もう1つは間違いなく後で登場する3Dワールドエディターです。

11
John Wells

C/C++は高速です。実際には、ほとんどのアプリは現在のハードウェアの状態でそのパフォーマンスを必要としません。通常の方法は、Pythonなどの高水準言語でアプリケーションを開発し、C/C++などの低水準言語で必要に応じて最適化することです。

Pythonは生産性を大幅に向上させます。習得は簡単で、かなり高速です。 Cython があります。これを使用して、pythonアプリでpythonのような構文を使用してボトルネックをスピードアップするC拡張を作成できます。

標準的なGUIアプリの場合、pythonで十分なパフォーマンスを得ることができます。そしてpythonには Kivy という非常に優れた機能があり、GUIフレームワークです。 Mac、Windows、Linux、AndroidおよびiOSで動作し、マルチタッチをサポートします。ボーナス部分は、パフォーマンスが重要な部分がCythonを使用してCで最適化されていることです。

9
Hakan Deryal

Pythonを使用すると、生産性が大幅に向上します。 C++でスピードを必要とするアプリの部分を書き込むこともできます。Pythonで直接C++ライブラリを使用できる Cython プロジェクトがあります。ソースのセキュリティが心配な場合は、Cythonも役立ちます。これを使用して、通常のpythonコードをC++コードにコンパイルできます。

Chromeエンジンを埋め込み、UIにHTML5 + CSS3 + Javascript + JQuery + Canvasなどのテクノロジーを使用することをお勧めします。

ChromeエンジンをC++アプリに簡単に埋め込むことができるフレームワークがあり、これは CEF-Chromium Embedded Framework と呼ばれています。Windows、Linux、Mac OSをサポートしています。

Pythonが好きな場合は、 CEF Python を見てください。これは、CEFフレームワークにpythonバインディングを提供するプロジェクトです( Cython を使用して) )。CEF pythonは現在Windowsのみをサポートしていますが、他のOSも計画されています。

CEFを使用して成功したアプリケーションのリストを次に示します( ここ から取得):

  • Adobe Brackets-Web用のコードエディター
  • Adobe Edge-マルチメディアオーサリングツール
  • AppJS-Node.jsを使用してデスクトップアプリケーションを構築する
  • AOLインスタントメッセンジャー-WindowsクライアントはCEFを使用
  • Cubiez-お気に入りのコンテンツをデスクトップに統合します
  • Desura-オンラインゲームプラットフォーム
  • Dish World IPTV-ストリーミングビデオプラットフォーム
  • Evernote-記録ソフトウェア
  • ExeOutput-html5/phpアプリケーションをデスクトップアプリケーションとしてデプロイできます
  • GitHub for Windows-Windows用GitHubクライアントソフトウェア
  • Janetter-Twitterクライアントソフトウェア
  • mChef-mIRCブラウザプラグイン
  • MediaMan-オーガナイザーソフトウェア
  • MetaVR-地理シミュレーションソフトウェア
  • MTG Studio-ゲームオーガナイザーソフトウェア
  • OpenSpace3D-3D開発プラットフォーム
  • Rdio-ストリーミング音楽プラットフォーム
  • Spotify-ストリーミング音楽プラットフォーム
  • Steamクライアント-オンラインゲームプラットフォーム
  • Tencent QQ-インスタントメッセージングプログラムおよびWebブラウザ
  • Trend Micro-インターネットセキュリティソフトウェア
  • WBEAデスクトップ-html5アプリケーションをデスクトップアプリケーションとしてデプロイできます

また、このブログエントリもご覧ください。 Webテクノロジでデスクトップ品質のアプリケーションを構築する - CEFフレームワーク を使用して構築した方法を説明するブラケットエディタチームと、以下のようなWebテクノロジ:- jQueryBootstrapLESS CSSrequireJSJasmine for Unit Testing 、- JSlint

免責事項:私はCEF Pythonプロジェクトの作成者です。

5
Czarek Tomczak

C++のQtの方法は素晴らしくてきれいなので、「醜い巨大な」部分を削除してください。両方試してみましたが、個人的には、PythonのQtバインディングよりもQt/C++の方がはるかに生産的/快適です。 Qtを選択した場合のアドバイスです。さらに、Qtウィジェットが提供するネイティブエクスペリエンスのほかに、Qt5および QtQuick2 QMLテクノロジーと、JavaScriptとHTML5をアプリ内に埋め込む機能により、モダンなWebのようなルックアンドフィールを選択できますそうするために。

では、なぜデスクトップアプリでPython)が嫌いで、スクリプトやサーバー側のことをするためにそれを保持したいのですか?

  • Pythonはクロスプラットフォームの喜びを少し壊し、クライアントはアプリを実行するためにPythonをインストールする必要があります(特にWindowsで))、および異なるPythonバージョンpythonの公式Webサイトにあるため、クライアントを混乱させ、ダウンロード/インストールします。

  • Python to exe 、より大きなアプリを作成します(サイズに関して)。

  • Pythonアプリは、より多くのメモリを消費します。

それは個人的な見解です。 Qtの親システムであるスマートポインターは、足でも足でも撃たれることができません。C++ 11はさらに多くの機能を提供します。

5
01walid