私は一般的に動的言語の経験はあまりありませんが、私が知っている動的言語の1つであるJavaScript(別名ECMAScript)は絶対に大好きです。
さて、待って、ここでの議論は何ですか?動的コンパイル?または動的型付け?JavaScriptは両方のベースをカバーしているので、両方について説明すると思います。
動的コンパイル:
まず、動的言語がコンパイルされ、コンパイルは後で実行されるだけです。そして、Javaと.NETは実際には2回コンパイルされています。一度はそれぞれの中間言語に、そして再び動的に、機械語に。
しかし、コンパイルを延期すると、結果をより早く確認できます。それが1つの利点です。私は単にファイルを保存して、プログラムがかなり速く動作するのを見るのを楽しんでいます。
もう1つの利点は、実行時にコードを記述してコンパイルできることです。。これが静的にコンパイルされたコードで可能かどうかはわかりません。JavaScriptをコンパイルするものはすべて、最終的にはマシンコードであり、静的にコンパイルされるため、そうなるはずだと思います。しかし、動的言語では、これは簡単なことです。コードはそれ自体を記述して実行できます。(そして、.NETがこれを実行できることはかなり確信していますが、.NETがコンパイルされるCILは、とにかくその場で動的にコンパイルされ、C#ではそれほど簡単ではありません)
動的型付け:
動的型付けは静的型付けよりも表現力に富んでいると思います。動的型付けはより少ないリソースでより多くのことを言うことができると言うために、非公式に表現的な用語を使用していることに注意してください。JavaScriptコードは次のとおりです。
var Person = {};
あなたは今の人が何であるか知っていますか?これは一般的な辞書です。私がすることができます:
Person ["First_Name"] = "John";
Person ["Last_Name"] = "Smith";
しかし、それはオブジェクトでもあります。私はこれらの「キー」のいずれかを次のように参照できます。
Person.First_Name
そして、私が必要だと思うメソッドを追加します。
Person.changeFirstName = function(newName){
this.First_Name = newName;
};
確かに、newNameが文字列でない場合は、問題が発生する可能性があります。すぐには捕まえられませんが、自分で確認することはできます。それは、表現力と柔軟性を安全性と交換することの問題です。型などをチェックするためのコードを自分で追加してもかまいませんが、型のバグに遭遇したことはまだありません。 ))。しかし、私はその場で適応するその能力を非常に楽しんでいます。