Python的創作起源,成功是必然的

國內網上關於Python語言的起源說的神乎其神,有的說"因爲作者不喜歡花括號,於是發明了python",有的說是“作者爲了打發無聊的聖誕之夜,發明了Python",真的看不下去了,太浮誇了。這是對Python發明創作過程的斷章取義,給人感覺發明一種編程語言十分隨意、毫不費力,這是將當下天天加班熬夜的程序員智商置於何地,給奮鬥中的程序員造成多大的心裏陰影面積。

你只有十分努力,才能看起來毫不費力。不管有沒有花括號、不管有沒有聖誕節,Python都一定會出現。Python的創作是作者深思熟慮的結果,在聖誕節前他已經思考良久,他對當時很多編程語言瞭如指掌,他80年代初就在參與編程語言編寫——ABC編程語言,由於當時ABC並沒有廣爲流傳,日積月累,作者越來越渴望創作一個能被當時Unix/C程序員廣接受的編程語言——ABC的下一代語言。這個想法逐漸醞釀成熟,於是在1989年聖誕節來臨之際,作者Guido van Rossum利用假期開始寫編譯器,並懷着略有調侃的心情用Python作爲項目的標題,開啓了編程之旅(Ps:Python是蟒蛇,Montl Python是他的喜歡的劇團)。

作者在《Python Programming》(1996年)寫的前沿中講述了Python的創作過程。現將其主要內容翻譯如下:

作爲Python的創建者,我想對它的起源說幾句話,添加一些個人理念。

六年前的1989年12月,我正尋找一個“業餘愛好”的編程項目,能讓我在聖誕節前後的一週裏保持忙碌。我的辦公室(阿姆斯特丹的一個政府管理的研究實驗室)將關閉,但我有一臺家用電腦,手頭沒有其他東西了。我決定爲我最近一直在考慮的新腳本語言編寫一個解釋器:ABC的後代,它會吸引Unix/C黑客。我選擇了Python作爲這個項目的工作標題,感覺心情有點不敬(我也是Monty Python's Flying Circus的忠實粉絲)。

這一切起源於ABC語言,這是我在80年代初幫助創作的一種很棒的教學編程語言。這是一種針對非專業程序員的,極其優雅而強大的語言。然而,儘管ABC有其優雅、強大的功能以及免費實現的可用性,但它從未在Unix/C世界中流行起來。其原因我只能猜想,但最可能的一個是:增加新的基礎操作到ABC裏的困難。這是一個封閉的單片機,只帶有最基礎的I/O操作:從控制檯讀一個字符串和寫一個字符串到控制檯。我下決心絕不在Python中重複這一錯誤。
除了這一目的外,我還有很多其它改進ABC的想法,而且非常渴望實現他們。比如,ABC強大的數據類型比我們希望的效率低。過於強調理論上的算法優化,而對常用場景關注不足。同時,我覺得ABC面向新手程序員的特性,對富有經驗的Unix/C程序員沒什麼吸引力。例如:ABC的語法(所有大寫關鍵字!);一些術語(例如“如何”而不是“過程”)和集成的結構化編輯器,這些都是其用戶幾乎普遍討厭的。因此,我想Python將更多地依賴Unix基礎設施和約定,而不受Unix的約束。
現在,事實證明,Python完全擺脫了傳統語言的很多麻煩。這可能是因爲我選取了很多例子,除了ABC外,我的主要影響來自於Modula-3。這是另一種非常優雅而強大的語言,是一個小而精的團隊所做。想象一下,如果我根據Unix shell和C來建模的話,那麼Python是什麼樣子?(當然,爲了討好Unix/C用戶,我也向C借了一些東西,但僅限於哪些最無爭議的功能。)。
任何個體的創造都有它的特質,有時它的創造者必須證明這些特質是正確的。也許Python最有爭議的特性是它使用縮進來進行語句分組,這直接源於ABC。但這是我本人心裏最真愛的的特性之一。這使Python具有可讀性更高,可以從兩方面來說。第一,使用縮進僅少了視覺上的混亂且是程序變得更簡潔,因此減少了需要放在代碼基本單元上的注意時間。第二,它允許程序員有更少的格式化自由,因此式樣是更統一,這使得閱讀他人的代碼更容易。(相比較而言,例如C允許有3個或4個大括號的約定,然而每種都有強烈的支持者。)
強調可讀性並非偶然,作爲一種面向對象的語言,Python的目的是鼓勵代碼重用。即使我們所有人一直都編寫完美的文檔,若代碼不可讀也難以做到代碼可重用。除了空格縮進外,Python還有很多特性都是意圖讓Python代碼具有高可讀性。這反映了ABC的理念,他希望以最純粹的形式教授編程,因此很注重清晰表達的價值。

可讀性經常通過減少不必要的可變性來增強。如果可能,用一個單一的、顯而易見的方式來編碼特殊的結構。這會減少程序員面碼中面臨的選擇,並且增加了第二個程序員熟悉代碼的機會。對Python可讀性的另一個貢獻是,選擇最常用的方式使用標點符號。大多數操作對任何一個對高中數學有模糊印象的人來說都很熟悉,不需要學習新的含義。
        另外,我很樂意承認Python不是最快的運行腳本語言。儘管它是個好亞軍。隨着硬件速度的不斷提高,與編寫和調試程序所需的時間相比,程序在其生命週期內的累積運行時間通常可以忽略不計。因此,這纔是真正的節省。雖然很難客觀的評估,但是Python被很多試過的人認爲是節省編程時間的贏家。此外,許多人認爲使用Python是一種樂趣——很難想象會有更好的建議。
        我爲Python的有點和缺點負全責,儘管有些代碼是其他人寫的。Python的成功是一個社區的產物,這始於早期的採用者,他們在我第一次在網絡上發佈Python時就開始使用它,並在他們自己的環境中傳播關於它的信息。他們通過電子郵件向我發送了他們的讚揚、批評、功能請求、代碼貢獻和個人想法。他們願意通過我剛建立的郵件列表跟我討論關於Python的各方面,並教育我或推動我朝着正確的方向前進,而那會讓我通過最初的直覺行事失敗。
原文來自:https://www.python.org/doc/essays/foreword/

結論

只有十分努力,才能看起來毫不費力

Python的成功來自於作者的專業

社區是創新的培養皿

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章