43

HTML/JavaScript/CSS がコンパイル済み言語にならないのはなぜですか (または、単一のコンパイル済み言語に統合される可能性さえあります)? ブラウザが「ブラウザ仮想マシン」を実行していて、html/javascript/css ソースを「ブラウザ バイトコード」にコンパイルできるとしたらどうでしょう。開発者とユーザーにとって大きな助けになると思いませんか?

いくつかの課題があります。

  1. 無数の既存のページをどうするか? このコンパイルをオプションにして、必要に応じてプレーンな古い html を使用できます。コンパイルされたページをブラウザーに送りたい場合は、たとえば .chtml を使用してください。

  2. 検索プロバイダーはどのようにページをインデックスに登録しますか? バイトコードを正確な元のソースに逆コンパイルする逆コンパイラを作成します (たとえば、フラッシュを逆コンパイルできます)。または、検索プロバイダーは同じ仮想マシンを使用して、そこから必要なデータを取得できます。

  3. すべてのブラウザと互換性を持たせるにはどうすればよいですか? この仮想マシンを開発する集中開発者 (w3c としましょう) が 1 人いると、各ブラウザーがそれを埋め込みます。

しかし、利点はどうですか:

  1. スピード。
  2. サイズ。
  3. 「ルーズ」で「半分正しい」html はもう必要ありません。正しいか、コンパイルされません。
  4. すべての (サポートされている) ブラウザーで同じように見えます。

バイトコードでない場合は、少なくともネイティブ圧縮が行われているため、html はおそらく最も効率的なデータ格納方法ではありません。gzip があることは知っていますが、一度圧縮してブラウザーにフィードできるのに、サーバーで毎回ページを圧縮し、ブラウザーで解凍するのはなぜですか?

では、私たちがこの道を歩むのを妨げているものは何でしょう?

4

9 に答える 9

19

ああ、でも Javascript はコンパイル済み言語になりつつあります。TraceMonkeyで Firefox 3.5 をチェックしてください。あの有名なブラウザと比べるとめちゃくちゃ速いです。JS が C になることは決してないのは事実ですが、JS は C よりもはるかに動的な言語であり、多くの点でより表現力豊かで強力な言語です。

HTML に関する限り、HTML の有効性の欠如が速度に大きな悪影響を与えるとは思いません。ビジュアル表現をまとめて DOM を操作するエンジンは、もっと良くなる必要があると思います (ええと、IE、私はあなたの一般的な方向性を見ています...)。CSS コンプライアンスを改善する必要があり、CSS 自体をより強力にする必要があります。(CSS3人でバスに乗れ!)

しかし、Firefox や Chrome では速度が向上し、主流のアプリケーション開発に実際に使用されるようになると思います。それはおかしいです。Adobe は動的 Web コンテンツ用のプラットフォームとして Flash を販売しているようで、MSFT は動的 Web コンテンツ用に Silverlight を販売しているようです。これまでのところ、Google はかなりうまくやっていると言わざるを得ません...

于 2009-07-17T03:04:39.220 に答える
4

あなたのアイデアは、JavaScript に適用すると有効になります。他の人が指摘しているように、いくつかのベンダーは現在でも、これらの原則を JS に適用しようとしています。この分野でのもう 1 つの大きなステップは、Google が発表した Chrome OS でしょう。ただし、(X)HTML と CSS に関しては、あなたの考えは的を射ていないのではないかと思います。

ワールド ワイド ウェブは、バグが多く一貫性のないアプリケーション プラットフォームではなく、相互に接続された膨大で前例のないドキュメントのコレクションです。Web の力は、多くの場合、固定された (そして壊れやすい) ビジュアル レイアウトからのデータの抽象化と、主に JavaScript を介して提供されるますます複雑化するページ内機能にあります。これらのページを (X)HTML でエンコードすることは、ブラウザーの観点からも、ページの作成に必要な技術的知識の観点からも、可能な限り幅広いユーザーがアクセスできるようにするのに理想的です。

Web がアプリケーション プラットフォームとしてますます使用されるようになっています (これは、このテクノロジの強力でエキサイティングな使用法です)。ドキュメントのコンパイルは意味がなく、圧縮はすでに行われています (gzip などを介して)。

より実際的な注意として、W3C は氷河のようなペースで動いており、ブラウザー ベンダーは、未完成の仕様で実験的な機能をサポートすることと、何年もの間テーブルにあり、一般的に使用されてきた他の仕様をサポートすることに時間を費やしていることとを交互に行っています。 . 全体のプロセスは、猫の群れのようなものです。あなたが提案しているような急進的な変更を彼らがすぐに行うのを、私は息を止めません。

于 2009-07-17T04:29:15.583 に答える
3

HTML と CSS はコードではないため、コンパイルできません。Google Chrome の V8 エンジンは、実際に JS をバイト コードに変換します。他のレンダリング エンジンもそれに続くことを期待してください。

http://code.google.com/apis/v8/design.html

最近、作成を手伝った PHP テンプレート システムを作り直して、minify を使用して複数の JS と CSS をそれぞれ 1 つのファイルに圧縮したところ、ファイル サイズが元の合計サイズの約 20% に減少しました。Minify は gzip とキャッシングも行うため、Web サイトの高速化には非常に優れています。

http://code.google.com/p/minify/

要するに、HTML と CSS である非コードをコンパイルすることはできません。JS はコンパイル可能であり、コンパイル可能になりつつありますが、すべてはブラウザーが何をしたいかによって異なります。

ブラウザーは、Web 標準のサポートに関して積極的である必要があります。これを行うブラウザーが増えれば増えるほど、私たち Web 開発者の頭痛の種は少なくなります。私は、YouTube が IE6 のサポートを非常に公に打ち切ったことに非常に満足しています。ウェブが前進するためには、そのような行動がもっと必要です。

于 2009-07-17T03:05:30.937 に答える
1

スピード。

HTML の解析にはかなりの時間がかかると想定しています。ただし、エンド ユーザーのウィンドウにテキストをレイアウトするのに必要な時間など、他の処理に必要な時間と比較すると、その時間は重要ではない可能性があります。

「ルーズ」で「半分正しい」html はもう必要ありません。正しいか、コンパイルされません。

[X]HTML を使用すると、既にそれを取得できます。

すべての (サポートされている) ブラウザーで同じように見えます。

あなたは、ブラウザは 1 つだけにするべきだとか、すべてのブラウザが同等にサポートするだろうと言っているようです。

インターネット標準は、単一の団体 (w3c) が何かを実装し、それを標準として宣言するだけでは実現しません。代わりに、インターネット標準は、複数の独立した団体が複数の実装を作成することによって実現します。結果は次のとおりです。

  • 一部の人々は、まだ標準ではないものを開発しています (つまり、彼らは標準よりも進んでいます)。
  • 標準的なものをまだ開発していない人もいます (つまり、標準に遅れをとっています)。
于 2009-07-17T03:11:26.853 に答える
1

この件に関する以前の議論については、こちらを参照してください

与えられた理由のすべてが必ずしも有効というわけではありませんが、1 つの重要な理由は、あなたが Google でない限り、サーバー側の CPU サイクルはクライアント側のサイクルよりもはるかに価値があるということです。サーバーではなく、動的に生成された HTML/JavaScript であることがよくあります。

ケン

于 2009-07-17T03:01:26.183 に答える
0

あなたの考えは正しいと思いますが、標準を強制する方法はまだありません。したがって、サポートされていない機能があった場合、ページ全体に何も表示されない可能性が高くなります。現在のセットアップでは、重要な情報を引き続き渡すことができます。

于 2009-07-17T03:03:44.433 に答える
0

多くの新世代 JavaScript エンジンの 1 つであるGoogle V8は、.NET がその場で c# を「コンパイル」するのと同じように、JavaScript を疑似コードに「コンパイル」します。ここには魔法はありません。特にそれ以上を期待してください。ウェブアプリが重くなり、要求が厳しくなるにつれて

于 2009-07-17T03:10:54.810 に答える
0

HTML

HTML はほぼ XML です。さまざまなバージョンの DTD が存在し、開発者はいつでもそれをチェックできます。

CSS

CSS はプログラミング言語ではありませんが、「コンパイルされた」CSS はコンパイルによって圧縮されるため、動作する可能性があることに同意します。ただし、CSS のサポートと、CSS に必要な多数の重要なハックがあると、エラーなしでコンパイルすることはできません。

JS

他の人が述べたように、JS はコンパイルされた言語になりつつありますが、ブラウザがそれをコンパイルするのではなく、あなたのためにコンパイルします。

于 2009-07-17T03:18:20.557 に答える