為什么動態(tài)類型編程語言會如此流行?
我使用過很多靜態(tài)類型的編程語言,也使用過不少動態(tài)類型的語言。我發(fā)現(xiàn),當使用靜態(tài)類型的語言時,各種的IDE給了我巨大的幫助。這些編程語言集成 開發(fā)環(huán)境能讓我的開發(fā)極其的高效。代碼的修改和移動(例如重構代碼)都非常的方便,不容易出現(xiàn)錯誤。編譯速度通常不是問題。IDE的自動編譯功能使得在我 每敲完幾個代碼后都能得到編譯好的程序。文檔提示和變量、方法、類提示在我輸入變量時會自動彈出。所有的這些都能夠使我把全身心注意力都投入寫代碼中。
相反,編程語言的類型越動態(tài),我就越無法借助于IDE的幫助,通常在使用動態(tài)類型編程語言開發(fā)程序時,我只能使用一個文本編輯器。編程效率受此的影 響而下降很多。代碼重構變得困難,甚至完全不可能,程序的正確性嚴重的依賴單元測試。但測試程序并非能做到***。很多時候,一些老的、歷史遺留的項目中的 測試程序根本不可信。
在文本編輯器中依靠grep來重構,就是個笑話。即費事,又費力,而且效率不高,經(jīng)常出錯。然而,重構是很多程序員經(jīng)常、大量需要做的事情。
動態(tài)類型語言通常會在速度上有些欠缺——因為它的動態(tài)屬性。
使用動態(tài)編程語言開發(fā)的過程中,我通常會嚴重的依賴文檔來決定應該使用哪一個方法或提供了哪些方法。如果一個類沒有提供文檔說明,我必須打開源代 碼,搜索整個文件,來了解它提供的功能。有時,一個代碼庫里包含了成百上千的代碼文件。很顯然,我是沒法記住在這樣的一個代碼庫里哪些文件包含了哪些方法 和類。因此,我不得不頻繁的打開一個又一個文件,經(jīng)常出現(xiàn)找來找去也找不到某個方法究竟是在哪個文件里。于是,我只能使用grep來搜索整個項目庫文件。
我能想出很多的靜態(tài)類型語言的優(yōu)點和好處,但對于動態(tài)編程語言,我總結不出多少有點,但很顯然,有很多人非常的喜歡動態(tài)編程語言,為什么?
一個答案就是動態(tài)語言通常更方便開發(fā)較小的項目,因為可以無需聲明類型而節(jié)省了很多麻煩。另外一個答案是,動態(tài)類型解除了程序員的束縛,可以***的 發(fā)揮程序員的編程技能,能最有效的利用編程語言里的各種特征和模式。但這些能力都是一把雙刃劍,更多的依賴于程序員的個人才能,如果用不好,或用的過度, 都會產(chǎn)生負面的害處。
你認同我的觀點嗎?
英文原文:Why is dynamic typing so popular?
譯文出處:程序師網(wǎng)