為什么動(dòng)態(tài)類型編程語(yǔ)言會(huì)如此流行?
 
我使用過很多靜態(tài)類型的編程語(yǔ)言,也使用過不少動(dòng)態(tài)類型的語(yǔ)言。我發(fā)現(xiàn),當(dāng)使用靜態(tài)類型的語(yǔ)言時(shí),各種的IDE給了我巨大的幫助。這些編程語(yǔ)言集成 開發(fā)環(huán)境能讓我的開發(fā)極其的高效。代碼的修改和移動(dòng)(例如重構(gòu)代碼)都非常的方便,不容易出現(xiàn)錯(cuò)誤。編譯速度通常不是問題。IDE的自動(dòng)編譯功能使得在我 每敲完幾個(gè)代碼后都能得到編譯好的程序。文檔提示和變量、方法、類提示在我輸入變量時(shí)會(huì)自動(dòng)彈出。所有的這些都能夠使我把全身心注意力都投入寫代碼中。
相反,編程語(yǔ)言的類型越動(dòng)態(tài),我就越無(wú)法借助于IDE的幫助,通常在使用動(dòng)態(tài)類型編程語(yǔ)言開發(fā)程序時(shí),我只能使用一個(gè)文本編輯器。編程效率受此的影 響而下降很多。代碼重構(gòu)變得困難,甚至完全不可能,程序的正確性嚴(yán)重的依賴單元測(cè)試。但測(cè)試程序并非能做到***。很多時(shí)候,一些老的、歷史遺留的項(xiàng)目中的 測(cè)試程序根本不可信。
在文本編輯器中依靠grep來(lái)重構(gòu),就是個(gè)笑話。即費(fèi)事,又費(fèi)力,而且效率不高,經(jīng)常出錯(cuò)。然而,重構(gòu)是很多程序員經(jīng)常、大量需要做的事情。
動(dòng)態(tài)類型語(yǔ)言通常會(huì)在速度上有些欠缺——因?yàn)樗膭?dòng)態(tài)屬性。
使用動(dòng)態(tài)編程語(yǔ)言開發(fā)的過程中,我通常會(huì)嚴(yán)重的依賴文檔來(lái)決定應(yīng)該使用哪一個(gè)方法或提供了哪些方法。如果一個(gè)類沒有提供文檔說明,我必須打開源代 碼,搜索整個(gè)文件,來(lái)了解它提供的功能。有時(shí),一個(gè)代碼庫(kù)里包含了成百上千的代碼文件。很顯然,我是沒法記住在這樣的一個(gè)代碼庫(kù)里哪些文件包含了哪些方法 和類。因此,我不得不頻繁的打開一個(gè)又一個(gè)文件,經(jīng)常出現(xiàn)找來(lái)找去也找不到某個(gè)方法究竟是在哪個(gè)文件里。于是,我只能使用grep來(lái)搜索整個(gè)項(xiàng)目庫(kù)文件。
我能想出很多的靜態(tài)類型語(yǔ)言的優(yōu)點(diǎn)和好處,但對(duì)于動(dòng)態(tài)編程語(yǔ)言,我總結(jié)不出多少有點(diǎn),但很顯然,有很多人非常的喜歡動(dòng)態(tài)編程語(yǔ)言,為什么?

一個(gè)答案就是動(dòng)態(tài)語(yǔ)言通常更方便開發(fā)較小的項(xiàng)目,因?yàn)榭梢詿o(wú)需聲明類型而節(jié)省了很多麻煩。另外一個(gè)答案是,動(dòng)態(tài)類型解除了程序員的束縛,可以***的 發(fā)揮程序員的編程技能,能最有效的利用編程語(yǔ)言里的各種特征和模式。但這些能力都是一把雙刃劍,更多的依賴于程序員的個(gè)人才能,如果用不好,或用的過度, 都會(huì)產(chǎn)生負(fù)面的害處。
你認(rèn)同我的觀點(diǎn)嗎?
英文原文:Why is dynamic typing so popular?
譯文出處:程序師網(wǎng)















 
 
 







 
 
 
 