20

問題は、継続(Rubyの場合)とコルーチン(Pythonの場合)がWebプログラミングに広く使用されないのはなぜですか?

サーバー側のWebプログラミングは、要求間で状態を保持するという問題によって困難になります。これに対する2つのエレガントで関連性のあるソリューションは、継続(Scheme、Ruby、Smalltalkに見られる)とコルーチン(PythonとGoに見られる)です。

BruceTateはBeyondJava(O'Reilly、2005)で、RubyonRailsとSeasideをWebプログラミングのエキサイティングな新しい開発として語っています。私にとって、Seasideは真のブレークスルーでした。Smalltalkの継続を使用することで、Seasideは複雑な要求/応答シーケンスのプログラミングを非常に簡単にしました。

コールバックを減らすためにTornadoとTwistedで使用されているPythonコルーチンについては知っていますが、たとえば、オンライン購入を完了するための一連のHTTPリクエストを処理する単一のコルーチンでビュー/コントローラーを作成する場合と比較すると、これはやや低レベルです。

紙の上でとてもよく見えるこれらのアイデアが、PythonとRubyでより広く展開されていないのはなぜだろうか。それは単なる文化的な問題ですか?これらの言語で実装されている機能の制限はありますか?それとも、Web開発のコンテキストでこれらのアプローチに根本的な欠陥がありますか?

4

3 に答える 3

5

私はSeasideを使用しましたが、継続はクライアントサーバーWebアプリを開発するための美しいモデルです。それらは、他の言語がそれを行っていなかった理由を私が信じることができなかった従来のクライアント/サーバーアプリケーションを単純化します。

しかし残念ながら、Webアプリは以前のものではありません。1ページだけをリクエストする代わりに、ajaxを使用すると、異なる時間に複数のリクエストがあります。そのため、継続は以前ほど有用ではありません。

Avi Bryant(Seasideの元の作者)でさえ、ajaxの下では、継続よりもコールバックを簡単にする(イベント駆動型プログラミング)ことが重要であると述べています。

詳細については、このクォーラのディスカッションをご覧ください: http ://www.quora.com/Whats-the-best-continuation-based-web-framework

于 2012-08-29T02:40:35.487 に答える
1

アプリケーションは、継続/コルーチンフレームワーク、およびサポートライブラリで作成する必要があります。初心者が理解するのは簡単なモデルではありません。また、geventのようなはるかに簡単なフレームワークがあります。これは、グリーンスレッドの作成と同じ可能性を提供し、モンキーパッチのおかげで使いやすくなっています。

于 2012-08-31T15:29:55.627 に答える
1

主に非技術的な理由によるものです。SeasideやSmalltalkを知っている人の数は少ないので、雇うことができる安価なプログラマーの大規模なプールはありません。このため、Seasideシステムのインストールと保守の方法を知っているサービスプロバイダーの数も少なくなっています。

于 2012-10-13T15:31:01.590 に答える