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