
內(nèi)容來源:2017年5月13日,ThoughtWorks高級咨詢師佟達在“2017技術(shù)雷達峰會|洞察構(gòu)建未來的技術(shù)和趨勢”進行《無處不在的Python》演講分享。IT 大咖說(WeChat_ID:itdakashuo)作為獨家視頻合作方,經(jīng)主辦方和講者審閱授權(quán)發(fā)布。
閱讀字數(shù):1699?| 6分鐘閱讀
觀看嘉賓完整演講視頻及PPT,請點擊:http://t.cn/EUwp8g5
摘要
Python已經(jīng)有將近30年的歷史,在過去30年中,Python在運維工程師和數(shù)據(jù)科學家群體中受到廣泛歡迎,然而卻極少有企業(yè)將Python作為生產(chǎn)環(huán)境的首選語言。在最近幾年,這一情況有所改變。隨著云計算、大數(shù)據(jù)以及人工智能技術(shù)的快速發(fā)展,Python及其開發(fā)生態(tài)環(huán)境正在受到越來越多的關(guān)注,技術(shù)雷達上和Python相關(guān)的技術(shù)也越來越多。為什么Python成為了“被選中的語言”?這一趨勢將給企業(yè)IT帶來怎樣的變化?
不務(wù)正業(yè)的Python
說起“不務(wù)正業(yè)”讓我想起了一個大人物。他在十幾歲的時候進入了印刷廠工作,當一名印刷工。之后成立了自己的印刷公司,出版報紙發(fā)表文章。當所有人都以為他會把余生都投入到印刷行業(yè)的時候,他卻去成立了北美第一家由志愿者組成的消防隊。再后來他又成立了北美的第一家醫(yī)院。又有一天他心血來潮地在雷雨天里放風箏,由此發(fā)明了避雷針,為氣象事業(yè)做出了偉大貢獻。他還作為美國駐歐洲的外交官,在北美獨立的過程中起到了巨大作用。他參與起草了《獨立宣言》,現(xiàn)在他的頭像被印在了百元美鈔上面。
這個人的一生都是在“不務(wù)正業(yè)”之中,他就是美國最偉大人物第五位——本杰明·富蘭克林。
技術(shù)路線各大編程語言排行榜前五位——系統(tǒng)管理工具開發(fā)語言Python
系統(tǒng)管理工具
在Python剛剛出現(xiàn)的時候,所有人在開發(fā)各種各樣的操作系統(tǒng),而Python選擇了另一條路。
Python是以給程序員們提供更好的管理系統(tǒng)的工具而發(fā)明出來的?,F(xiàn)在Python內(nèi)置于大部分主流操作系統(tǒng)之內(nèi),執(zhí)行效率遠高于shell,開發(fā)效率遠高于C。
軟件開發(fā)工具
從系統(tǒng)管理工具,到軟件開發(fā)工具,Python一直在幫助工程師提升效率。
在軟件開發(fā)工具領(lǐng)域,無論是構(gòu)建工具還是版本控制,或者是代碼評審,Python都屬于是先驅(qū)。
Python不僅在早期介入到軟件開發(fā)工具領(lǐng)域中,Spinnaker在持續(xù)交付領(lǐng)域也算是新秀,它主要是利用了云技術(shù)來搭建持續(xù)交付流水線。
在Python對于軟件開發(fā)工具這幾個領(lǐng)域里面,它的后來者看起來都比先驅(qū)要出色一些,所以Python自此就在跨界的這條路上越走越遠。
WEB開發(fā)
首先Python嘗試的是WEB開發(fā)。互聯(lián)網(wǎng)時代來臨,各個編程語言都在發(fā)力爭搶WEB開發(fā)的地盤,Python卻顯得心不在焉。
Django這門技術(shù)可以基于Python去開發(fā)一些WEB的網(wǎng)站,還有一些更小巧的比如Flask,Tornado,Pyramid?;赑ython開發(fā)的WEB網(wǎng)站也有不少,比如著名的Youtube,Reddit,Pinterest,Dropbox,Douban。
但是Python這門語言本身和其它語言相比,在WEB開發(fā)上Python的專注度總是不夠,看起來“心不在焉”。
科學計算
曾經(jīng)的科學計算領(lǐng)域,工具有Matlab, Maple, Mathematica,編程語言有Fortran, Pascal。
機器學習流行起來后里面關(guān)聯(lián)的一個技術(shù)就是Scikit-learn,是結(jié)合了NumPy, SymPy, SciPy,還有可視化技術(shù)Matplotlib, Jupyter Notebook等等結(jié)合起來的工具,在機器學習領(lǐng)域有非常大的用戶群?,F(xiàn)在在生產(chǎn)環(huán)境當中,在工程領(lǐng)域也在逐漸開始流行起來。
云計算
在2008年之后,我們進入了云計算的時代。得益于在系統(tǒng)管理工具方方面面的積累,以及Python語?言強大的系統(tǒng)集成能力,讓Python在云計算領(lǐng)域大放異彩。OpenStack里面最主要的開發(fā)語言就是Python。
不僅是私有云領(lǐng)域,在公有云領(lǐng)域,像aws-cli, gcloud等等這些公有云希望提供給開發(fā)者SDK,或者以命令行方式提供的時候,首選依然是Python。
大數(shù)據(jù)
盡管Python并不是大數(shù)據(jù)工具軟件的主要開發(fā)語言,但卻是每一個大數(shù)據(jù)工具不可忽視的力量。
Pandas是Python作為主要開發(fā)語言的一個數(shù)據(jù)分析工具。在Spark剛剛發(fā)布的時候,也帶了PySpark這樣一個接口。雖然底層實踐不一定是以Python為主,但是上層接口一定會有Python的存在。
除了主要的數(shù)據(jù)分析工具以外,還有流程編排。Airflow可以很好地讓我們的工程師可視化地去編輯,讓我們更清楚地知道數(shù)據(jù)是怎樣一步一步處理的。這個工具的可用性比較高,可視化效果也更為酷炫。
人工智能
在人工智能,尤其是深度學習領(lǐng)域,Python占據(jù)主導(dǎo)地位。盡管像OpenCV還有sox這樣的工具,它本身底層不一定是以Python來實現(xiàn)的,但真正運用最廣泛的地方卻是以Python接口提供出來的這部分內(nèi)容。包括我們在做圖像識別的時候,即使用的是OpenCV,但實際上大家用的都是Python的OpenCV庫。
早期的自然語言處理都是基于斯坦福的NLTK,而在最新一期的《技術(shù)雷達》中我們發(fā)現(xiàn)了SpaCy。它是一個希望能用現(xiàn)代化的自然語言處理技術(shù),同時又能支持生產(chǎn)環(huán)境的這樣一個工具。它的出生就是奔著希望能夠讓自然語言處理在生產(chǎn)環(huán)境領(lǐng)域中使用的。
人工智能火起來的一個原因是因為深度學習火了,深度學習被證明了特別有效。尤其是在數(shù)據(jù)量特別大的情況下我們?nèi)グl(fā)現(xiàn)里面一些特征的時候要比人工地尋找特征更有效。在深度學習領(lǐng)域幾乎沒有其它語言可以和Python相提并論。比如著名的Caffe也是在《技術(shù)雷達》里出現(xiàn)了的。TensorFlow是谷歌開源的深度學習框架。Keras是基于Theano和TensorFlow可以做頂層計算圖的編排、深度神經(jīng)網(wǎng)絡(luò)設(shè)計的一個語言,也是基于Python來做的。
為什么是Python
業(yè)務(wù)沒有線上與線下之分,只有已經(jīng)數(shù)字化和即將數(shù)字化之分。
模糊的行業(yè)界限
比如做視頻的網(wǎng)站開始做汽車,做手機的公司開始做空氣凈化器,自行車可以連上互聯(lián)網(wǎng)?,F(xiàn)在這些都和軟件、IT、互聯(lián)網(wǎng)相結(jié)合了。
更快的交付速度
DevOps運動的興起讓開發(fā)、測試、運維緊密的合作。平臺的興起讓工程師可以專注在業(yè)務(wù)上。新一輪人工智能浪潮讓軟件有可能自我學習,自我進化。
技術(shù)領(lǐng)域細分
每一個技術(shù)都可能是一個非常深的領(lǐng)域。對于一個開發(fā)人員我們可能需要了解DevOps、云計算,需要學人工智能、IOT、大數(shù)據(jù)、Paas、Web開發(fā)等等??赡芤粋€業(yè)務(wù)需要使用以上所有的技術(shù)。對于開發(fā)人員來說學習每一項的成本都是非常高的,而對于決策層來說也無法接受讓開發(fā)團隊一切從零開始。
人生苦短,我用Python
幸好我們有Python。因為Python過去多年在不同的領(lǐng)域中“不務(wù)正業(yè)”的表現(xiàn)讓Python成為了一個當我們嘗試在各個領(lǐng)域都要做一點事情時的最佳選擇。這就是Python在現(xiàn)在如此流