動態語言

動態語言

動態語言,是指程式在運行時可以改變其結構:新的函式可以被引進,已有的函式可以被刪除等在結構上的變化,類型的檢查是在運行時做的,優點為方便閱讀,清晰明了,缺點為不方便調試。

基本介紹

  • 中文名:動態語言
  • 含義:是指程式在運行時可以改變其結構
  • 優點:方便閱讀,清晰明了
  • 缺點:不方便調試
動態語言,靜態類型,未來發展,

動態語言

有三個名詞容易混淆:
Dynamic Programming Language (動態語言或動態程式語言)
Dynamically Typed Language (動態類型語言)
Statically Typed Language (靜態類型語言)
定義
所謂的動態類型語言,意思就是類型的檢查是在運行時做的,比如如下代碼是不是合法的要到運行時才判斷(注意是運行時的類型判斷):
def sum(a, b):return a + b

靜態類型

而靜態類型語言的類型判斷是在運行前判斷(如編譯階段),比如C#、java就是靜態類型語言,靜態類型語言為了達到多態會採取一些類型鑑別手段,如繼承、接口,而動態類型語言卻不需要,所以一般動態語言都會採用dynamic typing,常出現於腳本語言中.需要明確說明一點,那就是,是不是動態類型語言與這門語言是不是類型安全的完全不相干的,不要將它們聯繫在一起!
優缺點
靜態類型語言的主要優點在於其結構非常規範,便於調試,方便類型安全;缺點是為此需要寫更多的類型相關代碼,導致不便於閱讀、不清晰明了。動態類型語言的優點在於方便閱讀,不需要寫非常多的類型相關的代碼;缺點自然就是不方便調試,命名不規範時會造成讀不懂,不利於理解等。順便說一下,現在有這樣一種趨勢,那就是合併動態類型與靜態類型在一種語言中,這樣可以在必要的時候取長補短,Boo就是一個很好的試驗性例子.
總體評價
最後說一下Boo,Boo是一個靜態類型語言,雖然用duck typing可以模擬dynamic typing,但是duck並不支持所有類型的操作替代,所以即使完全使用duck typing也不能達到dynamic typing。就像FantasySoft所述,Type Inference不是動態類型語言的特性,所以支持Type Inference不代表這門語言就是dynamically typed。

未來發展

在今天這個信息泛濫的時代,身為開發者,眼光比技術更重要。缺乏眼光的人,著眼於小,為細枝末節的所謂“創新”不惜肝腦塗地,赴湯蹈火,而面臨真正變革時,或坐井觀天,守舊拒新,或畏畏縮縮,裹足不前。具備眼光的人,著眼於大,平時穩紮穩打,不為世間紛擾所擾,一旦時機出現,則能拋卻門戶之見,枝節之爭,以過人氣概投身變革,成就自己的事業。這前後兩者的差距之大,其實全在於對大趨勢的把握上。
回顧IT技術不長的歷史,我們會發現,每當重大變革發生的時候,在技術圈子裡總是存在激烈的爭論,總有那些著眼於小的人站在細枝末節上對技術變革本身表示質疑甚至否定。
當關係資料庫和SQL語言把數據管理的繁瑣工作從開發者和操作者身上解放出來的時候,有人抨擊關係資料庫性能低下;當微軟開始用C語言開發PC應用程式時,彙編語言的擁護者輕蔑的說,只有彙編語言才能發揮PC機的全部能力;當Web進軍企業計算時,一大批專家跑出來抨擊HTML界面的呆板和HTTP協定的緩慢和幼稚。然而,所有這一切抱怨、質疑和信誓旦旦的否定,都被技術發展的大潮無情的吞噬,消失得無影無蹤。原因很簡單,所有這些聲音,都是著眼於小,著眼於私,一葉障目,而不見IT技術發展的大勢。IT技術發展的大趨勢永遠都是要更快,更簡單。
從這個角度來看待動態語言,結論就異常的清晰。在今天這個時代、動態語言代表著更快更簡單的技術大趨勢,因此它將必然成為未來構建軟體和網際網路技術的主角。回顧2006年國內外動態語言的發展歷程,也恰恰能夠印證這一點。
By rainsEgo:
不否認動態語言的各種好處,但是到了2011年,還請大家考慮一下scala這樣的靜態語言對動態語言造成的衝擊。

相關詞條

熱門詞條

聯絡我們