1. ホーム
  2. python

[解決済み] Stackless Pythonの欠点は何ですか?[クローズド]

2022-06-24 18:52:30

質問

最近読んだ スタックレスPython について最近読んだのですが、これは vanilla cPython と比較して多くの利点があるように思われます。無限再帰、マイクロスレッド、継続などのクールな機能をすべて持ち、同時に cPython よりも高速です (約 10%, 仮に Python wiki を信じるとしたら) と互換性があります (少なくともバージョン 2.5、2.6、3.0)。

これらはすべて、本当であるにはあまりに良すぎるように見えます。しかし TANSTAAFL は、Pythonコミュニティの間でStacklessに対する熱意をあまり感じませんし、また PEP 219 は実現されたことがありません。なぜでしょうか?スタックレスの欠点は何なのか?スタックレスのクローゼットにはどんな骨格が隠されているのでしょうか?

(Stacklessが本当の並行処理を提供しないことは知っていますが、並行処理の方法でより簡単にプログラミングができるようになっただけです。それは本当に私を悩ますことはありません)

どのように解決するのですか?

Wiki にある "Stackless は 10% 速い" がどこから来たのか分かりませんが、また、私はそのパフォーマンス数値を測定しようとしたことがありません。Stackless が何をしたらそんなに大きな違いが出るのか、私には思いつきません。

Stackless は、いくつかの組織的/政治的な問題を抱えた素晴らしいツールです。

1つ目は、歴史から来るものです。Christian Tismer は、最終的に Stackless になったものについて、約10年前に話し始めました。彼は何をしたいかというアイデアを持っていましたが、自分が何をしているのか、なぜ人々がそれを使うべきなのかを説明するのに苦労していました。これは、彼のバックグラウンドがコルーチンのようなアイデアに関する CS トレーニングを受けていなかったことと、彼のプレゼンテーションと議論が非常に実装指向であることが原因の一部で、継続にまだ深く関わっていない人が、問題に対する解決策としてそれを使用する方法を理解するのは難しいのです。

そのため、初期のドキュメントは貧弱でした。

そのため、初期のドキュメントは貧弱でした。PyCon 2007 で私は " について講演を行いました。 スタックレスを使う PyCon のアンケートによると、これはかなり好評でした。Richard Tew が素晴らしい仕事をしてくれて、アンケートの数字を更新してくれました。 スタックレスドットコム を更新し、新しい Python がリリースされたときに配布を維持するために素晴らしい仕事をしています。彼は CCP ゲーム の社員であり、EVE Online の開発者です。EVE Online は Stackless をゲームシステムの重要な部分として使用しています。

CCP Games は、Stackless について話すときに使用される最大の実例でもあります。Stackless の主なチュートリアルは、Grant Olson 氏の「quot; Stackless Pythonによる並行プログラミング入門 で、これもゲーム指向です。このため、Stackless がゲーム指向であると誤解されているようですが、むしろゲームの方が簡単に継続指向になります。

もうひとつの困難は、ソースコードでした。オリジナルのフォームでは、Python の多くの部分を変更する必要があり、Python のリードである Guido van Rossum が警戒していました。その理由のひとつは、call/cc のサポートで、より上位の形式があるのに goto をサポートするのはあまりに酷だとして後に削除されたのだと思います。

その後のリリースでは変更を必要とせず、Tismer は Python への搭載を推し進め続けました。多少の検討はあったものの、(私が知る限り) 公式なスタンスは、CPython は Python の実装であるだけでなくリファレンス実装としての意味もあり、Jython や Iron Python では実装できないので Stackless の機能は含めないというものです。

"の予定は一切ございません。 コード ベースへの大幅な変更 を行う予定はありません。この引用と Arafangion's からの参照ハイパーリンク (コメントを参照) は、およそ 2000/2001 年のものです。構造的な変更はとっくに行われていて、それは私が上で述べたようなものです。現在のStacklessは、ここ数年の間にコードベースに小さな手を加えただけで、安定し成熟しています。

Stackless の最後の制限として、Stackless の強力な支持者がいないことが挙げられます。Tismer は現在 PyPy という Python のための Python の実装に深く関わっています。彼はPyPyにStacklessの機能を実装し、Stacklessそのものよりもずっと優れていると考えており、PyPyが将来の道であると感じています。TewはStacklessをメンテナンスしていますが、アドボカシーには興味がないようです。私もそのような役割になることを考えましたが、それで収入を得られるとは思えませんでした。

もしStacklessのトレーニングが必要なら、遠慮なく 連絡先 ! :)