什么是Python編程語(yǔ)言?
編程語(yǔ)言領(lǐng)域Python成為了一個(gè)耀眼的新星,Python崛起的原因與其本身特點(diǎn)有關(guān),也許它是更加符合開(kāi)發(fā)者的習(xí)慣和口味?,F(xiàn)在有一種聲音說(shuō)Python將會(huì)超越Java成全球最流行編程語(yǔ)言,你又是怎么認(rèn)為的呢?
這些年,編程語(yǔ)言的發(fā)展進(jìn)程很快,在商業(yè)公司、開(kāi)源社區(qū)兩股力量的共同推動(dòng)下,涌現(xiàn)出諸如Go、Swift這類后起之秀,其中最為耀眼的是Python。
知名開(kāi)發(fā)者網(wǎng)站Stackoverflow撰文指出,從2012至2017年編程語(yǔ)言Python成為開(kāi)發(fā)者使用增長(zhǎng)最快的主流編程語(yǔ)言,其中2017年增長(zhǎng)率達(dá)到了27%,一舉超過(guò)包括Java、C#、PHP、C++在內(nèi)的所有同類。另?yè)?jù)高盛集團(tuán)發(fā)布的一份《2017調(diào)查報(bào)告》針對(duì)全球數(shù)千名高校實(shí)習(xí)生的調(diào)查中,當(dāng)問(wèn)到你認(rèn)為“哪個(gè)語(yǔ)言在未來(lái)會(huì)更重要”時(shí),被調(diào)查的80、90后優(yōu)秀年輕開(kāi)發(fā)者中72%選了Python。
語(yǔ)言的使用者是一直被譽(yù)為業(yè)界上游“源頭活水”的開(kāi)發(fā)者,其重要程度從各大科技巨頭公司每年例行召開(kāi)的開(kāi)發(fā)者大會(huì)上可見(jiàn)一斑。對(duì)于開(kāi)發(fā)者群體而言最重要的事物有兩個(gè),一是平臺(tái),二就是編程語(yǔ)言。編程語(yǔ)言Python為什么能夠獲得全球眾多開(kāi)發(fā)者的青睞?它的崛起給開(kāi)發(fā)者世界帶來(lái)了什么變化?
成功的一半源于好的開(kāi)始
在主流編程語(yǔ)言當(dāng)中,Python并不是一個(gè)“新人”,它的歷史超過(guò)25年,但真正風(fēng)靡之時(shí)卻是最近幾年,所以“后起之秀”的稱呼實(shí)至名歸。Python的起源是1989年,其發(fā)明者荷蘭人程序員吉多•范羅蘇姆受ABC語(yǔ)言的啟發(fā)計(jì)劃開(kāi)發(fā)一個(gè)新的腳本解釋器,由此邁出了Python項(xiàng)目的起點(diǎn)。
Python能夠真正風(fēng)靡的原因之一是有一個(gè)好的起點(diǎn)。它的起步很穩(wěn),避開(kāi)了版權(quán)糾紛,且搭上了開(kāi)源運(yùn)動(dòng)的順風(fēng)車。在那個(gè)年代,商業(yè)版權(quán)一直是熱門事件,業(yè)界史上第一個(gè)軟件領(lǐng)域重大官司AT&T和伯克利BSD的Unix版權(quán)案打得天昏地暗,該案的結(jié)局直接促成了BSD的開(kāi)源分支、Linux的誕生以及震驚世界的自由軟件運(yùn)動(dòng)。
Python最初的版權(quán)歸屬是CWI(阿姆斯特丹的國(guó)家數(shù)學(xué)與計(jì)算機(jī)科研學(xué)會(huì)),這與吉多早年在該機(jī)構(gòu)工作有關(guān),后來(lái)吉多受雇于CNRI(維吉尼亞州的國(guó)家創(chuàng)新研究公司),Python權(quán)屬轉(zhuǎn)移至此。那時(shí)自由軟件運(yùn)動(dòng)已經(jīng)開(kāi)始,在CNRI期間發(fā)布的1.6至2.1多個(gè)版本的Python許可證是一種與GPL并不兼容且類似于BSD的開(kāi)源許可,CNRI因受到自由軟件基金會(huì)的壓力釋放了Python的原許可證,吉多由此掌握了主導(dǎo)權(quán)并起草了新的許可證。他改變了原許可證與GPL的不兼容,此舉獲得了自由軟件基金會(huì)頒發(fā)的自由軟件進(jìn)步獎(jiǎng)。再后來(lái)吉多和他的團(tuán)隊(duì)成立了Python軟件基金會(huì),將版權(quán)與許可證置于其下。
創(chuàng)始人吉多•范羅蘇姆的心思縝密與靈活處事為Python最初的發(fā)展?fàn)I造了良好的環(huán)境,包括幾次權(quán)屬的轉(zhuǎn)移、起草新的許可證、機(jī)智地與自由軟件陣營(yíng)斡旋,最后安全融入開(kāi)源的大潮。這一切為Python此后十多年里逐漸成長(zhǎng)為主流編程語(yǔ)言贏得了契機(jī)。
“人生苦短,我用Python”并非一句戲言
Python崛起的原因之二與其本身特點(diǎn)有關(guān),或者說(shuō),其長(zhǎng)期維護(hù)演進(jìn)形成的獨(dú)特風(fēng)格迎合了大多數(shù)開(kāi)發(fā)者的口味。在開(kāi)發(fā)者社群流行著一句玩笑“人生苦短,我用Python”(原話為” Life is short, you need Python”),這句看似戲言的話實(shí)際上恰恰反映了Python的語(yǔ)言特性與其在開(kāi)發(fā)者心里的價(jià)值分量。
除了包涵大多數(shù)主流編程語(yǔ)言的優(yōu)點(diǎn)(面向?qū)ο蟆⒄Z(yǔ)法豐富)之外,Python的直觀特點(diǎn)是簡(jiǎn)明優(yōu)雅、易于開(kāi)發(fā),用盡量少的代碼完成更多工作。盡管Python是一種解釋型語(yǔ)言,與傳統(tǒng)的編譯型語(yǔ)言相比降低了機(jī)器執(zhí)行效率,但是處理器的處理速率與環(huán)境速率(比如網(wǎng)絡(luò)環(huán)境)的差異在大多數(shù)場(chǎng)景中完全抵消了上述代價(jià);犧牲部分運(yùn)行效率帶來(lái)的好處則是提升了開(kāi)發(fā)效率,在跨平臺(tái)的時(shí)候無(wú)需移植和重新編譯。 所以Python的顯著優(yōu)點(diǎn)在于速成,對(duì)于時(shí)間短、變化快的需求而言尤為勝任。
Python最強(qiáng)大的地方體現(xiàn)在它的兩個(gè)外號(hào)上,一個(gè)叫“內(nèi)置電池”,另一個(gè)是“膠水語(yǔ)言”。前者的意思是,Python官方本身提供了非常完善的標(biāo)準(zhǔn)代碼庫(kù),包括針對(duì)網(wǎng)絡(luò)編程、輸入輸出、文件系統(tǒng)、圖形處理、數(shù)據(jù)庫(kù)、文本處理等等。代碼庫(kù)相當(dāng)于已經(jīng)編寫完成打包供開(kāi)發(fā)者使用的代碼集合,程序員只需通過(guò)加載、調(diào)用等操作手段即可實(shí)現(xiàn)對(duì)庫(kù)中函數(shù)、功能的利用,從而省去了自己編寫大量代碼的過(guò)程,讓編程工作看起來(lái)更像是在“搭積木”。除了內(nèi)置庫(kù),開(kāi)源社區(qū)和獨(dú)立開(kāi)發(fā)者長(zhǎng)期為Python貢獻(xiàn)了豐富大量的第三方庫(kù),其數(shù)量遠(yuǎn)超其他主流編程語(yǔ)言,可見(jiàn)Python的語(yǔ)言生態(tài)已然相當(dāng)壯大。
“膠水語(yǔ)言”是Python的另一個(gè)亮點(diǎn)。Python本身被設(shè)計(jì)成具有可擴(kuò)展性,它提供了豐富的API和工具,以便開(kāi)發(fā)者能夠輕松使用包括C、C++等主流編程語(yǔ)言編寫的模塊來(lái)擴(kuò)充程序。就像使用膠水一樣把用其他編程語(yǔ)言編寫的模塊粘合過(guò)來(lái),讓整個(gè)程序同時(shí)兼?zhèn)淦渌Z(yǔ)言的優(yōu)點(diǎn),起到了黏合劑的作用。正是這種多面手的角色讓Python近幾年在開(kāi)發(fā)者世界中名聲鵲起,因?yàn)榛ヂ?lián)網(wǎng)與移動(dòng)互聯(lián)時(shí)代的需求量急速倍增,大量開(kāi)發(fā)者亟需一種極速、敏捷的工具來(lái)助其處理與日俱增的工作,Python發(fā)展至今的形態(tài)正好滿足了他們的愿望。
Python的影響
從兩個(gè)著名編程語(yǔ)言排行網(wǎng)站TIOBE和PYPL的最新數(shù)據(jù)來(lái)看,Java與Python的排名分別位于第1和第5、第1和第2。關(guān)于兩個(gè)網(wǎng)站的排行機(jī)制我們不得而知,但從開(kāi)發(fā)者社群的相關(guān)評(píng)論中可以認(rèn)為PYPL更能反映編程語(yǔ)言在開(kāi)發(fā)者群體中的流行程度。不論如何,Python的崛起已是毋庸置疑的事實(shí),而它上面的前輩則是常年占據(jù)榜單第1,互聯(lián)網(wǎng)與移動(dòng)時(shí)代的嬌子Java。從Stackoverflow和多個(gè)開(kāi)源社區(qū)公開(kāi)的數(shù)據(jù)來(lái)看,Python的用戶數(shù)量增長(zhǎng)很快,在今后兩年超過(guò)Java成為全球最流行編程語(yǔ)言的可能性非常之高。
值得一提的是,那些頗有影響力的主流編程語(yǔ)言,其背后一般都站著科技巨頭公司,比如Java之于甲骨文、C#之于微軟、ObjecTIve-C之于蘋果。Java之所以常年第一是因?yàn)槠渫瑫r(shí)還幾乎是安卓平臺(tái)的御用語(yǔ)言,以及受益于Sun時(shí)代影響力的眷顧。Python雖曾一度為谷歌使用,但Go語(yǔ)言問(wèn)世后隨著時(shí)間推移或?qū)⒂隼洹R簿褪钦f(shuō),Python成了沒(méi)有巨頭站隊(duì)的主流編程語(yǔ)言,那么它的影響力是如何維系的?為什么還能夠保持高速成長(zhǎng)并形成趕超Java之勢(shì)?
我們認(rèn)為這與Python多年來(lái)實(shí)現(xiàn)較好案例與范用性有關(guān)。使用Python開(kāi)發(fā)的知名案例中,包括豆瓣、果殼、知乎、Dropbox、EVE(星戰(zhàn)前夜)每一個(gè)都是重量級(jí)產(chǎn)品,這說(shuō)明Python語(yǔ)言本身的發(fā)展已日臻完善,有著極高的穩(wěn)定與可靠性保證。第二是Python的應(yīng)用范圍,除了日常工具和腳本之外,還適用于Web程序、GUI開(kāi)發(fā)、操作系統(tǒng)中間件、服務(wù)端運(yùn)維等等,這些年P(guān)ython的一些第三方庫(kù)在機(jī)器學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)方面活躍非凡,這也為語(yǔ)言本身的推廣和流行加分不少。
最后需要指出的是,Python編程思想包含強(qiáng)烈的黑箱思維,這意味著開(kāi)發(fā)者將愈加重視模塊化和流水線式的編程工作,事實(shí)上這也是未來(lái)主流編程語(yǔ)言的發(fā)展趨向。隨著計(jì)算機(jī)語(yǔ)言的演化和開(kāi)發(fā)工具集成功能日趨強(qiáng)大,未來(lái)的編程工作將大幅簡(jiǎn)化。從某種角度看,Python更像是已經(jīng)“邁入未來(lái)”的編程語(yǔ)言,其對(duì)開(kāi)發(fā)者群體結(jié)構(gòu)變化,以及新進(jìn)開(kāi)發(fā)者數(shù)量的激增,這些影響都將是深遠(yuǎn)的。