search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

企業AI架構師佟達:無處不在的Python

5 月 13 日,由 ThoughtWorks 主辦的 2017 技術雷法峰會在北京召開。

正如官方宣傳提到的:「ThoughtWorks 技術雷達」 並非一個客觀的行業分析或者報告,也無意成為一份權威的官方文檔。由各行各業諸多頂尖技術專家組成的 ThoughtWorks 全球技術委員會(TAB)每年定期討論全球熱門技術的發展現狀,並以雷達形式對各類技術的成熟度進行評估並給出建議,為從程序員到 CIO/CTO 的利益相關者提供參考。而這也是大會名稱之所以叫 「雷達」 的意義所在。

13 日上午,ThoughtWorks 高級諮詢師,區數據團隊資深技術專家佟達,在大會上發表了題為《無處不在的Python》的主題演講。

Python 已經有將近 30 年的歷史,在過去 30 年中,Python 在運維工程師和數據科學家群體中受到廣泛歡迎,然而卻極少有企業將 Python 作為生產環境的首選語言。在最近幾年,這一情況有所改變。隨著雲計算、大數據以及人工智慧技術的快速發展,Python 及其開發生態環境正在受到越來越多的關注,技術雷達上和 Python 相關的技術也越來越多。為什麼 Python 成為了 「被選中的語言」?這一趨勢將給企業 IT 帶來怎樣的變化?

以下為演講全文(雷鋒網做了不改變原意的修改):

剛才我們的幾位同事已經給大家介紹了我們在過去一段時間看到的一些技術趨勢,這些趨勢怎麼樣落地到實際呢?今天我們給大家看一看用什麼樣的語言比較合適。所以我的主題是無所不在的 Python。

我今天不會講怎麼樣用 Python 編程序,我今天主要給大家講的是 Python 的無所不在。在我們最新的一期技術雷達上面關於無所不在的 Python 是這麼說的:Python,這門語言總是不斷的出現在有趣的地方。這句話讓我想起來我上學的時候,我的注意力不是很集中,好奇心特彆強,到處什麼事情都想參與一下。老師經常誇我,怎麼哪兒都有你?天天不務正業!今天我發現不務正業的說法可以有這樣一個說法,就是總是出現在有趣的地方。

我們看一下 Python 這門語言到底是怎麼不務正業的?說起不務正業讓我想起來這麼一個大人物,他十幾歲的時候先進入了一個印刷廠工作作為印刷工,後來成立了自己的印刷公司,再後來發行了報紙,他在上面開始發表文章。當所有人都以為這個人要他要投身在,把自己的餘生都投身在印刷行業的時候,他去幹嘛了呢?他去成立了北美第一個志願者組成的消防隊。後來他又成立了北美的第一家醫院。這個時候他不務正業停不下來了,有一天他到雷雨天放風箏,然後發明了避雷針,對我們的氣象事業做出了貢獻。後來他成為美國駐歐洲的代表,作為一個非常出色的外交官,在北美獨立的過程中又起到了非常大的作用。後來他起草了《獨立宣言》,現在他的頭像印在美鈔上。這個人一生都在不務正業中,這個人在美國最偉大人物排名第五,他就是富蘭克林。在他墓碑上刻的是,他說自己是一個印刷工。然後他在印刷工外做了很多不務正業的事情。

Python 在各大排行榜也能排在前五位,Python 之前是作為系統管理工具的開發語言出現的。在上世紀八十年代末,九十年代初的時候 Python 剛剛發明的那個年代,實際上是處在什麼時候呢?各種科學家,工程師都在嘗試著不同的操作系統,Python 認為要給程序員們提供一個更好的管理系統的工具,所以為了這樣一個目標而發明了 Python。過了二十多年我們發現,可能當年有幾百個操作系統在同步開發,到現在是什麼情況?可能只剩下了幾十個操作系統還活著,而 Python 內置在大部分這些主流的操作系統之內的。為什麼 Python 對系統管理工具是非常合適的語言呢?因為它的執行效率遠高於 shell,而且開發效率遠高於 C。現在我們聽到比較著名的操作系統上面都是基於 Python 開發的。當我們發現我們管理任務越來越複雜的時候,我們系統的配置越來越複雜的時候,我們又有了配置管理的概念。而在配置管理領域 Python 也佔據了非常多的份額,比如說曾經在技術雷達上也出現過一些系統管理工具里非常著名的技術。當把這些基礎設施變成代碼管理的時候,我們發現我們其實還希望對這些代碼,像我們寫業務代碼一樣做單元測試,做自動化測試。在最新的一期技術雷達里,我們持續關注著這樣的趨勢,基於前面我們說的系統管理工具技術,像一些專門對基礎設施即代碼的測試工具,比如 molecule、testinfra 也越來越流行。

除了在系統管理工具領域, Python 很自然的就平滑地過渡到了軟體開發工具領域。從系統管理工具到軟體開發領域 Python 一直都在幫助著程序員,幫助著工程師提高效率。在軟體開發工具無論是版本控制還是版本評審,Python 進入的都是比較早的,應該說是比較先驅的一波。Python 不僅在早期進入了軟體開發工具領域,在新一期技術雷達里也出現了,一種老樹開新花的感覺,即使在持續交付領域也是一枝新秀,Netflix 開源的 spinnaker。它主要利用了雲技術對一些應用更適合的搭建,它利用了很多雲平台以及容器技術,可以和我們現有的架構非常好的融合在一起。

實際上,在軟體開發工具領域裡的後來者們可能看起來都比先驅們——比如 Python ——更出色一些,或者接受度更廣泛一些。這種情況也給了 Python 去做其他事情的理由,Python 至此就走上了跨界這條路,而且越走越遠。

Python 首先嘗試的領域是WEB開發。我們說 Python 做WEB開發,大家也都聽說過,但是WEB開發並不是 Python 的主要標籤。比如曾經在我們技術雷達上出現的一門技術,它可以基於 Python 開發一些WEB的網站,還有不少更小巧的、基於Python 的網站,比如 Youtube 等等網站。但是 Python 語言本身和其他語言相比,尤其就是和互聯網泡沫同一年出生的語言,Python 在外部開發上的專註度看起來總是心不在焉。

在這個時候 Python 社區把注意力都放在哪兒了呢?都放到了科學計算領域。那個時候科學計算領域已經有了幾個比較著名的軟體,那麼 Python 憑什麼在這個領域裡佔有一席之地呢?實際上在 1995 年,也就是大家都開始研究互聯網的時候,Python 的作者就參加了一個由一些科學家組成的小組,唯一目標就是使 Python 在科學計算領域廣泛使用起來。為了使 Python 符合科學家的直覺並讓他們使用,Python 的作者甚至改了一些Python 本身的語法去討好科學家,讓科學家能更平滑使用 Python 做一些科學計算。所以到了今天我們發現 Python 在科學計算領域已經是一個非常重要的分支。就在Python 科學計算小組成立的同一年有一個軟體庫發布出來,就是 Maple。

在 2007、 2008 年這個時期,我們進入了雲計算時代,基於過去一段時間 Python 在系統管理工具的積累,以及其本身具備了非常好的系統集成能力,Python 在雲計算領域可以說大放異彩。最著名的就是大家都應該都聽說過的 Openstack,它裡面最著名的開發語言就是 Python。不僅在私有雲領域,在公有雲領域,包括 AWS,包括 Google 雲,當這些公有雲提供出 SDK 的時候,它們首選的技術路線依然是 Python。現在在阿帕奇基金會下面有一個項目,它是用來評各個不同雲之間異構性的,也是基於 Python 做的。在雲計算後期興起的容器技術也是基於 Python 做的。

當雲計算技術發展起來后,發現還需要大數據技術。其實Python 並不是一門開發語言,但是因為 Python 很早就在科學計算領域佔據了一席之地,所以當我們希望能夠讓數據分析師使用大數據工具的時候,Python 變成了一個不可忽視的因素。所以很多開源工具或者是大數據主要使用的工具都會提供一個 Python 的介面給數據分析師使用。在 Spark 剛剛發布的時候,它也帶了一個 Python 介面,這都是曾經在技術雷達出現的技術。雖然底層實現不以 Python 為主,但是上層的介面一定會有 Python 存在。除了本身主要的數據分析工具以外,我們還有什麼呢?比如 Data Pipeline,最新一期雷達里介紹的 Airflow可以讓工程師將 Data Pipeline 更好的可視化出來,可以知道數據怎麼樣一步一步處理的。這個工具相比於之前的 Hadoop 的生態環境它的可視化效果更酷炫一些,可用性更高。

最近這兩年最火的詞就是人工智慧。Python 過去多年積累在人工智慧到來的時候出現了大爆發。在傳統概念中,我們認為人工智慧主要談到的是感知層的技術,比如圖像處理、自然語言識別等等這些技術。儘管像 OpenCV 等工具,底層工具不一定以 Python 實現的,但是它真正用到最廣泛的地方卻是以 Python 介面提供出來的這部分內容。在做圖像識別的時候,儘管用的是 OpenCV,但是用的都是 Python OpenCV庫。最近兩年人工智慧火起來,非常重要的一個原因是深度學習火了,深度學習被證明非常有效,尤其在數據量特別大的情況下去洞見一些特徵的時候,比人工尋找更有效一些。在深度學習領域幾乎沒有任何其他語言可以跟 Python 相提並論的,比如 Caffe,Theano,TesnorFlow,Keras 這些非常流行的深度學習框架,都是以 Python 為主要開發語言。還有一個有趣的現象,就是 FB 深度學習的工具 Torch,最早它的前端工具是 Lua,在2017 年發布了一個新的版本叫做 PyTorch,它發現如果不提供 Python 介面的話,它好像沒有辦法流行起來。這再次證明了在深度學習領域目前 Python 是處於非常主導的地位。

你以為就是這些了?並不是。

影視製作里大家知道哪一門語言是最流行的嗎?其實也是 Python。這方面的工具也許大家不一定熟悉,但這些工具都是在做電影行業里能夠經常用到的。這裡的每一個工具里都提供了 Python 作為嵌入式腳本的介面。實際上,在好萊塢做很多大型的特效電影的時候,裡面很重要的就是用 Python 編寫特效腳本,然後再用它的渲染引擎去渲染。除此之外,還有演算法交易量化投資領域,Python都是最流行的語言,桌面開發 Python 也能做。嵌入式編程也有選擇 Python 作為編程介面,比如樹莓派。在 IoT 領域,以前大家不會想到 Python 在 IoT 作為主要語言出現的,但技術雷達上出現的 PlatformIO 和 masquitto,都是基於 Python 的。借用現在互聯網流行流行的一句話,Python 你這麼厲害,你咋不上天呢?事實上 NASA 確實是在用Python,做地面的數據模擬和數據處理等等工具。用 Python 確實能讓你上天

這裡我們再回顧一下前面提到的各個領域,Python 在早期是以系統管理工具作為目標來出現的。後來到了開發工具,以及 Web 開發等等,Python 都起到了至關重要的作用。還有什麼呢?還有雲計算,大數據,科學計算,人工智慧,這些技術的發展讓 Python 更加廣泛的被認識,被使用。還有一些我們可能都不是那麼了解的領域,以及今天可能還沒有談到的領域,等等,Python 都會有一定的作用在裡面。

為什麼選擇 Python?這要從現在行業的變化說起,前兩年當我們談到O2O 的時候我們也許還覺得是一個新潮的詞,而今年談 O2O 的時候發現,現在的業務已經沒有線上線下之分,只有已經數字化和即將數字化的業務。這帶來的是什麼變化呢?是我們業務上的界限,行業的界限越來越模糊。比如說有的視頻網站,開始去做汽車了;有的做手機的公司也開始做空氣凈化器了;腳踏車現在都能連互聯網。我們發現曾經難以想象去數字化的這些東西都開始跟軟體、 IT、互聯網結合。

在座的各位可能都是公司的決策層,各位領導在拍腦袋想要做一些創新業務的時候,它對開發團隊有什麼要求呢?我們會需要更快的交付速度。因為我們的業務有更快的變化,所以我要有更快的交付速度去嘗試,去驗證我們的想法是否正確。所以有了 DevOps 的興起,可以讓開發、測試、運維緊密合作。還有平台的興起讓工程師可以專註在業務上。還有新一輪人工智慧浪潮讓軟體有可能自我學習,自我進化。當大家在給開發團隊提這些需求的時候,我們有更多的業務並且需要更快的交付速度。當把這些訴求提給自己的交付團隊的時候,我們會發現交付團隊非常頭疼。現在的技術已經細分到每一個技術可能都會非常大且非常深入,我們需要了解 DevOps,需要知道雲計算等等,可能一個業務會把所有的技術全都利用起來,全都串起來,全都使用。對於工程師來說,每一項學習的時候,這個成本是非常高的。而對於決策層來說,也沒有辦法接受開發團隊的所有東西都是從零開始。但是幸好有了 Python,我們發現 Python 在各個領域都可以做一點事情。這就是 Python 現在變得如此流行的一個很重要的原因。

對於在座的企業家來說該怎麼做呢,對開發團隊應該有什麼樣的改變呢?在這裡我把下一代的企業分成兩個主要的方向:一類是以企業和其他開發者為用戶,深入做垂直領域,將細分領域的方向作為主營業務的公司。這類公司可能是做雲平台的公司,做 PaaS 的公司,做運維的公司,做監控的公司,還有我給保險行業提供報價演算法的公司。這些都是我們所謂的去專註在一些細分領域的公司。對於這樣的公司,它們面臨的挑戰就是如何讓用戶更願意使用自己的產品。還有一類是直接面向最終消費者,我們希望能夠讓消費者有更統一的體驗。現在任何一家互聯網公司都希望能夠把對於消費者的各個點上的服務穿成線,貫穿消費者所有的體驗以至於所有生活中的方方面面。

還有一些大麥克公司,比如 Google 和微軟,可能兩方面都提供,但是對於規模不那麼大的中小型公司,這兩個可能是二選一的一個選擇。而對於這兩個企業 Python 帶來的是什麼呢?對於面向企業和開發者的來說,我建議大家給自己的產品加上 Python 的介面,因為 Python 本身能跟其他行業的東西很容易集成在一起,也是為我們很多的用戶所喜歡的。從用戶體驗角度,從開發者角度來講,Python 是更好的語言,也是更好的介面語言,值得我們以 Python 作為介面提供出去。另一類,對於消費者提供跨界服務的公司來說,可以考慮用 Python 集成各種各樣的服務,這樣能夠降低成本,同時也能夠減輕自己開發團隊的壓力,讓開發團隊能夠減少一些學習成本。

最後要提一件事,當我們考慮給自己產品加上 Python 介面或者考慮用 Python 集成各種各樣服務的時候,我要提醒一句話:Python3 現在已經成熟了,希望大家還是使用 Python3,Python3 是 Python 的未來。如果在座有 CTO,請回去跟自己的開發團隊說,新開發的應用,請使用 Python3。



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦