1. ホーム
  2. javascript

[解決済み] JavaScriptの代替品

2022-05-10 02:45:24

質問

現時点では、完全にサポートされている唯一の言語であり、ブラウザでDOMツリーを操作するためのデファクトスタンダードとなっているのがJavaScriptです。それは、初心者にとってバグやセキュリティホールの地雷原となるような深い設計上の問題を抱えているように見えます。

次世代ブラウザで DOM ツリー操作と HTTP リクエストのために、(javascript だけでなく)あらゆる種類のより良い(再設計された)言語を導入するための既存または計画中のイニシアティブをご存知でしょうか?もしそうなら、たとえば Firefox に統合するためのロードマップはどのようなものでしょうか。また、もしそうでないなら、(相互運用性とは別に)どのような理由から JavaScript がブラウザ プラットフォームで唯一サポートされる言語であるべきなのでしょうか。

私はすでに jQuery を使用しており、また "javascript: the good parts" も読みました。確かに提案は良いのですが、私が理解できないのは、なぜ javascript だけなのでしょうか? サーバーサイド(あなたの好きなOSプラットフォーム)では、あらゆる言語、たとえフォートランでもDOMツリーを操作することができます。なぜクライアント側(ブラウザープラットフォーム)では、javascriptだけをサポートするのでしょうか?

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

javascriptの問題は言語そのものではなく、プロトタイプ化された動的な言語として完全に優れています。OOのバックグラウンドから来た場合は、学習曲線が少しありますが、それは言語のせいではありません。

ほとんどの人は、Javascriptは似たような構文と似たような名前を持っているので、Javaに似ていると思い込んでいますが、実際にはもっとlispに似ています。実際には、DOM 操作にかなり適しています。

本当の問題は、ブラウザによってコンパイルされることであり、それはつまり、クライアントによって非常に異なる方法で動作することを意味します。

ブラウザによって実際のDOMが異なるだけでなく、パフォーマンスやレイアウトにも大きな違いがあるのです。


問題の明確化以下の編集

仮に複数の解釈言語がサポートされていたとしても、同じ問題が発生します。さまざまなブラウザーは依然としてバグだらけで、異なる DOM を持つことになります。

さらに、各言語のインタプリタをブラウザに組み込むか、プラグインとしてインストールする必要があります (ページを提供する前にチェックできます)。Javascript を一貫したものにするために、長い時間がかかりました。

同じ方法でコンパイルされた言語を使用することはできません。そうすると、それが何をするのか簡単に精査できない実行ファイルを導入することになるからです。多くのユーザーはそれを実行させないことを選択するでしょう。

では、コンパイルされたコードのためのある種のサンドボックスはどうでしょうか。私には、Java アプレットのように聞こえます。あるいは Flash の ActionScript。あるいは Silverlight の C# のようなものです。

IL標準のようなものはどうでしょうか?それはより多くの可能性を秘めています。好きな言語で開発し、それをILにコンパイルし、ブラウザがJITするのです。

ただし、JavascriptはすでにIL化されているようなものです。 GWT . これはJavaでプログラムを書き、それをHTMLやJSとして配布することを可能にします。


問題点をさらに明確化した上で編集

Javascript はブラウザでサポートされている唯一の言語ではありませんし、むしろそうではありませんでした。Internet Explorer の暗黒時代には、IE で実行する Javascript または VBScript のいずれかを選択できました。技術的には、IE は Javascript を実行することさえできませんでした。 JScript を実行していました (主に、Sun に単語 java という名称はオラクルがまだ所有しています。 ジャバスクリプト ).

問題は、VBScript が Microsoft 独自のものであったこと、そして、あまり良いものではなかったことです。Javascript が機能を追加し、他のブラウザー (FireBug など) でトップクラスのデバッグ ツールを手に入れる一方で、VBScript は IE 専用で、ほとんどデバッグできませんでした (IE4/5/6 の開発ツールは皆無でした)。一方、VBScript も OS 内でかなり強力なスクリプト ツールに成長しましたが、それらの機能のいずれもブラウザでは使用できませんでした (使用できたとしても、巨大なセキュリティ ホールになりました)。

VBScript を使用する企業の内部アプリケーションはまだ存在し (そしていくつかはそれらのセキュリティ ホールに依存しています)、彼らはまだ IE7 を実行しています (彼らは MS がついに IE6 を終了させたので IE6 を止めただけです)。

Javascript を現在の状態にするのは悪夢のようなもので、20 年かかりました。言語機能 (1999 年に指定された) がまだいくつかのブラウザーから欠落しており、多くのシムが必要であるなど、一貫したサポートがまだなされていないのです。

ブラウザで解釈するための代替言語を追加することは、2 つの大きな問題に直面しています。

  • すべてのブラウザベンダーに新しい言語標準を実装してもらうこと - これは、20 年前に Javascript を実装して以来、まだできていないことです。

  • たとえば、IE は Javascript のサポートは二流だが、VBScript はすばらしい (再度) というようなことが可能になります。私は、異なるブラウザーのために異なる言語でコードを書きたいとは思わないのです。

Javascript はまだ「完成」していないことに留意する必要があります。そのため 最新バージョン はブラウザの実装の何年も先を行っており、彼らは次のものに取り組んでいます。