[解決済み] JavaScriptの代替品
質問
現時点では、完全にサポートされている唯一の言語であり、ブラウザで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 はまだ「完成」していないことに留意する必要があります。そのため 最新バージョン はブラウザの実装の何年も先を行っており、彼らは次のものに取り組んでいます。
関連
-
JavaScriptにおけるマクロタスクとミクロタスクの詳細
-
[解決済み】 env: node: macにそのようなファイルやディレクトリはありません
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
JavaScriptにおけるマクロタスクとミクロタスクの詳細
-
vueのグローバルがscss(mixin)を導入。
-
VUEグローバルフィルターの概念と留意点、基本的な使い方
-
Vueのクラススタイルの使い方の詳細
-
[解決済み】SyntaxError: JSONの位置1に予期しないトークンoがある。
-
[解決済み] TypeError: $.ajax(...) is not a function?
-
[解決済み】JavaScriptでインラインIF文の書き方は?
-
[解決済み】 `string.split is not a function` というエラーの原因は何ですか?
-
フロントエンド null のプロパティ 'disabled' を読み取れない 問題が解決された
-
JavaScriptのgetElementById()メソッド入門