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