Python系列教程6

高階班雙槓發表於2020-11-13

當Python於20世紀90年代初期出現在軟體舞臺上時,曾經引發其擁護者和另一個受歡迎指令碼語言Perl的擁護者之間的衝突,但現今已成為經典的爭論。我們認為今天這種爭論令人厭倦,也沒有根據,開發人員都很聰明,可以找到他們自己的結論。然而,這是我在培訓課程上時常被問到的問題之一,所以在此對這個話題說幾句話,似乎是合適的。
故事是這樣的:你可以用Python做到一切用Perl能做到的事,但是,做好之後,還可以閱讀自己的程式程式碼。就是因為這樣,兩者的領域大部分重疊,但是,Python更專注於產生可讀性的程式碼。就大多數人而言,Python強化了可讀性,轉換為了程式碼可重用性和可維護性,使得Python更適合用於不是寫一次就丟掉的程式。Perl程式程式碼很容易寫,但是很難讀。由於多數軟體在最初的建立後都有較長的生命週期,所以很多人認為Python是一種更有效的工具。
這個故事反映出兩個語言的設計者的背景,並體現出了人們選擇使用Python的一些主要原因。Python的創立者所受的是數學家的訓練,因此,他創造出來的語言具有高度的統一性,其語法和工具集都相當一致。再者,就像數學一樣,其設計也具有正交性(orthogonal),也就是這門語言大多陣列成部分都遵循一小組核心概念。例如,一旦掌握Python的多型,剩下的就只是細節而已。
與之相對比,Perl語言的創立者是語言學家,而其設計反映了這種傳統。Perl中,相同任務有很多方式可以完成,並且語言材料的互動對背景環境敏感,有時還有相當微妙的方式,就像自然語言那樣。就像著名的Perl所說的格言:“完成的方法不止一種。”有了這種設計,Perl語言及其使用者社群在編寫程式碼時,就一直在鼓勵表示式的自由化。一個人的Perl程式碼可能和另一個人的完全不同。事實上,編寫獨特、充滿技巧性的程式碼,常常是Perl使用者之間的驕傲來源。
但是,任何做過任何實質性的程式碼維護工作的人,應該都可以證實,表示式自由度是很棒的藝術,但是,對工程來說就令人厭惡了。在工程世界中,我們需要最小化功能集和可預測性。在工程世界中,表示式自由度會造成維護的噩夢。不止一位Perl使用者向我們透露過,太過於自由的結果通常就是程式很容易重頭寫起,但修改起來就不是那麼容易了。
考慮一下:當人們在作畫或雕塑時,他們是為自己做,為了純粹美學考慮。其他人日後去修改圖畫或雕像的可能性很低。這是藝術和工程之間關鍵的差異。當人們在編寫軟體時,他們不是為自己寫。事實上,他們甚至不是專門為計算機寫的。而實際上,優秀的程式設計師知道,程式碼是為下一個會閱讀它而進行維護或重用的人寫的。如果那個人無法理解程式碼,在現實的開發場景中,就毫無用處了。
這就是很多人認為Python最有別於Perl這類描述語言的地方。因為Python的語法模型幾乎會強迫使用者編寫可讀的程式碼,所以Python程式會引導他們往完整的軟體開發迴圈流程前進。此外,因為Python強調了諸如有限互動、統一性、規則性以及一致性這些概念,因此,會更進一步促進程式碼在首次編寫後能夠長期使用。
長期以來,Python本身專注於程式碼質量,提高了程式設計師的生產力,以及程式設計師的滿意度。Python程式設計師也變得富有創意,以後就知道,語言本身的確對某些任務提供了多種解決辦法。不過,本質上,Python鼓勵優秀的工程的方式,是其他指令碼語言通常所不具備的。
至少,這是許多采用Python的人之間所具有的共識。當然,你應該要自行判斷這類說法,也就是通過了解Python提供了什麼給你。

相關文章