web-dev-qa-db-ja.com

Pythonはブラウザでクライアント側で使用するには遅すぎるでしょうか?

Pythonはブラウザで使用するには遅すぎるとのことですが、.

私はJavascriptがこの点で優れていると思います。Googleのような会社が生き残るためにそれを必要とするためにJavascriptを速く必要とする(そして速くした)ためですが、私は間違っている可能性があります。

PythonとJavascriptの設計に違いがあり、ブラウザでのパフォーマンスに影響を及ぼしますか?)

今のところクライアントサイドはないのでPython=実装なので、私の質問は誰かが行った声明から来ているので、おそらく言語自体に何らかの関係があると思いますが(信じられませんが)それ)。

17
Profpatsch

まず、languagesimplementationsを明確に区別する必要があります。言語は抽象的なものであり、実装はパフォーマンスを測定できる具体的なものです。たとえば、LISPはかつては非効率で実際に使用することはできないと考えられていましたが、コンパイラは成熟し続け、最終的には専用のハードウェアが開発されました。 1980年代のある時点で、これは高性能ワークステーションの開発に最適な開発プラットフォームでした。

とは言っても、最も簡単な答えは GoogleのV8はPython(CPython)の標準の実装)を標準化する のような高速のJavascript実装です。V8は高度に最適化されていますCPythonはかなり単純なのに驚くほど高速なJITerを備えた仮想マシンVM比較すると。JITを使用したPythonの実装がありますが、それは 約5〜6倍高速です。

5年前は別の話でした。ブラウザは単純化されたJavascript実装を備えていました。なぜなら、誰もそれを使って「実際の」ソフトウェアを構築していなかったので速度は問題ではなく、Python.

23

Webの古くから、Javaアプレットが メイン クライアント側のインタラクティブコンテンツのフォームのみが、Webページ上のアプレットと対話できるようにするには、Webページ上のフォームを取得する方法が必要であることに気付きました。

これにより、JavaアプレットをWebページにリンクするためのスクリプト言語が、javascriptという名前で作成されました。

SO [ 1 ]、[ 2 ]などの質問)でこの遺産の名残を見ることができます[]-および2つの公式ドキュメント: アプレットからのJavaScriptコードの呼び出し および JavaScriptコードからのアプレットメソッドの呼び出し

このような言語が利用可能になったことで、当時のブラウザ(Netscapeが主流)は、JavaScriptを競争上の優位性として利用可能にしました(JavaScriptdesignedNetscape-Netscape 94年にサーバーが戻った最初のサーバーサイドJavaScript。node.jsの20年近く前です。他のブラウザも同様です。人々はJavaScriptを使用するページを書いていましたが、クライアント側のスクリプトでの他の試みは、機能するものと機能しないものとの間で完全に互換性のないページを意味します。ブラウザとここに他のすべての人のためのJavaScriptブロックがあります)。

しばらくの間、Netscapeが主要なブラウザであったため、JavaScriptが採用されました。 Netscapeの遺産はMozillaのソースファイルの脚注から失われていますが、javascriptは存続しており、その場所を覆すことはできませんでした。

他のクライアントスライドスクリプト言語についても問題は残ります。 JavaScriptはすべてのブラウザでサポートされています。 JavaScriptではなくpython(たとえば)をサポートするブラウザを作成する場合、Webサイトの大部分を使用することはできません。さらに、そのブラウザがブラウザートラフィックのかなりの部分を取得するため、Webデザイナーは、同じページに対して異なるスクリプト言語で2つのページセットを作成することを望んでいません。

pythonページ上のスクリプトを有効にしたブラウザのスクリプトプラグインをpythonスクリプト作成プラグイン...を今日のvrmlがどのように動作するかに似ています。 vrmlを使用するWebページを聞いて見たことがありますが、他のスクリプト言語用の別のWebページでの使用が見つかる可能性があります。

5
user40980

Pythonは遅すぎるとは思いません。少なくともJavaScriptと一致するほど速く実行することを妨げる言語については何もありません。JavaScriptにコンパイルできるので、何もない場合それ以外の場合は、ブラウザにコンパイラを含めて、ページの読み込み時間を潜在的に増やすだけにすることもできます。

更新:以下のコメントを参照して、なぜPythonをJSにコンパイルするのが、ここで暗示されているよりもかなりコストがかかる)かについて議論してください。

問題は、ブラウザベンダーとW3Cが最初にPythonを選択するように説得しようとすることで、Rubyまたはその他のニーススクリプト言語)ではなく、標準化されたサブセットを定義します。 JavaScriptをサポートしながら、それをうまく実装します。それは起こりそうもありませんが、実現したとしても、速度が深刻な問題になるとは思えません。

4
Carl Smith

Pythonは独自の仮想マシンを持っていると思います。Pythonについての経験はあまりありませんが、パフォーマンスが低下する理由は、最適化されたJavaScriptエンジン。

いくつかのランダムな考え:

(1)おそらくPythonローカルでJava Jythonを使用してアプレットを実行します。ここで私が見る困難な部分は、アプレットが非常に制限されているためです。アクセス制限の範囲内に収まるようにJythonを変更する必要があります。たとえば、ログファイルに書き込む場合は、ロギングコードを削除する必要があります。アプレットを目立つように表示する必要はありません。

(2)誰かがPythonからJavaScriptへの「コンパイラ」/コンバータを作成する可能性があります。これは大変な作業になります。

2
Aaron S

言語の実装に依存し、必ずしも言語自体に依存するわけではありません。ほとんどのJavaScriptインタープリターは、Pythonのほぼすべての実装よりもはるかに高速です。

これは、Python言語がJavaScriptとほぼ同じ速度で使用できないことを意味しません。 Opalは、RubyコードをクロージャにラップされたJavaScriptコードにコンパイルすることにより、ほぼ完全なRuby言語と標準ライブラリをブラウザに実装します。 Opalライブラリを含めることによるオーバーヘッドは別として、その速度は、私が知っている他のどのRubyインタープリターよりも、まっすぐなJavaScriptの速度にはるかに近いです。

Opalに相当するPythonがあるかどうかはわかりませんが、そのようなプロジェクトはおそらく、質問に対する答えが「いいえ」であることを意味します。 JavaScriptの「Webのアセンブリ言語」としての使用が増加しているため、他の言語のプラットフォームとしてますます使用されるようになっても、特にモバイルコンピューティングの能力が高まり、言語を使用するオーバーヘッドが増えるため、驚くことではありません。 JavaScriptでの実装はますます無視されます。

編集:これは、JavaScriptでコンパイル/実行するブラウザーのPython実装のリストです。

https://github.com/jashkenas/coffeescript/wiki/list-of-languages-that-c​​ompile-to-js#python

また、興味がある場合は、オパールをチェックしてみてください。

http://opalrb.org/

ブラウザに個別のインタプリタがサポートされることはないだろうと思うので、そのようなコンパイラはおそらくJavaScript以外の言語を使用するという点で将来の道です。今でも、ほとんどの領域で同等のパフォーマンスが得られます。これは私の意見ですが、覚えておいてください。

1
Ravenstine

あなたがこの質問をしたときでさえ、今日多くのpython JavaScriptで利用可能な実装があり、今日のWebページで使用できます。

手始めに http://www.skulpt.org/ または http://www.brython.info/ をご覧ください。

パフォーマンスはそれほど悪くないようですが、自分でテストして調べる必要があります。

0
fabspro