2009-08-17 14 views
9

私はプログラマーとしてPythonとC++の両方に精通しています。私は自分のシンプルなWebアプリケーションを書くことを考えていたので、どの言語がサーバー側のWeb開発に適しているかを知りたいと思っていました。Webアプリケーションフレームワーク:C++対Python

私が探しているいくつかのもの:それは直感的でなければなら

  • 。私はWtが存在し、Qtのモデルに従っていることを認識しています。私がQtを嫌っているのは、難読化された手段(例えば、 "パブリックスロット:"イディオム)によって奇妙な構文を奨励することです。私がC++を書くつもりなら、それを標準の認識可能なクリーンなコードにする必要があります。 Qtが提供する気まぐれなシャンシー愚かさはありません。
  • 私が書かなければならないC++以外のコードやPythonコードが少なくて済む程、優れています。 Django(Python Webフレームワーク)のことは、HTMLを手作業で書く必要があることです。私は、HTMLフォームがwxWidgetsのアプローチをさらに活用すれば素晴らしいと思います。 Wtはこれに近いですが、wxWidgetsではなくQtモデルに従います。

私は通常、C++でビデオゲームを書いています。私はウェブ開発に経験がありません。私は多くの理由で素敵なウェブサイトを作りたいと思っています。私はそれを学習体験にしたい、私はそれが楽しいものにしたい、と私は簡単に "楽しいもの"(例えば、より少年集典、アプリの肉)に集中することができるようにしたい。

初心者向けWebデベロッパー向けのヒントはありますか?私は、Webアプリケーションのフレームワークは行く方法だと思っていますが、それはちょうど1つを選ぶことの問題です。

+0

私は手書きHTMLを値引きしません。 HTMLは、Webがどのように動作し、最初のアプリケーション(*巨大な*アプリケーションではない)で手書きで書くことの基本であり、IMOの良いアイデアになります。 –

+0

私の見解では、HTMLはwxWidgetsのようなレイアウトであり、QTは見た限りレイアウトですが、どちらのGUIフレームワークもレイアウト情報の自動生成を支援するツールを持っています。 ツールがより良く、より速く、簡単に書くことができるものを手書きで書くことは、私には意味がありません。私のWebページをGUIのHTMLレイアウトツールで構造化し、生成したHTMLをアプリケーションに貼り付けてクライアントに送るのが理想的です。 –

+0

もちろん、HTMLを自動生成するルートをDreamweaverなどで作成し、そのテンプレートをDjangoテンプレートで使用する場合は、 – agiliq

答えて

7

HTMLを書くことを避けたい場合は、GWTを試してみてください。しかし、私の経験では、HTMLとECMAScriptを生成するために中間フレームワークを使用すると、ページの手書きだけでなく、手元の場所でも決して動作しません。

[編集] nikowコメントの中には、PyjamasがGWTからPythonのポートです。

言語に関しては、C++とPythonの選択肢があれば、私はPythonを100%選択します。それらの言語間の明白な違いを無視しても、PythonにはC++よりも便利なライブラリがあります。独自の開発指向のWebサーバーを作成する必要はありません.DjangoにはWebサーバーが付属しています。あなたはカスタムテンプレートライブラリを書く必要はありません - PythonはGenshiです。 DjangoにはORMレイヤーが用意されています。さらに制御するにはSQLAlchemyを使用できます。それはほとんどコンテストではありません。

+3

Javaの代わりにPythonをGWTに使用できるPajamasプロジェクトに注意してください。 – nikow

+1

これはまだ選択された回答ではない場合は、パジャマを自分の回答として投稿することをおすすめします。 – quark

+4

Wtでは、C++ライブラリには、Webサーバーと強力なテンプレート言語、さらにはORM層の両方があります。また、偽のリクエストやその他のもので単体テストするための良い基盤もあります。 – matiu

0

C++をPythonで使用したい場合は、速度が最も重要な場合のみです。

もしこれがあなたの最初のweb-appになるのであれば、おそらくPythonだけでOKですし、あなたの開発スピードはCPPよりもはるかに優れています。

Djangoのテンプレート言語は無力ではありませんが、私にとっては実際には非常に非凡なようです。あなたは実際に純粋なpythonをテンプレートに書くことができます(これは一般的に推奨されません)。

さらに、Djangoのテンプレートシステムを好きなものに置き換えることも可能です。 私の個人的に好きな言葉はHAMLです。ここで

はこの上でいくつかのデータです: Is there a HAML implementation for use with Python and Django

+0

純粋なPythonコードをDjango(デフォルト)のテンプレート言語で書くことはできません。 (しかし、これは限定的なものではありません) – mipadi

+3

"Pythonと比べてC++を使いたい唯一の理由は、速度が最優先です。" *別の理由*:あなたの会社のすべての小さなプロジェクトが異なるプログラミング言語で実装されている状況を作り出すのを避けます。異なるIDE、標準ライブラリ、カスタムライティングライブラリ、プログラミング言語のクォークと制限、ライブラリのクォーク、プロファイラなど... –

7
  • DjangoはWeb開発を開始するために良い点である、それはC++ CppCMSに見てみるために、あなたが見れば、それははるかに近い大きな枠組み
  • ですDjango、それはQtを模倣するWtのようなものではありません。

いずれにしても、あなたのニーズに本当にかかっています。 C++は、埋め込み型または高性能のWebアプリケーションに使用できますが、中規模のWebサイトではDjangoが優れています。 (そして、私はCppCMSの開発者です)

+0

+1:また、Djangoフォームでは、HTMLを記述する必要はありません。ページ全体はHTML形式でなければなりませんが、HTML形式の入力は特にあなたから離れています。 –

1

私はあなたの方がいいと思うのですが、あなたはcppCMSの機能を拡張して独自のフレームワークを書くことができます。

wtは良いアイデア設計でしたが、なんとなくそれは適切ではありませんでした。

1

あなたがPythonのフレームワークを調べているなら(例外的な答えに基づいて私はあなただと思う)、実際にあなたにはCherryPyをチェックアウトしてもらうべきだと思います。 CherryPyアプリを書くとき、あなたは本当にPythonアプリを書いているだけです。フレームワークは本当に急いであなたの方法から抜け出す。 ORM(ORMを使用することを選択した場合)などを自由に選択することができます。真剣に、10分または20分かかると見てください。

0

django、pylos、web2py、wtのようないくつかのものを見ていると、私の推薦はweb2pyです。 Pythonの "Ruby on Rails"版で、簡単に学ぶことができます。

11

ので、私は重量となるだろう:あなたは既にC++

  • を知っ

    • あなたはそれが非常によく書かれているHTML
    • の多くを知っている必要はありませんので、それは、素敵なlayout systemを持っており、コードに喜んで
    • あなたの配備されたアプリは、より少ないハードウェアでパイソンアプリケーションの負荷の50倍を処理します(パイロンアプリケーションの経験から、ploneアプリケーションの負荷の10,000倍:P)
    • 最初の質問で男はそうでないと言うのライブラリ、より
    • Web 2.0は後に考えられません。すべてのPythonフレームワーク(私が知る限り)のようにRequest + Responseモデルではなく、イベント駆動型のインタラクティブモデルで設計されました。
      • ない
      • バックでhttp滝LINX
    • ようなブラウザのためにそれはより多くのWebアプリケーションよりもGUIアプリをコーディングするようなものであればそれは優雅に戻って通常のアヤックスへWebSockets
    • 利用可能
    • かの滝を使用していますこれはおそらくあなたが慣れ親しんだものです
    • これは静的に型付けされているため、エラーが起こりにくいです。 def delete(id):はintか文字列ですか?
    • ユニットテストは、(私のアプリに少なくとも)(コンパイル時間を含む)を実行するために私のpythonのアプリのユニットテストよりも10〜100倍少ない時間
    • それは強いとフレンドリーなコミュニティを持っているを取ります。すべての私のemail list投稿は0〜3日で答えられます。
  • +3

    今、私はジャンゴアプリを使って作業しています。もう少しWtとC++の利点を追加します。私はdjangoアプリケーションでは、コードのほとんどがライブラリにあり、私のアプリケーションコードは主にコールバックであることが分かっています。これは、私のコードが呼び出される順序を知らないので、デバッグするのが少し難しくなります。逆に、djangoのコードはWtアプリケーションよりもずっと少なく、少量のコードで多くのことができます。また、djangoアプリケーションは、ポーリングやDBの読み込みのために、アイドル時に多くのリソースを使用します。 (Wtもポーリングを行いますが、パケットは非常に小さく、DBキャッシングと通知が改善されているようです)。 – matiu

    +0

    -1:HTMLを知らずにアプリケーションを開発した場合、GUIのようなGUIはウェブには向いていないし、キャッシュもサポートしていないし、そのセッションモデルは常にその性能を制限するだろう。 – Artyom

    +0

    また、Wtテンプレートエンジンは(すみません)ジョークです。 – Artyom

    関連する問題