歡迎光臨
每天分享高質量文章

Python的年終總結,我們一起來聊聊

| 小象(微訊號:AIReport)      | 文刀


和大多數程式員同行一樣,我的第一母語也是Java。彼時,覺得Java是這個世界上最漂亮的程式語言,會用Java程式碼寫程式是一件非常美妙的事情。

Java能做的事情實在是太多了,以至於我認為它幾乎無所不能。在這期間,我也觀望過幾種除Java以外的程式語言,如C/C++,Objective-C,C#,NodeJS,Scala等,當然也包括我要說的Python。但大多都淺嘗輒止,不過是增加了一些與同行茶餘飯後的談資。

程式語言就是一種工具,有的人認為多多益善,技多不壓身,有的人則在追求極致的路上越走越遠。

程式人生就是如此,一段乘法,一段加法,一番頓悟後,接著一段減法,一段除法。扔下的是糟粕,留下的皆精華,任誰也帶不走,學不來。

1、Python in AI

在我接觸Python之前,我還是一如既往的沉浸在Java的世界裡無法自拔。然而讓我感到疑惑的是,Java如此強大,為什麼一提到人工智慧,首先想到的程式語言是Python呢?

Python的第一個優點是開源免費,如果單純從人工智慧研究的角度考慮,MATLAB必須當仁不讓。然而,人們不得不考慮其價格因素,由於MATLAB的價格並不親民,大多數人將視線轉向了免費好用,執行也不慢的Python。

Python的第二個優點是簡單易學,對於人工智慧領域的學者(尤其是非計算機專業的)來說,需要一種易於學習的程式語言,將自己費盡千辛萬苦證明成功的公式快速改造成計算機程式,Python無疑是目前最完美的選擇。Python語言本身的設計,可以幫助使用者避開數量不少的陷阱,無需考慮申明變數、釋放記憶體這些非計算專業學者所認為的“瑣事”。

另外,對於人工智慧研究所需的各項基礎能力,Python可謂是一應俱全——數學運算有NumPy和SciPy,圖形繪製有MatplotLib、SeaBorn,結構化資料操作有Pandas,如絲般順滑……

圖1 Python的第三方庫

由於近年來Python在人工智慧領域發出的光芒實在是太耀眼了,以至於人們出現了一種錯覺:人工智慧就是Python的全部。

答案是:不。

Python能做的,遠比人工智慧要多得多!

從最早的爬蟲、Web應用開發,到現在的資料分析、自動化運維以及自動化測試,Python都有非常出色的表現。

2、Python in 2017

Python的發展史是一部典型的勵志大片。自1989年誕生以來,從名不見經傳到躍居程式語言排行榜首位(2017年7月),堪稱屌絲逆襲非人類樣板。

進入21世紀的第一個十年,是Python的平穩發展期,基本穩住了前十名的地位,那時候,NASA已經在大量使用Python程式了。

在21世紀的第二個十年,Python迎來了爆髮式的增長。這一切得益於人工智慧的迅猛發展,更確切的說,是中國人工智慧的迅猛發展。目前國內擁有近200萬名程式員,在全球的佔比高達10%,如果這些人關註的是Python的強有力競爭者R語言,那麼如今排名第一位的程式語言恐怕就是R語言了。

以下是今年7月份IEEE Spectrum釋出的第四屆頂級程式語言應用排行榜前20位:

圖2 程式語言排行榜

當我看到這份榜單的時候,頗有時勢造英雄的感慨。相比Python如此輝煌的成績單,MATLAB要落寞許多,近幾年都是在10多名開外徘徊,在國內長期處於一個不溫不火的尷尬狀態。

整個2017年,Python的生態圈正在一點點在發生蛻變:

2月份,Python正式宣佈要將其原始碼遷移至全球最大的同性社交網站:GitHub,暫停了Mercurial的使用,轉而投入Git的懷抱;

4月份,AWS Lambda 已經開始支援 Python 3.6,又少了一個用Python 2的理由;

10月份,Ubuntu17.10預設不再安裝Python 2.x版本;

11月份,NumPy宣佈不再支援Python2.7版本;

12月份,微軟正考慮將Python作為Excel的官方指令碼語言。

……

在這一年Python狂熱的背後,相信很多人會像我一樣去思索這輝煌背後的原因。

在我接觸Python之後,使用該語言進行實踐時,讓我最痛苦的是Java到Python的程式設計思維轉換。倒不是因為缺乏程式設計經驗,而是被Java調教出了諸多本能反應。在Python這裡,我發現了一個簡約而不簡單的世界——當我嘗試著將一個由Java實現的小功能改造成Python程式時,就程式碼行數而言,能夠縮減20餘行。這正是Python程式語言“優雅”,“明確”,“簡單”的設計哲學的體現。有人稱Python為「Magic Python」,看來不是沒有原因的。

There should be one and preferably only one obvious way to do it.       

— The Zen of Python, by Tim Peters

最近一則關於Python程式語言進入中小學教材的新聞也讓我們感到振奮,我個人將這個舉動理解為政府給當下正熱的人工智慧帶來一次恰如其分的助攻。畢竟在國內,Python算是人工智慧的第一語言。當然背後還有更多深層次的原因,諸如學科類目競爭性、程式語言的接受度和難易程度之類的問題,在此不再進行詳細闡述了。

寫到這裡,我想起了近些年活躍於一線大城市的「兒童程式設計」產業,各個培訓機構的課程體系大同小異,針對幼兒的程式設計學習都採用了MIT研發的視覺化程式設計工具:Scratch,而針對青少年學習程式設計所採用的語言毫無例外都是Python,迎合了當下人工智慧的熱潮。從這個方面來看,Python進入中小學教材也是有其科學性的。

鄧小平同志曾說過:“計算機要從娃娃抓起!”

隨著Python程式語言的不斷滲透,將會有越來越多能夠用Python寫程式的中小學生。

設想一下,未來某一天,一個十來歲的小孩子在和我們這些專職程式員聊機器學習、神經網路的話題,那是將怎麼樣一種感覺?

圖3 某機構兒童程式設計課程體系

3、Python in Future

講真,Python用蟒蛇作為Logo當初著實讓我嚇了一跳,在我看來,GO語言的土撥鼠形象似乎會更討人喜愛。然而當Python日益流行之後,喜歡這條蟒蛇形象的人似乎也越來也多。

在網際網路行業,小步快跑的產品迭代節奏是大家有目共睹的,並且這種現狀將會持續相當長時間,以「高效開發」著稱的Python必將受到青睞。至於長期以來飽受詬病的Python執行速度,隨著PyPy直譯器的不斷最佳化和硬體效能的提升,也將不再值得顧慮。

在前面的內容中我曾提到,Python在多個領域都能遊刃有餘,稱得上是一門「全棧」程式語言,可以想象未來的3~5年間,PHP的全能地位也將有所不保。我們甚至可以大膽預測,用不了幾年,Python將一飛衝天,與Java並肩遨遊。

在此借用一篇博文中的一段話:

大概在 2003 或者 2004 年的時候,我買過一本 Python 的書,作者是一位巴西人。他說自己之所以堅定的選擇 Python,是因為他小時候經常夢到未來世界將由一條大蟒蛇(蟒蛇的英文為python)統治。

我當時覺得這哥們好可憐,做個夢都能夢到這麼恐怖的場景。但今天來看,也許他只是像駭客帝國裡的程式員安德森一樣,不小心穿越到未來,並且窺探到了世界的真相。

正所謂:「悟已往,知來者」。未來人工智慧的時代,定會讓Python成為一代霸主。

圖4 杜蘭: 人工智慧+ 未來已來

4、總結

這篇文章主要敘述了我對Python近幾年來發展歷程的考量和想法,對Python在2017年輝煌成績的總結和肯定,以及對其未來的預測。對於那些有一定Python程式設計經驗的老司機來說,會有更真切的感受。當然,這些僅僅是個人立場,不代表大眾觀點,也不應該成為讀者選擇Python程式語言的一個理由。

正所謂:「工欲善其事,必先利其器」,每種程式語言都有優劣之處,善於使用自己手中掌握的工具才是王道。

-END-

當我們在聊Python的時候,我們在聊什麼?不妨在評論區留下你的想法吧

(配圖來自:微博@墮葉寒聲醉,史上最具情懷的美女設計師)

作者:文刀

Java Web全棧工程師,高階架構師,技術佈道者。曾任兩家上市公司的技術主管,從事微服務架構設計,DevOps團隊建設工作,在電商、LBS、IoT等相關應用領域有豐富的專案經驗。微信公眾號:jishuhui_2015


●本文編號323,以後想閱讀這篇文章直接輸入323即可

●輸入m獲取到文章目錄

推薦↓↓↓

Linux學習

更多推薦18個技術類公眾微信

涵蓋:程式人生、演演算法與資料結構、駭客技術與網路安全、大資料技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。

贊(0)

分享創造快樂