內(nèi)容來源:2017年5月13日押桃,ThoughtWorks高級(jí)咨詢師佟達(dá)在“2017技術(shù)雷達(dá)峰會(huì)|洞察構(gòu)建未來的技術(shù)和趨勢”進(jìn)行《無處不在的Python》演講分享嫂冻。IT 大咖說(WeChat_ID:itdakashuo)作為獨(dú)家視頻合作方,經(jīng)主辦方和講者審閱授權(quán)發(fā)布桨仿。
閱讀字?jǐn)?shù):1699?| 6分鐘閱讀
觀看嘉賓完整演講視頻及PPT,請點(diǎn)擊:http://t.cn/EUwp8g5
摘要
Python已經(jīng)有將近30年的歷史钱雷,在過去30年中,Python在運(yùn)維工程師和數(shù)據(jù)科學(xué)家群體中受到廣泛歡迎吹零,然而卻極少有企業(yè)將Python作為生產(chǎn)環(huán)境的首選語言罩抗。在最近幾年,這一情況有所改變灿椅。隨著云計(jì)算澄暮、大數(shù)據(jù)以及人工智能技術(shù)的快速發(fā)展,Python及其開發(fā)生態(tài)環(huán)境正在受到越來越多的關(guān)注阱扬,技術(shù)雷達(dá)上和Python相關(guān)的技術(shù)也越來越多泣懊。為什么Python成為了“被選中的語言”?這一趨勢將給企業(yè)IT帶來怎樣的變化麻惶?
不務(wù)正業(yè)的Python
說起“不務(wù)正業(yè)”讓我想起了一個(gè)大人物馍刮。他在十幾歲的時(shí)候進(jìn)入了印刷廠工作,當(dāng)一名印刷工窃蹋。之后成立了自己的印刷公司卡啰,出版報(bào)紙發(fā)表文章。當(dāng)所有人都以為他會(huì)把余生都投入到印刷行業(yè)的時(shí)候警没,他卻去成立了北美第一家由志愿者組成的消防隊(duì)匈辱。再后來他又成立了北美的第一家醫(yī)院。又有一天他心血來潮地在雷雨天里放風(fēng)箏杀迹,由此發(fā)明了避雷針亡脸,為氣象事業(yè)做出了偉大貢獻(xiàn)。他還作為美國駐歐洲的外交官树酪,在北美獨(dú)立的過程中起到了巨大作用浅碾。他參與起草了《獨(dú)立宣言》,現(xiàn)在他的頭像被印在了百元美鈔上面续语。
這個(gè)人的一生都是在“不務(wù)正業(yè)”之中垂谢,他就是美國最偉大人物第五位——本杰明·富蘭克林。
技術(shù)路線各大編程語言排行榜前五位——系統(tǒng)管理工具開發(fā)語言Python
系統(tǒng)管理工具
在Python剛剛出現(xiàn)的時(shí)候疮茄,所有人在開發(fā)各種各樣的操作系統(tǒng)滥朱,而Python選擇了另一條路根暑。
Python是以給程序員們提供更好的管理系統(tǒng)的工具而發(fā)明出來的。現(xiàn)在Python內(nèi)置于大部分主流操作系統(tǒng)之內(nèi)徙邻,執(zhí)行效率遠(yuǎn)高于shell排嫌,開發(fā)效率遠(yuǎn)高于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ā)工具這幾個(gè)領(lǐng)域里面付翁,它的后來者看起來都比先驅(qū)要出色一些,所以Python自此就在跨界的這條路上越走越遠(yuǎn)砰识。
WEB開發(fā)
首先Python嘗試的是WEB開發(fā)”枥牵互聯(lián)網(wǎng)時(shí)代來臨膨处,各個(gè)編程語言都在發(fā)力爭搶W(xué)EB開發(fā)的地盤灵迫,Python卻顯得心不在焉晦溪。
Django這門技術(shù)可以基于Python去開發(fā)一些WEB的網(wǎng)站三圆,還有一些更小巧的比如Flask避咆,Tornado查库,Pyramid黄琼。基于Python開發(fā)的WEB網(wǎng)站也有不少围苫,比如著名的Youtube剂府,Reddit剃盾,Pinterest,Dropbox衰伯,Douban意鲸。
但是Python這門語言本身和其它語言相比临扮,在WEB開發(fā)上Python的專注度總是不夠,看起來“心不在焉”杆勇。
科學(xué)計(jì)算
曾經(jīng)的科學(xué)計(jì)算領(lǐng)域蚜退,工具有Matlab, Maple, Mathematica,編程語言有Fortran, Pascal钻注。
機(jī)器學(xué)習(xí)流行起來后里面關(guān)聯(lián)的一個(gè)技術(shù)就是Scikit-learn配猫,是結(jié)合了NumPy, SymPy, SciPy,還有可視化技術(shù)Matplotlib, Jupyter Notebook等等結(jié)合起來的工具捆交,在機(jī)器學(xué)習(xí)領(lǐng)域有非常大的用戶群∑纷罚現(xiàn)在在生產(chǎn)環(huán)境當(dāng)中,在工程領(lǐng)域也在逐漸開始流行起來遭京。
云計(jì)算
在2008年之后哪雕,我們進(jìn)入了云計(jì)算的時(shí)代戒财。得益于在系統(tǒng)管理工具方方面面的積累捺弦,以及Python語?言強(qiáng)大的系統(tǒng)集成能力列吼,讓Python在云計(jì)算領(lǐng)域大放異彩寞钥。OpenStack里面最主要的開發(fā)語言就是Python理郑。
不僅是私有云領(lǐng)域,在公有云領(lǐng)域柒爵,像aws-cli, gcloud等等這些公有云希望提供給開發(fā)者SDK赚爵,或者以命令行方式提供的時(shí)候,首選依然是Python冀膝。
大數(shù)據(jù)
盡管Python并不是大數(shù)據(jù)工具軟件的主要開發(fā)語言料身,但卻是每一個(gè)大數(shù)據(jù)工具不可忽視的力量。
Pandas是Python作為主要開發(fā)語言的一個(gè)數(shù)據(jù)分析工具赐纱。在Spark剛剛發(fā)布的時(shí)候采郎,也帶了PySpark這樣一個(gè)接口狂魔。雖然底層實(shí)踐不一定是以Python為主,但是上層接口一定會(huì)有Python的存在整份。
除了主要的數(shù)據(jù)分析工具以外烈评,還有流程編排讲冠。Airflow可以很好地讓我們的工程師可視化地去編輯竿开,讓我們更清楚地知道數(shù)據(jù)是怎樣一步一步處理的玻熙。這個(gè)工具的可用性比較高嗦随,可視化效果也更為酷炫枚尼。
人工智能
在人工智能,尤其是深度學(xué)習(xí)領(lǐng)域崎溃,Python占據(jù)主導(dǎo)地位笨奠。盡管像OpenCV還有sox這樣的工具唤殴,它本身底層不一定是以Python來實(shí)現(xiàn)的朵逝,但真正運(yùn)用最廣泛的地方卻是以Python接口提供出來的這部分內(nèi)容。包括我們在做圖像識(shí)別的時(shí)候晋辆,即使用的是OpenCV瓶佳,但實(shí)際上大家用的都是Python的OpenCV庫霸饲。
早期的自然語言處理都是基于斯坦福的NLTK臂拓,而在最新一期的《技術(shù)雷達(dá)》中我們發(fā)現(xiàn)了SpaCy胶惰。它是一個(gè)希望能用現(xiàn)代化的自然語言處理技術(shù)孵滞,同時(shí)又能支持生產(chǎn)環(huán)境的這樣一個(gè)工具。它的出生就是奔著希望能夠讓自然語言處理在生產(chǎn)環(huán)境領(lǐng)域中使用的轨香。
人工智能火起來的一個(gè)原因是因?yàn)樯疃葘W(xué)習(xí)火了,深度學(xué)習(xí)被證明了特別有效科雳。尤其是在數(shù)據(jù)量特別大的情況下我們?nèi)グl(fā)現(xiàn)里面一些特征的時(shí)候要比人工地尋找特征更有效糟秘。在深度學(xué)習(xí)領(lǐng)域幾乎沒有其它語言可以和Python相提并論。比如著名的Caffe也是在《技術(shù)雷達(dá)》里出現(xiàn)了的散庶。TensorFlow是谷歌開源的深度學(xué)習(xí)框架悲龟。Keras是基于Theano和TensorFlow可以做頂層計(jì)算圖的編排须教、深度神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)的一個(gè)語言,也是基于Python來做的。
為什么是Python
業(yè)務(wù)沒有線上與線下之分轻腺,只有已經(jīng)數(shù)字化和即將數(shù)字化之分乐疆。
模糊的行業(yè)界限
比如做視頻的網(wǎng)站開始做汽車,做手機(jī)的公司開始做空氣凈化器贬养,自行車可以連上互聯(lián)網(wǎng)〖吠粒現(xiàn)在這些都和軟件、IT误算、互聯(lián)網(wǎng)相結(jié)合了耕挨。
更快的交付速度
DevOps運(yùn)動(dòng)的興起讓開發(fā)、測試尉桩、運(yùn)維緊密的合作筒占。平臺(tái)的興起讓工程師可以專注在業(yè)務(wù)上。新一輪人工智能浪潮讓軟件有可能自我學(xué)習(xí)蜘犁,自我進(jìn)化这橙。
技術(shù)領(lǐng)域細(xì)分
每一個(gè)技術(shù)都可能是一個(gè)非常深的領(lǐng)域。對于一個(gè)開發(fā)人員我們可能需要了解DevOps、云計(jì)算漠趁,需要學(xué)人工智能甥绿、IOT、大數(shù)據(jù)、Paas隅茎、Web開發(fā)等等堂竟。可能一個(gè)業(yè)務(wù)需要使用以上所有的技術(shù)税稼。對于開發(fā)人員來說學(xué)習(xí)每一項(xiàng)的成本都是非常高的,而對于決策層來說也無法接受讓開發(fā)團(tuán)隊(duì)一切從零開始曙旭。
人生苦短郊霎,我用Python
幸好我們有Python购对。因?yàn)镻ython過去多年在不同的領(lǐng)域中“不務(wù)正業(yè)”的表現(xiàn)讓Python成為了一個(gè)當(dāng)我們嘗試在各個(gè)領(lǐng)域都要做一點(diǎn)事情時(shí)的最佳選擇。這就是Python在現(xiàn)在如此流