軟件開發長期以來一直是一個雷區。
普通人會發現,用傳統的編程語言(如 C 和 JAVA)闖入軟件領域是很可怕的。
但一旦 Python 加入游戲,這種情況很快就改變了。Python 以其革命性的編程方法在軟件開發方面是一個巨大的飛躍。
人們愛上 Python,是因為其簡潔性、廣泛的庫支持和表達能力。因此,像 C 和 Java 這樣的語言的統治結束了。
如果你是一個軟件開發者,你可能熟悉**權衡(trade-off)**這個詞。
每當一個關於編程語言的問題突然出現時,人們通常會得到一個傳統的答案:“視情況而定”。
普遍認為沒有一種完美的編程語言。等等, 是真的嗎?
對我來說,不是這樣。我認為 Python 是編程語言中的銀彈。
到目前為止,我用過 Python、C、C++、MATLAB、JAVA。Python 是我接觸最晚的,但卻是最好的。
為了測試 Python,我做了一個實驗,並將大多數非 Python 程序轉換為 Python。最終的 Python 版本要好得多。
目前,據我所知,Python 在兩個問題上一直受到嚴重批評:
雖然我同意這些問題在某種程度上對軟件開發有重大影響,但我可以確認,這些大部分是 Python 誕生初期存在的問題。
然而,多虧了 rock-solid 社區,Python 已經演變到幾乎與每一種編程語言相當。動態類型和速度不再對編碼實踐產生重大影響。
Python 可以用來處理任何問題。
如果是這樣的話,為什麼 Python 還沒有被大規模采用呢?
因此,有必要解釋為什麼動態類型和性能問題是容易被忽略的小問題。
為了理解動態類型,最好先理解其反面——靜態類型。
靜態類型語言有 C、JAVA 等。這些語言與它們的動態類型對應語言之間的主要區別在於類型檢查。靜態類型是在編譯時進行類型檢查,而動態類型是在運行時進行類型檢查。
注:這是對動態類型和靜態類型的平淡定義。其中具體的技術細節超出了本文要討論的范疇。
由於 Python 的調試問題,以及 Python 語言如何使跟蹤 bug 的過程變得比現在更復雜,一些開發人員對 Python 大發牢騷。
這種抱怨源於這樣一個事實:作為一種動態類型語言,Python 在運行時標記錯誤,這使得它比 Java 等靜態類型語言更容易出錯。
理論上,這是一個威脅,畢竟考慮到一個著名的諺語——是人都會犯錯。但是在實踐中,我懷疑類型錯誤有沒有他們聲稱的那樣嚴重。
說真的,現在誰還犯類型錯誤?
靜態類型語言遠不是一個無障礙的調試避風港。除了類型錯誤之外,大多數靜態類型語言都無法捕獲到你可能認為應該檢測到的細微錯誤。這些錯誤同樣發生在靜態類型和動態類型中。
此外,幾乎沒有代碼會不經過單元測試就部署。單元測試可以很好地防范類型錯誤。只有極少數情況下,類型錯誤會繞過單元測試來搞亂代碼。在調試方面,編程語言的另一個特性是安全類型和不安全類型。允許用戶重寫系統類型的語言被認為具有不安全的類型——例如 C。雖然不安全的類型給了用戶對類型的控制,但它的誤用會導致程序任意崩潰。
大多數靜態類型語言都是不安全的類型系統。然而,JAVA 是一種安全類型語言。Python 和我所知道的其它動態類型編程語言也是如此。
最後,我更願意使用像 Python 這樣方便和高級的語言編寫一百萬次代碼,而不是陷入 JAVA 等語言的低級細節中。