什麼是動态語言?
動态語言,是指程式在運作時可以改變其結構:新的函數可以被引進,已有的函數可以被删除等在結構上的變化。比如JavaScript便是一個典型的動态語言。
除此之外如Ruby、Python、OC等也都屬于動态語言,而C、C++、Java等語言則不屬于動态語言。
動态類型語言,就是類型的檢查是在運作時做的,是不是合法的要到運作時才判斷,例如JavaScript就沒有編譯錯誤,隻要運作錯誤。
JavaScript改變結構小例子:
靜态語言
而靜态類型語言的類型判斷是在運作前判斷(如編譯階段),比如java就是靜态類型語言,靜态類型語言為了達到多态會采取一些類型鑒别手段,如繼承、接口,而動态類型語言卻不需要,
靜态類型語言的主要優點:
在于其結構非正常範,便于調試,友善類型安全;
缺點:
是為此需要寫更多的類型相關代碼,導緻不便于閱讀、不清晰明了。動态類型語言的優點在于友善閱讀,不需要寫非常多的類型相關的代碼;缺點自然就是不友善調試,命名不規範時會造成讀不懂,不利于了解等。
為什麼Java可以稱之為"準動态語言"?
展現在以下幾個方面:
- 反射機制
- 動态編譯
- 動态執行javascript代碼
- 動态位元組碼操作
- 動态轉換類型
Java反射機制被視為Java為準動态語言的主要的一個關鍵性質,這個機制允許程式在運作時透過反射取得任何一個已知名稱的class的内部資訊,包括: