本系列文章譯自Python之父 Guido van Rossum 的系列博客「The History of Python」。這個博客系列對我們理解Python及其演變很有幫助,在這裡翻譯推薦給大家,希望大家喜歡,也請大家多多指教!
之後的博文將專註於 Python 歷史中的一些細節。不過,在此之前,我想先闡述一下我在 Python 的設計和實踐中所遵循的一些基本理念。
首先,Python 一開始只是一個個人實驗性項目,沒有任何官方背景,因此我必須儘快取得成果,某種程度上也是為了爭取管理層的支持(這點我倒是做得還不錯)。這使我採取了一些節約時間的原則:
而其它一些原則則不為節約時間,有時還恰恰相反:
另外,關於什麼是好的編程語言設計,我也有不少想法——主要來自於 ABC 語言團隊,也是在這個團隊中,我第一次獲得了編程語言設計與實踐的實際經驗(譯註:作者在這個團隊工作了幾年)。不過這些想法很難用文字表達,因為每個人對優雅、簡潔與可讀性的理解是比較主觀的。
雖然之後我也會討論到 ABC 語言對 Python 的影響,但這裡還是要提到一條關於可讀性的原則:與日常寫作或高等數學相比,Python 中應減少標點符號的使用。我們會使用一些編程語言中的傳統符號,比如 「x * y」表示相乘,「a[i]」表示列表切片,或者「x.foo」表示對象屬性等,但 Python 不會用「$」表示變數,也不會用「!」表示特殊操作。
Tim Peters,一位忠實的 Python 程序員,後來也成為持續高產的 Python 核心開發者,曾把我未表達的設計原則總結為他所謂的「Python 之禪」,這裡我全文引用如下:
美比丑好;詳盡比模糊好;簡單比複雜好;複雜比繁複好;扁平比嵌套好;疏鬆比密集好; 可讀性很重要;雖然實用比純粹好,但特例不能破壞原則;錯誤不應被忽略,除非有意為之;如有歧義,拒絕猜測,總有一種——最好是只有一種——沒有歧義的解決方案,雖然這種方案可能一開始並不明顯——除非你是 Python 之父;現在就做比永遠不做好,雖然有時,永遠不做要比胡做一通好;如果你的代碼難以解釋,說明它很爛;如果你的代碼容易理解,則可能是好代碼;命名空間是個好東西——我們得多加應用!
美比丑好;
可讀性很重要;
雖然我在 ABC 語言的經驗對 Python 有很大的影響,但有些地方,它們也採用了完全不同的原則。以下是 Python 有意避免的一些觀念:
某種意義上說,我在設計 Python 時所採用的設計哲學,或許是其最終取得成功的主要原因之一。它並不在一開始就追求完美,但足夠滿足大家的需求,隨著用戶越來越多,許多改進建議被納入其中。正如大家將在之後的博文中看到的,許多建議都涉及 Python 核心部分的重大改變或重構。直到如今,Python 依然在持續演化之中。
我開發 Python 的時候,也正是其它動態(而且開源)編程語言開始活躍,並越來越受歡迎的時代,比如 Tcl、Perl、以及(後來的)Ruby。為把 Python 置於一種歷史視角之下,我將 Python 的版本發布記錄羅列如下,因為我也沒記錄當時的所有事情,所以早期的時間比較寬泛:
發布日期 版本號- 1989.12 開始開發- 1990 在 CWI 發布內部版本- 1991.02.20 0.9.0(發布在 alt.sources)- 1991.02 0.9.1- 1991.08 0.9.2- 1991.12.24 0.9.4- 1992.01.02 0.9.5(只支持蘋果系統)- 1992.04.06 0.9.6 - 1992年某天 0.9.7beta- 1993.01.09 0.9.8- 1993.07.29 0.9.9- 1994.01.26 1.0.0- 1994.02.15 1.0.2- 1994.05.04 1.0.3- 1994.07.14 1.0.4- 1994.10.11 1.1- 1994.11.10 1.1.1- 1995.04.13 1.2 - 1995.10.13 1.3- 1996.10.25 1.4- 1998.01.03 1.5- 1998.10.31 1.5.1- 1999.04.13 1.5.2- 2000.09.05 1.6- 2000.10.16 2.0- 2001.02.25 1.6.1- 2001.04.17 2.1- 2001.12.21 2.2 - 2003.07.29 2.3- 2004.11.30 2.4- 2006.09.16 2.5- 2008.10.01 2.6- 2008.12.03 3.0
發布日期 版本號
- 1992年某天 0.9.7beta
- 1995.10.13 1.3
- 2003.07.29 2.3
我給 http://python.org 上還推薦的版本加了鏈接(譯註:現在都是古老的版本了)。有些小版本並不在上面的列表中,比如 2.0.1 等,否則這個列表就太長了。你依然可以在 http://www.python.org/ftp/python/src/ 上找到各版本的源代碼。
個人公眾號:讀書錄
推薦閱讀:
TAG:Python | Python入門 | Python開發 |