天天看點

Python 史話

Python /pi:'thon/ 用作者的話說, Python是另一個腳本語言,另一個Perl。 Python的設計崇尚簡潔和優雅,它主要吸引那些覺得Perl 醜陋怪異的程式員。Python \Py"thon\, n. Python是卧在特爾斐阿波羅神殿的毒蛇的名字。Python一種大型蟒蛇。

Python是一種解釋型、互動式、面向對象的通用程式設計語言,它的辨別是一條可愛的大蟒蛇。我們經常拿它和Tcl、Perl、Scheme、Java 比較:Python有非常清晰的文法,先進的面向對象設計,擁有子產品、類、異常處理、動态執行和進階資料類型。強大的标準庫涵蓋了字串處理(正規表達式)、網絡協定(HTTP, FTP, SMTP,XML-RPC, POP, IMAP)、軟體工程(靈活開發,單元測試,logging)、作業系統接口(系統調用,檔案系統,資料庫)的方方面面。此外它還擁有大量的第三方擴充庫和龐大活躍的社群支援,比如圖形庫PIL,跨平台GUI架構wxPython,應用伺服器Zope,網絡框twisted,3D支援PyOpenGL。簡單,強大,開放和免費,就是使用Python最好的理由。Guido van Rossum 是Python語言的作者。據稱Guido 因喜愛英國BBC每周滑稽劇Monty Python'sFlying Circus 而命名Python。象Linux 和Delphi這類單詞的發音總是另人迷惑,Python社群稱Python為派森[音],稱Guido為奎多[音]的占了大多數。要知道Guido怎麼念自己的名字,不妨到他首頁裡查找注音,還會有

一個搞怪的音頻guido.au。(Guido 在英文發念/gwee'do/,在荷蘭語中念 /khwee'do/)上世紀80年代,Guido在荷蘭阿姆斯特丹為CWI工作時,曾實作過一個教學語言ABC。ABC不容易擴充,但也有很多吸引人的特性。Guido總結了ABC失敗的經驗,從1989年十二月開始開發Python,并吸收了C、Modula-3、Bourne shell 和Icon等語言的很多優點,到1991 年二月,Python 0.9.0 第一次正式釋出在USENET。Gudio 的首頁上面題有:笨拙并以此為榮(Gawkyand proud of it)。他推崇開放和自由,喜歡印有YouNeed Python的文化衫和PYTHON的車牌,主張Computer Programming for Everybody,讓Python為我們開心地工作。Gudio過去一直對語言的變革态度保守,因而被社群稱為“仁慈的□□□□者BDFL”(BenevolentDictator For Life)。1995年Guido一家遷居美國後開始為Zope公司工作。Guido帶着他忠實的團隊來到Zope.com,這是當時Python社群非常關注的一件大事,大家都希望Guido的×××能給未來的Zope 3 這個重量級應用伺服器注入新的

活力。後來看到,Guido為了賺錢供他的孩子将來上大學,最後還是不得已告别了他共事8年心愛的Python-Labs團隊,離開了加州的Zope,前往西海岸的ElementalSecurity從事企業級安全研究。聽起來真是令人沮喪。在自由的世界裡振臂一呼應者雲集的英雄Guido,在現實

生活中居然算不上是有錢人!Gudio和他的Python在2002年赢得自由軟體基金會年度大獎。Python的繁榮主要歸功于開放自由的社群力量。開發小組成員利用郵件清單python-dev和新聞討論區comp.lang.python溝通交流,用SourceForge 完成代碼管理、版本控制、特性跟蹤、Bugs修複、送出更新檔。SourceForge 的tracker清單裡總是排滿了最新送出的項目計劃。由Guido本人和Bruce Eckel主持的PyCon2004 是面向Python社群的開發者盛會。PyCon2004議題涉及Web開發、數學和科學計算、Pyrex、Zope、GUI、3D、面向對象、Twisted網絡架構、分布式應用。值得注意得

是Andrew Koenig這位C++社群的重量級人物出席并作了非常有趣的演講。Python被設計為和C密切整合的膠水語言。常常用C為Python編寫功能子產品、底層接口和增強性能,利用Python完成邏輯抽象和原型開發。C也可以将Python嵌入執行(調用虛拟機解釋執行)。C++庫Boost.Python可以完成C++到Python類型的映射。Python簡潔的文法,進階的資料類型,自動記憶體管理,健壯的虛拟機和豐富的标準庫可以極大地提高生産力。體驗一下Python使用弱類型帶來的好處:

def sum(arg1, arg2):

return arg1 + arg2

print sum(42, 47.8)

print sum('spam', 'eggs')

完成相同功能又具有靈活性的Java/C++代碼實際上是不容易寫的。C++使用模闆就輕松搞定了麼?C/C++ 體制裡面隐藏的類型轉換實在令人擔憂。(C++View創刊号專門讨論過用C++如何求兩數之和,BruceEckel給過一個Java實作。)Python語言特别強調簡潔,優雅,自然的風格。鋸齒型的代碼縮進,簡短的代碼,清晰統一的文法規則。解釋和互動執行,可以節約程式員編碼和調試的時間。可

以象Java一樣編譯成位元組碼來提高執行速度。針對Python執行效率的優化産生很多方案。當然,首先要确認Python已經足夠快。我們經常會發現執行 Python 應用程式所花費的時間絕大部分隻是花在了幾個函數上。将這些關鍵部分重寫成 C 擴充子產品,可以使用像 SWIG這樣的擴充封裝器擴充,将程式中最耗時元素作為C代碼執行。已經建立了一種叫Pyrex 的語言,它融合了Python 和 C。一旦用 C 編譯器進行了編譯,就可以将這些Pyrex語言子產品導入正常的 Python 應用程式并使用。與直接用C編寫擴充相比,Pyrex允許在同一代碼中更無縫地混合C級别的變量和Python級别的變量對象。擴充子產品Psyco還可以插入Python解釋器的内部,讓它運作得更快。Python語言非常接近人類的自然語言。Python源程式被稱作可執行的僞代碼,具有極高的可讀性。許多特性幫助你降低了産生錯誤的可能性。你相信這是一段python程式嗎:

member and folder is not object and object.

displayContentsTab()

腳本語言通常有輕便靈活的特點。Python是平台相容,高度可移植的,可以運作在許多Unix 變體,Mac,MS-DOS,Windows,嵌入式等平台。Python 2.0增加了對Unicode支援。Python社群還為你提供了最佳的工具和商業應用的秘密武器。win32all 作為Python在Win32 平台上的擴充,可

以很友善調用Win32 API和COM對象。用VB.NET可以做到的,通過win32all一樣可以友善的實作。.NET 平台的Common Language Runtime(CLR)可以運作多種語言。Python for .NET可以與.NET架構互操作。譬如,如果Python類是公用的,Visual Basic程式員便能夠繼承它。JPython(Jython)是CPython(Python)語言的100%純Java實作,可以運作在任何支援 JVM 的平台

上;它結合了Python及Java虛拟機和庫的優點,并作為Java平台的友善補充,可以完全利用 JRE提供的所有類和API。Jython非常容易學習和使用,它的生産力在于結合了腳本語言Python的易用性與Java平台的健壯性。同Java一樣Jython程式可以編譯成Java位元組碼,增強了Java的字元串和文本支援功能使它成為Java程式最理想的嵌入腳本語言。J P y t h o n 函數設計(Functional programming)也為Java提供了強大和靈活的程式設計樣式,共享了Python特有的動态特性,甚至可

以在運作時改變基類。現在可以得到的穩定版本是Jython 1.1。Python 2.3.4 (May 27, 2004)是最新的生産版本。活躍的Python一直在不斷的進化之中。我們總是可以在Python中發現和體驗當今最熱門的新技術:未來的Python 3.0可能因為PyPy(implementingPython in Python)而引起文法上的激進變化。甚至有可能加入JIT(Just-In-Time, 運作時編譯執行的技術,Java語言即采用該技術)編譯支援。Guido 在個人的Blog裡,提出靈活程式設計Python化(Pythonic Agile Programming)。Python的某些特征專門适合靈活開發(單元測試架構unittest,文檔字串pydoc以及它支援的 inspect都是标準庫的一部分)。Python已經內建在大多數Linux發行版中。RedHat

使用Python制作安裝程式Anaconda(蟒蛇)。Gentoo的emerge 和portage 使用Python建構完整的系統。所有運作Mac OS X的Apple計算機的基本安裝都包括Python。HP和Compaq的很多機器使用Python進行服務管Zope應用伺服器是Python建構複雜系統的最佳執行個體。Plone内容管理系統是Zope應用最廣泛的産品。Zope和Plone方案成了O'Reilly Open Source Conference2004

的明星。BitTorrent使得Python更加出名和流行。BT完美地應用了Python相關的多種解決方案:設計優雅、跨平台的語言和标準網絡庫的強力支援,wxPython跨平台的GUI,用py2exe綁定虛拟機并編譯為可執行程式釋出。RealNetworks的開源項目Helix 播放器(RealOne)用Python建構應用系統。

繼續閱讀