人工智能時代,是時候學點Python了

“是時候學點Python了”。作為一名不怎么安分的程序員,你或許覺得,產生這樣的想法并不奇怪,但學習Python卻是出于自己對工作現狀以及如何應對未來挑戰(zhàn)所作出的思考。讀過我以前博客的朋友,可能都知道,我推崇軟件領域中的匠人精神,將軟件開發(fā)也視為一種制作,并將優(yōu)秀的產品歸納為功能性與美感的結合。這在過去或許是普遍適用的優(yōu)秀產品準則,然而,今天當我們已經站到人工智能時代的大門前時,我卻發(fā)現過去對于軟件產品的理解,已顯得有些狹隘且過時了。未來所有的優(yōu)秀產品都應該是功能、美感與智能的有機結合。而這種新的智能特性無疑會給我們每一個人帶來巨大的機遇,不僅僅是我們程序員,也包括那些醫(yī)生、教師、金融從業(yè)人員亦或是學生,或正在為孩子想著學些什么的家長,每個人都有機會通過將智能引入自己的工作、產品、生活中,去獲得新的成功。而今天我們放眼整個軟件開發(fā)領域,Python無疑是那個最能為我們帶來這一智能特性的編程語言。

那么,又是什么原因使Python能在眾多編程語言中脫穎而出,它又具有哪些迷人的特性呢?

數據科學基因帶來的智能特性

Python在今天變得如此重要,一個重要的原因便是它能更方便地為我們的工作以及生活創(chuàng)造智能的特性。人工智能在最近幾年得到突飛猛進的發(fā)展,其根本原因并不在于其理論基礎發(fā)生了根本性的變化。而恰恰在于,互聯網飛速發(fā)展之后,積累的大量可供分析的數據,以及對這些數據進行處理、分析以及預測的能力的顯著提升(包括云計算提供的強大分布式運算能力,摩爾定律下每一個計算單元成本的持續(xù)降低,加之以神經網絡為代表的深度學習算法的應用),使我們得到了超乎想象的人工智能。在很多領域,比如被視為人類智慧最頂尖的棋類游戲——圍棋,過去只有讀過那些名校才能得到的投行工作,甚至是需要豐富經驗的醫(yī)生、律師、飛行員,這些專業(yè)性要求極高的工作,都越來越多地受到來自人工智能的挑戰(zhàn),有的甚至已被完全超越。

雖然有人對此表示擔憂,但我卻持樂觀的態(tài)度,并相信這是加速回歸定律(技術的不斷加速是加速回歸定律的內涵和必然結果,這個定律描述了進化節(jié)奏的加快,以及進化過程中產物的指數增長?!镀纥c臨近》、《機器之心》等書中,都將此理論作為對未來預測的基礎)作用下的必然結果。況且就目前而言,那些可預見的人工智能,更多取代的是那些需要基于復雜模式進行精確識別與處理的工作,這返過來將會解放更多人力,使我們可以在人工智能的協(xié)助下,將更多時間和精力投入到更具創(chuàng)造性和情感價值的有趣工作中。

而Python正是以數據科學而聞名,它擁有著極其豐富且穩(wěn)定的數據科學工具環(huán)境,從而助推其成為大數據和云計算中最流行的語言之一。而它的這種數據科學基因,也自然地延伸到了機器學習領域,今天,我們非常熟悉的眾多機器學習庫,如scikit-learn、Tensorflow等都基于或支持Python語言開發(fā)。我們可以很方便地使用它們,去構建自己的智能應用。

令人著迷數據分析與處理能力

Python被設計為有著廣泛通用性的編程語言,你幾乎可以利用它來做任何事情,包括創(chuàng)建Web應用或桌面應用、編寫程序腳本、配置服務器等等。但最令我著迷的還是它的看家本領——數據的分析與處理。我已經用JAVA寫了十多年代碼,也早已習慣使用它,處理工作中遇到的各種問題。但當我開始接觸Python之后,便立刻為它在數據處理與分析方面的強大功能與便利性而感到著迷。

雖然還只能算是個新手,但我已經嘗試著使用Pandas(全稱:Python Data Analysis Library,是一個基于 Numpy 構建的含有更高級數據結構和工具的數據分析包),寫了不少簡單的數據處理程序,這些程序都很短小,有的甚至才十幾行代碼,然而它們所能達到的效果,卻是以前用JAVA需要3倍,甚至更多的代碼量才能實現的。而且這些程序在運行速度和效率上,也絲毫不落下風,這點令我頗為驚喜。現在凡涉及到數據處理的工作,我都會優(yōu)先選擇Python。雖然只是換了一種編程語言,但這一改變卻已著實大大提升了我的工作效率。

這不禁又讓我想到最近讀到的一篇非常有趣的文章,說的是一個醫(yī)生如何通過自學Python,將一些智能分析算法應用于病人診斷數據比對,以及超聲圖像分析,使自己從過去復雜而重復的工作中解放出來,變得效率倍增的故事。我暗想,這應該是個頗有遠見的醫(yī)生,利用Python賦予的數據處理能力,將智能引入到自己的工作和生活中,一切便隨之發(fā)生了改變。其實,和這位醫(yī)生一樣,我們很多人的工作都是與數據或圖像打交道,并基于一定的模式去處理它們,何不學學那位醫(yī)生,也學點Python,然后嘗試著去改變一下自己的工作和生活呢?

簡單、可靠、高效

還是讓我們回到語言本身,很多人會將Python稱為一門優(yōu)雅的編程語言。關于編程語言的美學問題,不在這篇文章的探究范圍內,但Python留給我這個老程序員的印象,概括起來便是:簡單、可靠、高效。打個可能不太恰當的比方,它像極了紅樓夢中的經典人物形象:王熙鳳,雷厲風行,三下五除二便把一件復雜的事情處理得干干凈凈,毫不拖泥帶水。這可能也正是我越來越喜歡它的原因吧。

簡單

我前后接觸過不少編程語言,對我來說開發(fā)語言的語義都大致相同,而在語法上,Python無疑是簡單而精煉的,它似乎生來就是為程序員編碼效率而考慮的編程語言。這一點可能也與Python本身是一門解釋型語言有關。很多在其他編程語言編譯階段,需要給出的類型限制或約束,在Python中都可以省略。從下面兩個簡單的Python與Java對比的例子中,你也一定能看出Python語言簡潔的特點。

另外,Python語言也被設計得更接近于自然語言,比如:在Python中并沒有使用很多編程語言中用的"{}"來限定代碼塊,而完全采用縮進的方式加以限制。雖然很多程序員一開始會覺得不太習慣,但這卻在不經意間,使Python代碼更為整潔、一致,也就提供了更加良好的可讀性。

可靠

Python非??煽?,你可以將它使用在任何場景中,比如網頁開發(fā)、PC應用程序、數據處理、移動應用程序、硬件等等。而且在幾乎每一個領域,Python都提供了非常穩(wěn)定且可靠的框架或第三方庫,從用于構建Web應用的Django,科學計算領域的NumPyPandasSciPy,機器學習領域大名鼎鼎的scikit-learn,以及用于自然語言處理的nltk,你可以利用它們,輕松地構建不同用途的應用。并且,由于Python本身便是跨平臺的,你也不必擔心兼容性的問題。

高效

高效似乎一直與Python這樣的解釋型語言無關,然而,Python卻有其獨到之處。由于Python本身能夠非常方便地調用更底層的第三方庫,而那些底層庫大多又是用C或C++語言編寫的,因此借助Python的這種粘合劑能力,許多著名的第三方庫包括Python本身都能以更好的性能運行。即使在不同的平臺,你也不必擔心性能損失。

Google的支持以及一個強大的社區(qū)

Python并不是一個很新的編程語言了,它誕生于1991年,由于是免費的,你可以很方便地獲得它。Google從2006年起開始大力資助Python的發(fā)展。這對Python非常重要,因為這意味著,像Google這樣的科技巨頭,在很多優(yōu)秀的項目中都會優(yōu)先選擇Python,而在此過程中,Google創(chuàng)建了大量的Python指南和教程以及支持工具。這也反過來幫助更多小企業(yè)以及它們的開發(fā)人員加入到Python開發(fā)者的陣營中。

另一個使Python如此快速發(fā)展的重要原因是,它的背后有著一個健康、活躍的開發(fā)者社區(qū)。他們不但貢獻了大量文檔、指南、教程。還創(chuàng)建并維護著很多知名的Python第三方庫,開發(fā)人員可以非常方便的利用PIP下載這些第三方庫,并在自己的項目中使用。另外,無論你是一個新手還是一個有經驗的開發(fā)人員,當你遇到任何Python有關的問題,都可以在社區(qū)中提問并獲得幫助。

適合教、容易學

如果讓我選擇一門編程語言用于教學的話,我首先會想到Python。不僅因為它簡單,更重要的原因是,它能更好地貼近于人工智能時代對于開發(fā)者新的編程技能要求。Python有很好的數據分析處理以及機器學習的工具包,能幫助學習者方便地將它們應用到實際的工作中。而如果教學對象是年紀更小的中小學生,那么,Python在數據科學方面的優(yōu)秀特性,又能夠很好地啟發(fā)孩子們的數感,促進他們在數學方面的發(fā)展。

當然,Python語言本身具有清晰、簡潔的語法結構,更貼近于自然語言,運行高效,以及不需要構建、編譯便可以直接運行的特點也都非常適合于初學者學習。如果你正在考慮學習一門對未來有用的編程語言,那么Python無疑會是你的最佳選擇

如何開始

如果和我一樣,你也已經決定學習Python,那么一個良好的開始無疑會幫助你獲得成功。關于如何起步,我相信每個人都有自己不同的偏好。有些喜歡買書,比較系統(tǒng)地進行學習,比如:《笨辦法學編程》、《和孩子一起學編程》是針對成人或孩子不錯的Python入門書籍。有些則喜歡通過網上視頻學習,比如慕課網、網易云課堂、騰訊課堂等等,也都有不錯的Python入門課程,而且大多是免費的。還有一些喜歡用App以交互的方式學習,比如codedemy。

而最近,我一直在用,也給我的孩子使用的學習平臺是sololearn。它以簡練的文字說明與代碼示例為主,配合每個知識點的問答測試,很適合初學者起步。此外,它還設計了一些很有特色的功能,比如:一個提供問答與討論的社區(qū),可供代碼執(zhí)行測試的PlayGround,發(fā)布代碼并接受他人的點評,編程能力挑戰(zhàn),以及達到每一項成就便可獲得的獎章等等,這些都能激勵初學者們去不斷提升自己的編程能力,并鼓勵他們將所學到的東西應用到實踐中。

在Python領域,我還只能算是個初學者。我將Python視為自己的第二編程語言,去解決工作中經常遇到的數據處理、分析問題。我還希望通過學習那些優(yōu)秀的機器學習庫,將智能引入到自己的工作中。相信我,你也不用成為這些方面的專家,只需要學一點Python,然后嘗試著去運用,它們便會像魔法一樣改變你的工作和生活。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,675評論 25 709
  • # Python 資源大全中文版 我想很多程序員應該記得 GitHub 上有一個 Awesome - XXX 系列...
    aimaile閱讀 26,822評論 6 427
  • 其實不管嘴上再怎么說不怕孤獨,一個人挺好的,這些話。但是一個人出來的話,還是會有些害怕吧。沒有安全感,孤寂,形...
    M艷朵閱讀 146評論 0 0
  • 今天的精英論壇,我喜歡金融老師講得永遠18, 活波風趣,詩詞功底深厚。不虧是專業(yè)講師。 于達老師的自然放松,也是值...
  • 最近,公司項目中用到了日歷,于是打算自己寫一下,下面做一下總結。要想實現日歷,首先需要知道一個月有多少天,再需要知...
    GemShi閱讀 1,847評論 0 0

友情鏈接更多精彩內容