PIECE2巨群
網頁設計 ‧ 平面設計 ‧ 虛擬主機 ‧ 網路行銷
最新消息
資訊分享
關於我們 服務項目 客戶案例 製作流程 虛擬主機 聯絡我們
程式設計的特性本質-動態語言的優缺點

動態語言的優點是語法簡潔、具有較高的彈性。

動態語言的變數在使用者不需要指定型態資訊,最直接效益就是節省打字的功夫。例如Python在宣告函式時就簡潔許多:

def doquack(duck):
duck.quack()

相較於靜態語言來說,著實簡潔許多。開發者操作變數時也無需思考型態問題,只要思考變數參考的物件擁有哪些行為,也是動態語言界流行的鴨子型態(Duck typing),這樣的特性在日後較易應付事先沒有設想到的型態,例如doquack()一開始是設計給Duck型態的物件使用,若有個物件不是Duck型態,但確實擁有quack()方法,那麼要使用doquack()呱呱叫一下也是可以的。語言簡潔與彈性的例子,也可以在底下範例中看出:

person = [1, 'programmer', datetime.now()]
id = person[0]

list中可以是各種物件,將list中的物件指定給變數也沒有轉型的問題。

動態語言的缺點是型態錯誤在執行時期才會呈現出來,效能表現較不理想,編輯輔助工具較為缺乏,依賴慣例或實體文件來得知API使用方式。

靜態語言是在程式設計編譯為可執行形式的過程中檢查型態錯誤,動態語言則常採邊剖析邊執行的方式,型態錯誤的程式設計在執行時期才會發現,以doquack()為例,若human參考的物件並沒有quack()方法,那doquack(human)的呼叫,得在執行時期才發現沒有quack()行為的錯誤。動態語言若要發掘出型態錯誤,得依賴覆蓋率更全面的單元測試。由於採邊剖析邊執行的方式,執行時期檢查型態必然造成效能負擔。

由於沒有型態資訊,編輯上的輔助或重構工具通常不足。例如:

# 可以傳入什麼物件?

def dosome(x, y):
x.? # 有哪些行為?y.? # 有哪些行為?


只從這個函式定義,編輯工具無從得知x、y有哪些方法或屬性可以操作,也就無法作出提示。dosoome()呼叫者又怎麼知道傳遞的引數順序呢?或是x、y參考的物件得具有哪些方法?動態語言界常使用命名慣例作為補救,例如x也許慣例上都接受X型態,而y慣例上都接受Y型態,然而通常還是得查詢文件才能瞭解使用細節。

信任型態約束或慣例約束
 
從信任的角度來看,選擇靜態語言代表信任它會檢查出開發者可能犯下的型態錯誤,由於型態帶來的約束是強制遵守且不能有例外,對成員來自不同文化或水準不一的團隊而言,靜態語言在語法層面採用型態作為約束工具,對型態錯誤的發掘有一定的保障作用;相反地,選擇動態語言代表採用慣例作為約束工具,相信開發者會為自己的程式負責,因而將行為交由物件本身擁有,對於成員有著一致默契、水準與文化的團隊而言,選擇動態語言可獲得較大的彈性來面對需求。

 


轉貼來源:IT專欄 - 林信良

 


參考文獻:

1.王大維,2002,台灣工商業可延伸企業報告語言分類標準之建立,國立台灣大學會計研究所未出版碩士論文。

2.位元文化,2002,XML 技術實務,台北:文魁資訊股份有限公司。

3.林宥吟,2002,延伸性企業報告語言之產業應用-以資產管理產業為例,私立中原大學會計系碩士班未出版論文。

 
返回列表
上一頁 下一頁


相關文章

程式設計的特性本質-靜態語言的優缺點
程式設計的特性本質-靜態語言與動態語言的信任抉擇
公司的網頁很慢,若想換別家的虛擬主機,要怎麼換?
一位DMOZ編輯人員對於提交網頁設計類的網站建議
關於虛擬主機與架站


最新文章

HVACKer:入侵隔離網絡的新型攻擊技術
還有什麼不會被入侵?路由器 LED 燈已成為攻擊入口
美 5 家獨角獸同天申請 IPO 掛牌,最狂的是一家估值 124 億美的數據分析新創!
【台灣「智慧產業」開始佈局】緯創集團領投跨國 AI 新創 iKala,下一步拓展東南亞市場
快可以用手機遠端遙控你的所有家電了



 
PIECE2巨群 版權所有 © 2008 總公司:06-2895301 台北:02-82529838 台中:04-25152530 高雄:07-7931226
驗證 CSS 驗證 W3C
專精項目:網頁設計   網站設計   平面設計   包裝設計   關鍵字行銷   關鍵字排名   網路行銷   網站代管   虛擬主機   ERP系統