全能選手 看看Python應(yīng)乎潮流的72變
在多年的編程經(jīng)歷里,不斷的重復(fù)著同樣的悲劇。Turbo C學(xué)完了,用Borland C,Visual C++太麻煩,開始用PowerBuilder快速開發(fā),接上去Delphi、C++Builder、JBuilder,十八般武藝都學(xué)完了,結(jié)果又蹦出個(gè)新時(shí)髦。哪天有個(gè)終結(jié)?
51CTO推薦閱讀:專訪豆瓣網(wǎng)首席架構(gòu)師洪強(qiáng)寧:Python,簡(jiǎn)單的力量
在軟件的浪潮里,程序員太渺小了。我們害怕自己,會(huì)同過氣的語言一樣曇花一現(xiàn),成為過眼煙云。直至Python出現(xiàn),故事開始轉(zhuǎn)折。 起源于上世紀(jì)80年代末的Python語言,是一種開放源代碼的解釋型高級(jí)動(dòng)態(tài)類型語言,語法簡(jiǎn)練、類庫豐富,以開發(fā)效率高著稱。
20多年的發(fā)展時(shí)間,Python是愈久彌香,經(jīng)歷住了時(shí)間的考驗(yàn)。Python是Goolge的三大語言之一;全球最大的視頻網(wǎng)站YouTube,以及國內(nèi)的豆瓣網(wǎng)也是采用Python開發(fā);最新最熱的行當(dāng)中,python是往往web game的首選開發(fā)語言之一,谷歌和國內(nèi)的易度云計(jì)算開發(fā)平臺(tái)也都選擇了Python語言。
這就是神奇的Python,在交錯(cuò)的語言大戰(zhàn)中,Python卻成為一顆長(zhǎng)青樹,不斷煥發(fā)新的光彩。而Python也成為本人最近8年的編程生涯的主體,或許這將是作為程序員的歸屬,一直走下去。讓我們一起分享下這不一樣的Python。
簡(jiǎn)單是硬道理
PHP被很多嚴(yán)肅的開發(fā)人員詬病,太簡(jiǎn)單、太臟了。然而PHP卻被企業(yè)所喜歡,連Yahoo和Facebook都選擇了PHP, PHP不斷在發(fā)展,生命力異常旺盛。 為什么?因?yàn)楹?jiǎn)單。程序語言,從機(jī)器語言到匯編,到高級(jí)語言,不就是簡(jiǎn)單在驅(qū)動(dòng)嗎?程序員也是人,需要更容易使用的語言。時(shí)髦點(diǎn)的話,就是語言也要多為咱程序員服務(wù)了,人機(jī)接口、用戶體驗(yàn)要好。
因?yàn)楹?jiǎn)單,所以開發(fā)效率高;因?yàn)楹?jiǎn)單,所以容易閱讀和維護(hù);因?yàn)楹?jiǎn)單,所以不怕沒人接手;因?yàn)楹?jiǎn)單,重構(gòu)下也無妨;因?yàn)楹?jiǎn)單,項(xiàng)目經(jīng)理就不必寫偽代碼了,直接Coding出框架代碼吧。簡(jiǎn)單帶來的優(yōu)勢(shì),是成指數(shù)級(jí)別增長(zhǎng)。簡(jiǎn)單省了錢,加快的進(jìn)度,減少的項(xiàng)目風(fēng)險(xiǎn),首先老板會(huì)喜歡。簡(jiǎn)單是硬道理。.net同樣是靠簡(jiǎn)單占領(lǐng)了不小的市場(chǎng)份額。
python語言最早設(shè)計(jì)指導(dǎo)思想之一,就是想提高代碼的可讀性。Python語言采用縮進(jìn)來標(biāo)識(shí)代碼塊,而Java采用的是配對(duì)的大括號(hào)來標(biāo)識(shí)。不僅僅是排版更漂亮,Python的數(shù)據(jù)結(jié)構(gòu)非常簡(jiǎn)單和統(tǒng)一,Python自帶非常龐大的類庫,很多東西拿來即可。這樣,相同的邏輯,使用python可能只需要java五分之一的代碼量。
很多軟件愛拿自己“數(shù)百萬行代碼”出來說事,表明自己很強(qiáng)大。而在Python的世界里,人們?cè)陟乓嗤墓δ芎螅矚g說我只有幾千行代碼(比如Python上的對(duì)象數(shù)據(jù)庫系統(tǒng)ZODB就只有不到5千行代碼)。背后的意思是,放心用吧,有問題你也很容易維護(hù)這個(gè)系統(tǒng);或者如果有時(shí)間,你自己也可以接管這個(gè)代碼。
Pythonic之美
PHP靠一個(gè)“簡(jiǎn)單”占領(lǐng)了市場(chǎng),PHP的哲學(xué)是quick and dirty;Python同樣簡(jiǎn)單,但Python的哲學(xué)是Pythonic。Pythonic是什么?Pythonic是quick and not dirty,也就是quick and beautiful.
這個(gè)Pythonic之美,代表了程序員的素養(yǎng)和品味。什么是好的代碼?什么是漂亮的代碼?有一本書,叫做《unix編程藝術(shù)》,實(shí)際上一本對(duì)編程審美進(jìn)行洗腦的經(jīng)典書籍。而Python語言的設(shè)計(jì)理念,正符合了這種編程審美。因此,Python深受高端開發(fā)人員的喜歡,Python和他們有相同的文化。這如同,很多人將擁有Mac機(jī)作為自己審美品味的象征一樣。
Python寶庫
Python號(hào)稱自帶電池(Battery Included),也就是有強(qiáng)大的類庫。Python內(nèi)建的類庫就已經(jīng)非常全面了。從web抓取,到xml解析,到嵌入式數(shù)據(jù)庫,到壓縮包的處理,到郵件協(xié)議,到j(luò)son解析,而且不斷在增長(zhǎng)。
如果你還覺得不夠,可到http://pypi.python.org上去找,這里有1萬多種第三方的類庫。從圖片處理、到加密算法,到excel文件解析生成,到pdf文件轉(zhuǎn)換,可謂應(yīng)有盡有,無所不能。探訪這里的樂趣,就如同海邊拾貝,如同山間采菌,那種驚喜,那種“大國大民”的優(yōu)越感,讓你在心底涌現(xiàn)出投身Python的幸福,進(jìn)而歸屬感倍增。
更重要的是,所有的這些寶貝,全部開源,而且大都是類 BSD協(xié)議的開源,您直接用于商業(yè)。有了這些,我會(huì)經(jīng)常為自己選擇了Python而慶幸,這使得我們像易度這樣龐大的應(yīng)用快速構(gòu)建起來。Python自帶強(qiáng)大的包管理機(jī)制,簡(jiǎn)簡(jiǎn)單單一個(gè)easy_install命令,您就可以在線安裝升級(jí)、卸載這些包。這類似debian/ubuntu的apt包管理機(jī)制一般方便。
全能選手
可能是因?yàn)镻ython語言練就了動(dòng)態(tài)語言的以柔克剛、借力打力的太極推手功夫,加上Python簡(jiǎn)單導(dǎo)致的生產(chǎn)力指數(shù)級(jí)增長(zhǎng)效應(yīng),Python應(yīng)該是應(yīng)用最全面的一種語言了。
從腳本、到web開發(fā)、到嵌入使用、到客戶端、到云計(jì)算,python都干得不錯(cuò)。你只需要學(xué)會(huì)Python這一門語言,老板給你什么任務(wù)你幾乎都能完成。讓我們隨著時(shí)間的年輪滾進(jìn),看看Python應(yīng)乎潮流的72變。
操作系統(tǒng)腳本
幾乎所有的Linux發(fā)行版本和Mac都自帶了Python解釋環(huán)境,還有Nokia的S60手機(jī)平臺(tái),可直接運(yùn)行python腳本。簡(jiǎn)潔的Python語法,即便是不大懂開發(fā)的系統(tǒng)管理員或者企業(yè)IT人員,也可以快速掌握。事實(shí)上Ubuntu和Red Hat的安裝程序,以及Gentoo的包管理系統(tǒng)也是用python開發(fā)的。
最佳伴侶
很多軟件往往選擇會(huì)選擇將整個(gè)Python接上去內(nèi)嵌到軟件中,作為一個(gè)操控軟件的腳本語言。最典型的是各種3D動(dòng)畫軟件,大都使用Python來做特效。比如Maya、Blender等;一些2D的圖像處理軟件,比如GIMP等也可Python來更靈活的處理圖片。
其他的,OpenOffice可以內(nèi)嵌Python編寫宏;知名的地理信息系統(tǒng)ArcGIS采用Python作為腳本語言;一些游戲引擎,也通常選擇Python作為游戲邏輯的編寫工具;還有一些有限元分析軟件和數(shù)據(jù)統(tǒng)計(jì)分析和挖掘的軟件,也采用Python作為使用接口。
客戶端程序
現(xiàn)在的桌面,已經(jīng)不是Windows一統(tǒng)天下了,Linux和Mac的用戶在逐漸增多。誰都想自己寫的程序,能夠在多個(gè)平臺(tái)上運(yùn)行。Python就是這為數(shù)不多的選擇之一。國內(nèi)limodou編寫的UliPad文本編輯器就是用Python編寫的;而最早的BT下載客戶端,也是采用Python。
Web應(yīng)用
Web應(yīng)用是Python大放光彩的領(lǐng)域。豆瓣網(wǎng)站很pythonic,網(wǎng)站風(fēng)格完全符合python簡(jiǎn)潔、漂亮、優(yōu)美的審美。而豆瓣也是采用了python上的一個(gè)叫做quixote的web框架開發(fā)完成。更大的YouTue.com案例我就不多說了。
Python上的web輕量級(jí)框架,其實(shí)可能有數(shù)十種之多(這可能需要?dú)w功于Python的生產(chǎn)效率)。最流行的是Django,其他的包括TurboGears、Pylons、BFG等。隨著Python上的web服務(wù)網(wǎng)關(guān)接口(WSGI)的逐漸普及,各個(gè)web框架直接的公共部分(WSGI中間件)也越來越多,有很多框架也產(chǎn)生相互合并的意圖。分久必合,我相信統(tǒng)一是web框架之間競(jìng)爭(zhēng)的最后結(jié)果。在今天webgame“肆虐”的風(fēng)潮里,Python同樣高調(diào)登場(chǎng)。5分鐘版的開心農(nóng)場(chǎng)就是采用Python開發(fā)的。Python是眾多webgame工作室的首選游戲邏輯語言。
企業(yè)應(yīng)用
Python上的企業(yè)應(yīng)用代表,著名的包括開源的ERP軟件OpenERP。OpenERP從后臺(tái)到客戶端,到web端,全部是采用Python開發(fā)完成。
另外一個(gè)就是Plone。Plone是一個(gè)世界級(jí)的開源內(nèi)容管理軟件,被包括美國中情局在內(nèi)的全世界眾多政府大機(jī)構(gòu)、軍方和大企業(yè)使用。Plone基于Python上的一個(gè)重量級(jí)web應(yīng)用框架Zope開發(fā)。
云時(shí)代的新生
在如今云計(jì)算風(fēng)生水起的時(shí)代,Python被谷歌云開發(fā)平臺(tái)Goolge App Engine奉為首選的云計(jì)算語言。而國內(nèi)的易度云辦公平臺(tái),從內(nèi)部實(shí)現(xiàn)到第三方的PaaS開發(fā),都采用了Python語言。當(dāng)前在云存儲(chǔ)方面的新星DropBox,更是從后臺(tái)到客戶端,全面采用了Python語言。如果云代表了軟件業(yè)未來之一,那Python這一次真正開始走在最前面。
說說缺點(diǎn)
沒有哪個(gè)人是完美的,Python也一樣。Python的一個(gè)大問題是,對(duì)多處理器支持不好。也就是一個(gè)Python進(jìn)程,目前只能在一個(gè)處理器上運(yùn)行。這對(duì)于日益普及的多處理器架構(gòu),不能說是一個(gè)缺憾。當(dāng)然對(duì)于web應(yīng)用,采用多進(jìn)程負(fù)載均衡便能解決這一問題。目前Python也正在提供一個(gè)支持多處理器的版本,但是還沒有達(dá)到穩(wěn)定的版本,相應(yīng)不久的未來這個(gè)問題可以得到解決。
另外一個(gè)問題是解釋型語言的通病,就是性能問題。這個(gè)問題,Python社區(qū)有個(gè)pypy項(xiàng)目,將Python的解釋型執(zhí)行,轉(zhuǎn)換為編譯執(zhí)行,大大提升效率。只是這個(gè)pypy還沒有到正式版本。谷歌內(nèi)部也啟動(dòng)了一個(gè)項(xiàng)目,號(hào)稱目標(biāo)是將Python的執(zhí)行效率提升5倍,讓我們拭目以待。
尾聲
我們是職業(yè)程序員,我們需要經(jīng)久耐用、多快好省、功力強(qiáng)大的語言。本人選擇了Python,你呢?
原文地址:http://www.douban.com/group/topic/13347288/
【編輯推薦】





















