動的型付けと静的型付けの好みは主に好みの問題であり、さまざまな状況でさまざまな人々がそれらを多かれ少なかれ適しています。
私の質問は、クライアント側のWebページ拡張などのために、JavaScriptの静的型付けの代替を技術的に可能にすることは可能でしょうか?
動的型付けと静的型付けの好みは主に好みの問題であり、さまざまな状況でさまざまな人々がそれらを多かれ少なかれ適しています。
私の質問は、クライアント側のWebページ拡張などのために、JavaScriptの静的型付けの代替を技術的に可能にすることは可能でしょうか?
回答:
そのようなことが存在し得ない技術的な理由は確かにありません。動的に型付けされた言語の使用を義務付けるクライアント側のコードには特に何もありません。
別の言語が広く採用される可能性は非常に低いため、静的に型付けされたバージョンのJavaScript(つまり、Javaに近い言語)を作成し、それを通常のJavaScriptに変換するプリプロセッサーを作成するのが最善の策です。
たとえば、スクリプトは次のようになります。
<script type="text/staticjavascript">
String foobar(int foo, String bar) {
String result="";
for (int i=0; i<foo; i++) {
result += bar;
}
return result;
}
</script>
プリプロセッサは、すべての変数、関数、オブジェクトなどがそのタイプに従って正しく使用されていることを確認し、スクリプトを次のように変更します
<script type="text/javascript">
function foobar(foo, bar) {
var result="";
for (var i=0; i<foo; i++) {
result += bar;
}
return result;
}
</script>
すべてのブラウザが処理できます。
私の質問は、クライアント側のWebページ拡張などのために、JavaScriptの静的型付けの代替を技術的に可能にすることは可能でしょうか?
承知しました。Googleウェブツールキットには、 JavaScriptに静的に型付けされたJavaのコンパイル...ただ、それを考える:ジャワのすべての美しさと柔軟性、機械生成のJavaScriptのすべてのパフォーマンスを!
真剣に、しかし、あなたはあらゆる種類の言語のためにこれをすることができて、そして多くは試みました(CとC#のためのコンパイラも同様にありました、またはされてきました)。最終結果が実用的かどうかは、何を達成しようとしているのかに依存します。Googleは、非常に大規模なクライアント側アプリを開発するための一貫したプラットフォームを求めており、起動する独自のJavaScriptエンジンを備えています。ホバー効果やそのような奇妙なAJAX呼び出しにこのような獣を採用すると、単純に型付けされていないコードで生活することを学ぶよりもはるかに多くの苦痛をもたらすことでしょう。
すでに存在しています。
ActionScript 3(FlashとFlexの背後にあるスクリプト言語)は、強力な型を実装するECMAScriptの方言であり、JavaScriptとほぼ同じクライアント側の方法で使用できます(AS3にはFlashプラグインが必要であり、コンパイルされます)。私は最近、それを避けようとしていますが、「静的」キャンプにいる場合は、それを試してみてください。
これで主要な質問に答えることができたので、次の質問は「フラッシュは実用的ですか?」答えは「はい」で、「if」と「but」がいくつかあります
理論的には、必要なページに任意のスクリプトを貼り付けることができます。<script>
タグはtype
、すべての後に、属性を。
唯一の障壁は、さまざまなブラウザーでの実装に関して十分な市場シェアを得て、使用する価値があるようにすることです。
ですから、現時点では、ありそうもありません。
</script>
)。本当に望めば、Brainf * ckコードをそこに貼り付けることができます。次に、使用するブラウザに選択した言語のインタプリタを実装するだけです。
<script type="vbscript">
むかしむかしから覚えています...
それは実用的でしょうか? 番号。
出来ますか?はい!
静的に型付けされた独自のJavaScriptの代替を開発することは、せいぜい時間がかかるだけです。最悪の場合、既存のブラウザーにクライアントスクリプト言語を実装するように説得することができず、独自のブラウザーを作成する必要があります。
多分あなたはここであなたの答えを見つけるでしょう:https://stackoverflow.com/questions/86426/why-require-javascript-rather-than-supporting-a-standard-browser-virtual-machine
注:私の意見では、スコアが低いにもかかわらず、最近の回答はより洞察に富んでいます。
haXeなどの言語を使用して、静的に型指定された方法でコードを記述し、それをJavaScriptにエクスポートできます。JavaScriptは非常に高速になりつつあるため、出力言語としては十分です。静的に型付けされた言語をWeb標準として適用することは、ほぼ不可能です。JavaScriptに静的型付けを導入する試みは、広く議論する理由により失敗しました。
技術的に可能でしょうか?それをJavaで実装する場合は、パフォーマンスを大幅に低下させることなく、「非常に困難ですが可能」と言います。
私は実際には現在Javaで静的に型付けされたDSLを手書きしています。ランタイム型チェックを回避する唯一の方法は、ジェネリックスを使用して「チェックされていない」警告を抑制することです...つまり、実装する時まで多次元配列(クラスパラメータはコンパイル時に既知でなければならず、したがって本質的に有限ですが、多次元配列は無限の型を表します...)残念ながら、これを理解しようとしていますが、残念ながら、ユーザー定義のクラスでも同様の問題が発生します。
こういう問題に出くわし続けているのですが、しばらく座ってみたら良い解決策が思いつきます。そのため、静的型付け(ランタイム型チェックなし)のパフォーマンス上の利点を得るには、それは非常に困難ですが、不可能ではありません。パフォーマンスを差し引いて、一生懸命言いますが、可能です。
私の経験は誰かにとって価値があるかもしれないと思っていました。
技術的には、ユーザーエージェント(ブラウザ)がサポートする任意のスクリプト言語でクライアント側スクリプトを作成することができます。実際には、広くサポートされている唯一の言語はJavaScript / ECMAScriptです。この段階でブラウザメーカーが新しい言語を実装してサポートするように説得しても、成功する可能性は低いです。したがって、静的に型付けされた新しいクライアント側言語を使用する場合は、新しい言語をJavaScriptに変換するか、JavaScriptでその言語のインタープリターを実装する必要があります。
すでにこのようなことをしているプロジェクトがいくつかあります。たとえば、他の回答の1つで述べたように、Google Web Toolkitです。
現実の世界で使用されているすべてのブラウザで新しい言語をサポートすることは望んでいません。言語はjscriptにコンパイルする必要があります。
Webの例はすべてjscriptで記述されているため、言語はほとんどjscriptのように見えるはずです。
静的チェッカーによってチェックされているが有効なjscriptでもあるjscriptの「サブセット」を持つスコープがあると思います。例えば:
オプションの静的型付けはECMAScriptのProject Harmonyの一部でした-それがクライアント側の[ブラウザーベースの] JavaScriptで発生するかどうかは不明だと思います。このウィキペディアのリンクを参照してください:http : //en.wikipedia.org/wiki/ECMAScript#Future_development