Python之父-Guido van Rossum
Guido van Rossum是Python編程語(yǔ)言的創(chuàng)始人,生于荷蘭哈勒姆。現(xiàn)居美國(guó),曾就職于Google公司。1989年圣誕節(jié)期間,在阿姆斯特丹,Guido為了打發(fā)無(wú)聊的圣誕假期,決心開(kāi)發(fā)一個(gè)新的腳本解釋程序,作為ABC語(yǔ)言的一種繼承。之所以選中Python作為程序的名字,是因?yàn)樗陨狭擞?guó)肥皂劇《Monty Python飛行馬戲團(tuán)》在Python社區(qū),吉多·范羅蘇姆被人們認(rèn)為是“仁慈的獨(dú)裁者”(BDFL),意思是他仍然關(guān)注Python的開(kāi)發(fā)進(jìn)程,并在必要的時(shí)刻做出決定。
Guido van Rossum
2005年12月,吉多·范羅蘇姆加入Google。他用Python語(yǔ)言為Google寫(xiě)了面向網(wǎng)頁(yè)的代碼瀏覽工具Mondrian,之后又開(kāi)發(fā)了Rietveld。在那里他把一半的時(shí)間用來(lái)維護(hù)Python的開(kāi)發(fā)。2012年12月7日,Dropbox宣布吉多·范羅蘇姆加入Dropbox公司。
Guido van Rossum在2016年荷蘭“King’s Day”的時(shí)候,被駐洛杉磯的荷蘭大使館邀請(qǐng)做一次演講,觀眾是荷蘭和美國(guó)的企業(yè)家。以下是演講的內(nèi)容。部分內(nèi)容是自傳,部分內(nèi)容是關(guān)于編程的重要性,部分是關(guān)于Python的大思想。
Python: 社區(qū)創(chuàng)造的編程語(yǔ)言
我是一個(gè)nerd, 一個(gè)geek。我26歲大學(xué)畢業(yè),45歲結(jié)婚。如今我60歲了。
我不是喬布斯, 也不是扎克伯格,但是在35歲的時(shí)候創(chuàng)造了一門(mén)編程語(yǔ)言。這門(mén)語(yǔ)言真的很不可思議。
我們的團(tuán)隊(duì)開(kāi)始創(chuàng)造一門(mén)新的編程語(yǔ)言。我們希望可以取代Basic。Basic在微電腦例如蘋(píng)果二代中使用,是業(yè)余程序員的選擇。我們的團(tuán)隊(duì)看來(lái),Basic將最終被取代。
我們最初創(chuàng)造了ABC,但是最終舍棄了ABC。ABC之所以失敗的原因在于在那個(gè)時(shí)候沒(méi)有互聯(lián)網(wǎng),在開(kāi)發(fā)者和使用之間沒(méi)有反饋的閉環(huán)。ABC最終是單行道的街道。
五年之后,我拾取了之前的經(jīng)驗(yàn),在ABC之前的反饋環(huán)做改進(jìn)?;ヂ?lián)網(wǎng),小而慢,卻讓這成為可能。過(guò)去25年,互聯(lián)網(wǎng)和開(kāi)源的運(yùn)動(dòng),確實(shí)改變了所有。我相信,這些發(fā)展對(duì)于我程序語(yǔ)言的成功的貢獻(xiàn)遠(yuǎn)超過(guò)我的編程技巧和經(jīng)驗(yàn)。
我將這門(mén)語(yǔ)言命名為Python。對(duì)于我來(lái)說(shuō),這是為了紀(jì)念喜劇天才Monty Python。
我這里想說(shuō)一下編程語(yǔ)言對(duì)于程序員來(lái)說(shuō)意味著什么。尤其是一個(gè)程序員需要向一個(gè)外行人解釋什么是編程的時(shí)候。他們說(shuō):編程是告訴計(jì)算機(jī)做什么。你好奇的是,如果僅僅是如此的話(huà),為什么當(dāng)他們之間談?wù)摰臅r(shí)候,會(huì)如此熱情高昂呢?
現(xiàn)實(shí)來(lái)說(shuō),編程語(yǔ)言是程序員表達(dá)和交流思想的工具,觀眾是其他的程序員而不是電腦。在程序中所表達(dá)的思想會(huì)達(dá)到終端用戶(hù),盡管他們從沒(méi)閱讀甚至知道編程,但是確實(shí)是受益并且并影響著。
想象下Google和Facebook這樣無(wú)比成功的公司取得的難以置信的成功。他們核心的理念-關(guān)于電腦能夠?yàn)槿祟?lèi)做些什么。而這些核心的理念是用程序語(yǔ)言來(lái)表達(dá)的。最好用來(lái)表達(dá)這個(gè)理念的程序語(yǔ)言是最能獲得用戶(hù)的。盡管Google和Facebook公司的理念不盡相同,但是這兩個(gè)公司最偏愛(ài)的程序語(yǔ)言確實(shí)截然相反的。這正是我想說(shuō)的。
真實(shí)的故事: Google公司的第一個(gè)版本是用Python寫(xiě)下的。原因在于:Python是Larry Page和Sergey Brin關(guān)于如何索引網(wǎng)頁(yè)和組織搜索結(jié)果的思想的正確語(yǔ)言。那么Python有何不同呢?和其他程序語(yǔ)言相比,是如何脫穎而出的呢?
我有許多答案。一些是技術(shù)層面上的,一些是從使用的具體技巧和經(jīng)驗(yàn),一些僅僅是關(guān)于在正確的時(shí)間和正確的地點(diǎn)。但最最重要的是Paython是在互聯(lián)網(wǎng)上發(fā)展的語(yǔ)言,完全開(kāi)源,由一群志愿者組成的社區(qū)開(kāi)發(fā),但是這個(gè)社區(qū)不是業(yè)余,絕對(duì)是專(zhuān)業(yè)的。他們充滿(mǎn)熱情,也擁有絕對(duì)的原創(chuàng)權(quán)。
他們就是科學(xué)大樓地下室里那群極客們。我很開(kāi)心能成為這個(gè)社區(qū)中的一員。我也很開(kāi)心能夠在每天的工作中感受到如何需要社區(qū)(我是Dropbox公司的工程師)。
因?yàn)榭梢愿惺艿缴鐓^(qū),我感受到自己是真實(shí)存在的。我想其他社區(qū)的成員也會(huì)和我有著同樣的感受。這樣的感受是會(huì)傳染的,如今整個(gè)世界都存在著社區(qū)的成員。
Python 社區(qū)由數(shù)以百萬(wàn)的極客們組成,他們持續(xù)使用Python,并且喜愛(ài)使用著。 一些活躍的成員還經(jīng)常組織Python會(huì)議,就是大家所熟知的PyCons。會(huì)議在納米比亞,伊朗,伊拉克,甚至俄亥俄州舉行。
我最喜歡的故事:一年前,我花20分鐘的時(shí)間在伊拉克南部巴比倫大學(xué)的教室和工作人員的電話(huà)會(huì)議上回答有關(guān)Python的問(wèn)題。由于組織這個(gè)活動(dòng)的一個(gè)領(lǐng)導(dǎo)者的努力,在巴比倫大學(xué)現(xiàn)在可以使用Python編程語(yǔ)言。想到這次的經(jīng)歷,我都很激動(dòng)。我從沒(méi)想過(guò)我會(huì)觸摸如此遙遠(yuǎn)的生命,與我自己的生活截然不同。
一個(gè)由社區(qū)創(chuàng)建的編程語(yǔ)言促進(jìn)了全世界用戶(hù)的幸福。 明年(2017年)我可以參加古巴的PyCon!
Python的生命力-Python的深度和廣度
最近我注意到了一個(gè)趨勢(shì):我開(kāi)始用更多的時(shí)間來(lái)進(jìn)行面對(duì)面的深入交流,編碼時(shí)間也更少。 雖然我后悔,但是我真的很享受前者的過(guò)程。
我本周特別喜歡的兩次與用戶(hù)交談的對(duì)話(huà)都是和非??鞓?lè)的Python用戶(hù),當(dāng)然他們不可能有更多的不同。對(duì)我來(lái)說(shuō),這是對(duì)Python持久的深度和廣度的證實(shí):它遠(yuǎn)遠(yuǎn)超出了你所能想象的單一技巧語(yǔ)言。
我的第一個(gè)訪(fǎng)問(wèn)者是紐約州石溪大學(xué)(Stony Brook University)計(jì)算機(jī)科學(xué)教授Annie Liu 在一個(gè)持續(xù)了將近三個(gè)小時(shí)的互動(dòng)對(duì)話(huà)中(她還有更多的話(huà)要說(shuō):-),她向我解釋了她的研究的要點(diǎn),就是使用集合理解寫(xiě)下小型的Python程序,來(lái)執(zhí)行基本算法。然后優(yōu)化用一種自動(dòng)化的方法把它剔除出來(lái),她總結(jié)為三個(gè):迭代,增量和實(shí)現(xiàn)。 當(dāng)她的學(xué)術(shù)同事嘲笑她選擇像Python這樣的非理論性語(yǔ)言時(shí),可是她的學(xué)生們喜歡它,而且她獲得了不需要高級(jí)LaTeX技能的值得出版的結(jié)果,也沒(méi)有用像SETL這樣的死亡語(yǔ)言寫(xiě)作。
她敘述的另一個(gè)軼事,但不知何故,我忘記了,直到她提醒我。 是關(guān)于Python的縮進(jìn)使用的起源。這件軼事發(fā)生在Python創(chuàng)建之前很久。在一家酒店的IFIP工作組會(huì)議上,一天晚上,代表們不能同意用于代碼塊的最佳分隔符。
在桌子上是古老的BEGIN ... END,newcomers{...},還有一些古怪的東西,如IF ... FI和縮進(jìn)。 無(wú)奈之下有人說(shuō)這個(gè)決定必須由一個(gè)非程序員做出。唯一一個(gè)人顯然是羅伯特·杜瓦爾的妻子,當(dāng)時(shí)她和丈夫一起去。 盡管時(shí)間已經(jīng)很晚了,她卻從她的旅館里被叫下來(lái),要求她作出獨(dú)立的選擇。 她立即決定,以純粹的縮進(jìn)結(jié)構(gòu)是贏家。
現(xiàn)在,我可能已經(jīng)把細(xì)節(jié)弄錯(cuò)了,但顯然Lambert Meertens在場(chǎng),他繼續(xù)設(shè)計(jì)Python的前身ABC,盡管當(dāng)時(shí)他把它叫做B (斜體意味著B不是語(yǔ)言,但包含語(yǔ)言名稱(chēng)的變量的名稱(chēng))。 在他的版本中,只有蘭伯特·米爾滕斯(Lambert Meertens)和羅伯特·杜瓦(Robert Dewar),羅伯特·德瓦爾(Robert Dewar)的妻子因?yàn)橄胨X(jué)而選擇了縮進(jìn)。無(wú)論哪種方式,這是一個(gè)迷人而強(qiáng)大的故事。
當(dāng)然,Annie也提出一些要求。這里簡(jiǎn)要如下:
Quantifiers 量詞。 她真的很渴望ABC(及其“EACH x IN xs HAS pred”)中的“ Some x IN xs HAS pred ”符號(hào)被使用,它表面上類(lèi)似于Python的any()和all()函數(shù),但增加了語(yǔ)義使得x在測(cè)試成功時(shí)被執(zhí)行的范圍中可用。
聲明類(lèi)型(盡管我認(rèn)為她會(huì)對(duì)Python 3的函數(shù)注釋感到滿(mǎn)意,可能會(huì)增加Django和App Engine模型類(lèi)中的屬性聲明。)
模式匹配,一個(gè)Erlang。我一直在不時(shí)地把這些東西剔除, 很難找到真正具有閃光點(diǎn)的語(yǔ)法,但它似乎是一個(gè)有用的功能。
這和我第二天的來(lái)訪(fǎng)者形成鮮明的對(duì)比。通過(guò)一位前同事,我認(rèn)識(shí)了創(chuàng)業(yè)公司Dropbox創(chuàng)始人兼首席執(zhí)行官德魯·休斯頓(Drew Houston)。 Dropbox目前擁有2500萬(wàn)用戶(hù),在Amazon S3上存儲(chǔ)PB級(jí)的數(shù)據(jù),德魯是一個(gè)隨和的麻省理工學(xué)院畢業(yè)生,他同樣很喜歡討論定制內(nèi)存分配器,風(fēng)險(xiǎn)投資的世界,以及如何保持工程師的快樂(lè)。
Python在Dropbox創(chuàng)業(yè)成功中有著重要的作用。 在Windows,Mac和Linux(?。┥线\(yùn)行的Dropbox客戶(hù)端是用Python編寫(xiě)的。 這是可移植性的關(guān)鍵:除UI之外的所有內(nèi)容都是跨平臺(tái)的。 (用戶(hù)界面在Mac上使用Python-ObjC橋接,在其他平臺(tái)上使用wxPython)性能從來(lái)就不是一個(gè)問(wèn)題 - 理解少量關(guān)鍵部分是用C語(yǔ)言編寫(xiě)的,包括用于某個(gè)特定內(nèi)存的自定義內(nèi)存分配器其分配模式涉及分配100,000個(gè)這樣的對(duì)象的類(lèi)型,然后釋放除了幾個(gè)之外的所有對(duì)象。 在您開(kāi)始使用Dropbox發(fā)行版并了解其工作原理之前,請(qǐng)注意不要包含源代碼,并且字節(jié)碼會(huì)被混淆。德魯不是傻子。他還嘲笑那些正在使用Java的可憐的競(jìng)爭(zhēng)對(duì)手
重點(diǎn)關(guān)注兩件事情:滿(mǎn)足Python用戶(hù)和編碼。 這就是生活!
Python 編程哲學(xué)
在使用編程語(yǔ)言的時(shí)候,你最好有幽默感
1. 美觀先行
2. 直接明了
3. 大道至簡(jiǎn)
4. 可以復(fù)雜,但要能夠理解,不繁瑣
5. 平整,最好不用嵌套
6. 稀疏不密集
7. 責(zé)任感很重要
8. 特殊案例也不可以特殊到打破規(guī)則
9. 實(shí)用勝于簡(jiǎn)潔
10. 錯(cuò)誤不可無(wú)聲無(wú)息
1. 不可模棱兩可
2. 只有一個(gè)明顯的方式方法,雖然開(kāi)始并不明顯
3. 現(xiàn)在勝過(guò)從不
4. 如果執(zhí)行很難解釋?zhuān)沁@不是一個(gè)好的執(zhí)行。
5. 命名空間是個(gè)絕好的主意,讓我們多利用它。 -------Tim Peters
聯(lián)系客服