創業,你選擇靜態還是動態語言?

劉志軍發表於2012-06-14

原文:Sachin FromDev  編譯:伯樂線上 –劉志軍

每個人都在想,為什麼大家都在選擇靜態語言,當你準備選擇一門動態語言的時候,卻又冒出瞭如此多的兄弟語言。我們通常考慮的是,哪種語言是我熟練的,那就拿它來做這項工作。總之這做不失為一種著手開乾的好方法。現在還有別的什麼影響你的選擇嗎?測試?開發速度?還是程式的健壯性?

動態型  VS  靜態型

動態語言是一種變數使用前不需要宣告的語言,如 Python、Ruby 和PHP,在動態語言中,還可以像下面這樣做。

某種意義上來說,這卻是一把雙刃劍,因為動態語言的型別檢查是在程式執行期間,程式碼執行前沒有任何辦法找出 bug。我知道你可以寫測試,但是你並不能測試任何事情。這裡有一個雖然不重要的例子。

現在如果你被一些嚴重的電子樂干擾著,一個縮排的錯誤很輕易的就忽略了,程式碼弄完了然後部署到生產環境中,於是bug就接踵而來了。

記住,在生產環境中你是唯一能消滅bug的人。

靜態語言 :使用前變數需要宣告,編譯的時候需要型別檢查,包括Java、C、C++在內的語言都是靜態語言。

關於健壯性的增加和執行時錯誤機會的減少有很多的爭論,編譯器能捕獲一些在你編碼的時候產生的令人討厭的錯誤,方法的契約是嚴格的,不好的地方就是沉重的樣板程式碼。

 

弱型別  VS  強型別

弱型別和強型別經常與動態語言和靜態語言混淆起來。弱型別語言會引起一些哲學性問題如數字2和字元”two“的相加,在弱型別語言中像這樣做是沒問題的。

傳統的語言將嚴格限制各種事務的出現,如強型別語言中字元與整型相加將導致錯誤,如下:

 

總結:

無論你在哪抨擊這篇討論,宣告總比前者好,因為前者會導致一場語言的戰爭。

動態語言適合快速週期開發和原型設計。靜態語言更適合長期的開發週期,零碎的bug非常會付出非常高的代價(電話通訊系統,航空交通系統)例如,如果一巨頭公司叫Moo Corp,花了幾百萬美元在做QA和測試,一bug以某種方式陷入在這個領域中,為了修復意味著另一個輪的測試。當你做在板凳上你要做的就是選擇一種簡潔的靜態語言,這項工作的難度就是得有人做”擠奶”的事。

測試、測試、還是測試

僅僅就一點點資料為了用來思考、啟動下一個專案,你從來就不知道哪些限制你可能放在你自己和你的團隊身上。

當你為你的專案選擇一門程式語言時,你考慮的因素有哪些呢?

 

原文:Sachin FromDev  編譯:伯樂線上 –劉志軍

【如需轉載,請標註並保留原文連結、譯文連結和譯者等資訊,謝謝合作!】

 

相關文章