潘石屹考了99分的Python,到底是一種什么存在?

原標題:潘石屹考了99分的Python,到底是一種什么存在?

去年,當?shù)禺a(chǎn)大佬潘石屹要把學習Python作為生日禮物送給自己的時候,微博上還多是一陣調(diào)侃之聲??赡苷怯∽C了Python程序員們常常掛在嘴邊的“人生苦短,就學Python”的口頭禪,時年56歲的小潘同學要再一次抓住“青春”的尾巴吧。

為督促自己學習,小潘還在微博專門設置了一個#潘石屹用Python解決100個問題#的話題,鼓勵全民圍觀,監(jiān)督他的Python學習計劃。顯然,幾個月的堅持,讓小潘同學的Python學習有了初步的成果。5月16號,他在參加完NCT全國青少年編程能力等級測試 Python 編程一級考試后,曬出了99分的優(yōu)秀成績單。

至于為啥要學Python,樸實的潘總在接受媒體采訪時表示,人到50歲以后一定要學點新東西,以防止老年癡呆。

但為什么選擇要學一個自己完全不懂的Python語言,這還是他在請教了李開復之后得到的啟發(fā):Python語言是現(xiàn)在全世界使用最多的一個編程語言,也是非常成熟的一個語言。

最主要的呢?

未來社會是一個人工智能的社會,學習Python是打開人工智能時代的鑰匙。

Python對于人工智能很重要,對很多關注AI的人們來說想必是個基本常識,但是對于大部分并非專業(yè)從事編程的人,比如我來說,Python到底有多重要,其實還是一頭霧水的。

于是我默默地拿起了一本《Python編程:從入門到實踐》……

額,短期學會有點不太現(xiàn)實。我還是本著謙虛好學的態(tài)度,梳理下專業(yè)人士的觀點,來盡可能地搞清楚“Python之于AI”是一種怎樣的存在吧?

Python為何能這么流行?

衡量一門編程語言受歡迎程度的重要指標,可以參考其在Stack Overflow(一家IT問答社區(qū))上面的標簽數(shù)量。下圖是近10年來全世界最主要的幾種編程語言在社區(qū)平臺的問答帖子中的標簽數(shù)量的趨勢圖。

從2012年之后,Python就一直處在穩(wěn)步上升的趨勢,與此相對照的是其他主流編程語言,除了R語言一直處于停滯不前的狀態(tài),其他編程語言則是在不同程度地穩(wěn)步下降。

這一指標確實很好地印證了Python的流行程度和普及度。根據(jù)專業(yè)人士的說法,Python具有以下優(yōu)點:

一、Python的成熟和易用。

實際上,從1991年,van Rossum向全世界發(fā)布了第一個版本的Python至今已經(jīng)有30歲的高齡了。但Python卻沒有因為這種計算機時代略顯“古老”的年齡而走向衰敗,反而因為Python在可用性和功能性上面取得的平衡,讓越來越多的程序員開始使用這一語言。

一方面簡單易用,一方面又可以用來開發(fā)大型的應用程序,這兩個因素結合,正是 Python在上世紀90年代逐漸取得成功的原因。現(xiàn)在,Python語言已經(jīng)形成一個龐大的成熟社區(qū),一旦人們在編寫Python代碼遇到任何問題,都可以從中找到有用的答案。

二、Python對于初學者非常友好。

從一開始,Python就提供了清晰而明確的語法,使得發(fā)人員更容易閱讀和理解代碼,這是眾多程序員喜歡上Python的主要理由。

用三種語言來顯示“Hello World!”為例,相比起C語言和Java,Python更符合人類直覺的語言形式,對新手而言也更加友好,只需要一句“print”(發(fā)布)就可以了。

用van Rossum的原話來說就是,一門編程語言不僅要告訴計算機該做什么,還要便于在開發(fā)者之間傳遞思想。那還有什么比使用一種 “符合人性”的編程語言來實現(xiàn)更好的思想交流呢?

第三,Python的功能足夠強大。

經(jīng)過如此久的迭代開發(fā),Python早已擁有各種各樣的支持庫。用一個形象的比喻來說,Python就像是編程界的“瑞士軍刀”,可以在各種各樣的場合里用到。比如處理矩陣和向量數(shù)據(jù)的NumPy、做技術和工程方面的計算的SciPy、數(shù)據(jù)處理和分析的Pandas以及支持數(shù)據(jù)可視化的Matplotlib等等支持庫。

需要注意的是,正是Python在支持庫上面的功能擴展,與AI技術發(fā)展息息相關。這些正是我們接下來要討論的問題。

為什么Python更適合人工智能?

我們知道第三次人工智能浪潮的興起得益于機器學習,特別是深度學習算法的成功。而訓練一個AI算法模型就需要為其喂養(yǎng)大量的數(shù)據(jù)。在前期的AI發(fā)展中,“有多少智能就有多少人工”就是這一AI訓練過程的典型描述。在這一過程中,Python因其有強大的數(shù)據(jù)處理的生態(tài)庫,因而能夠為其提供數(shù)據(jù)的訪問和轉換,實現(xiàn)AI算法的快速“喂養(yǎng)”。

舉個例子,機器學習或者深度學習的算法模型所要處理的數(shù)據(jù)實際上都是矩陣和向量。而NumPy則正好支持維度數(shù)組與矩陣運算,結合Python內(nèi)置的math和random庫,可以輕松通過簡單代碼實現(xiàn)矩陣的轉置、求逆、求和、叉乘、點乘和分解等功能。

而且,NumPy在實現(xiàn)層對矩陣運算做了大量的并行化處理,通過數(shù)學運算的精巧,而不是讓用戶自己寫多線程程序,來提升程序效率。有了Python這種強大的數(shù)據(jù)計算和處理能力,開發(fā)者就可以把工作重心放在模型和算法上,不用操心運行的問題了。

就像上面所說,Python其實也是AI技術的“瑞士軍刀”。對于AI訓練所需要的數(shù)據(jù)獲取、分析、建模等流程也都可以通過Python的各類支出庫來解決。

(用Python訓練和使用一個logistic Regression模型)

比如,像requests、scrapy這類網(wǎng)絡爬蟲庫,可以從網(wǎng)絡上獲得源源不斷地海量數(shù)據(jù);像scipy、pandas、matplotlib以及剛剛介紹的NumPy,幫助開發(fā)者進行科學計算、數(shù)據(jù)處理、繪圖以及矩陣計算等操作;而像nltk、keras、sklearn這類用于建模的支持庫,即可用于NLP、DL的模型搭建,實現(xiàn)一個完整的AI算法模型。

此外,Python也可以用于處理高效的C/C ++算法,以及CUDA/cuDNN的包裝語言,這讓現(xiàn)有的機器學習和深度學習庫可以在Python中高效運行的原因之一。

總體而言,Python成為一門理想的集成語言,可以讓開發(fā)者關注真正的問題,而不是花很多時間在細節(jié)實現(xiàn)上。

Python語言十全十美嗎?

當然不是,像任何一門編程語言一樣,Python也會有自身的缺陷。

首先,Python的執(zhí)行速度不夠快。由于Python是一門解釋型語言。編程語言和機器語言之間需要解釋器的翻譯,而Python是一次執(zhí)行一個任務,因而需要每翻譯一行程序敘述就立刻運行,然后再翻譯下一行再運行,這樣就導致Python要比像C、Java這類編譯型語言執(zhí)行速度慢的原因。

但對于現(xiàn)在的服務器算力來說,Python速度的劣勢幾乎沒有什么影響,因為對于開發(fā)者而言根本察覺不到明顯的延時。此外,還可以通過和C語言的結合,將需要優(yōu)化速度的應用轉換為編譯好的擴展語言,并在系統(tǒng)中使用Python腳本將這部分應用連接起來,以提高程序的整體效率。

其次,Python源代碼加密困難。Python不像編譯型語言的源程序會被編譯成目標程序,而是會直接運行源程序,因此對源代碼加密比較困難。

此外,Python不太適用于移動開發(fā)。Python在設計時并沒有考慮到移動開發(fā),因而還不支持在非x86硬件平臺上編譯代碼,而且Python的測試套件很容易在移動平臺崩潰。隨著移動設備的數(shù)量和流量開始遠遠超過PC設備,Python也應該要努力進化以支持移動平臺了。

盡管Python在未來幾年內(nèi)會依然興盛,但是一些潛在的競爭對手也正在成長——Rust、Go以及Julia。這些語言都各自超過Python的優(yōu)點,也能修補Python的薄弱環(huán)節(jié),正在成為Stack Overflow近幾年受歡迎趨勢上升很快的三種語言,但是零點幾的份額還不足以挑戰(zhàn)Python。

然而總體上,Python因其開放的開源社區(qū)以及全球最多的開發(fā)者生態(tài),使其成為近十年來最成功的編程開發(fā)語言之一。

如果列舉Python的廣泛應用,我們可以列舉出一系列的名單。包括人工智能學習框架如Google的TensorFlow?、Facebook的PyTorch、開源社區(qū)的神經(jīng)網(wǎng)絡庫Karas以及云計算開源平臺OpenStack等使用python實現(xiàn)。此外,Python還在Web開發(fā)、操作系統(tǒng)運維、金融大數(shù)據(jù)分析和圖形GUI上面都是強大的支持工具。

(MIT研究員在通過Python代碼跑出黑洞圖片后,沒有報錯時的小興奮)

如果這些領域還是離我們的日常生活太過遙遠的話,我們不妨就記住Python這樣的一個小應用吧。

還記得去年媒體瘋傳的那張黑洞照片嗎?這張據(jù)說用了2年時間拍攝而成的黑洞照片,其實并不是一個望遠鏡拍攝到的,而是采用了遍布全世界的望遠鏡連接起來,共同拍攝而成的。那么來自多個望遠鏡拍攝的數(shù)據(jù)的處理就需要用到Python。

簡單來說,人類看到的第一張真實的黑洞照片,其實是用Python合成的。如果今后有人問起Python能做什么,你還能記得這個知識點就可以了。

極客網(wǎng)企業(yè)會員

免責聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準確性及可靠性,但不保證有關資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責。本網(wǎng)站對有關資料所引致的錯誤、不確或遺漏,概不負任何法律責任。任何單位或個人認為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權或存在不實內(nèi)容時,應及時向本網(wǎng)站提出書面權利通知或不實情況說明,并提供身份證明、權屬證明及詳細侵權或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關文章源頭核實,溝通刪除相關內(nèi)容或斷開相關鏈接。

2020-05-26
潘石屹考了99分的Python,到底是一種什么存在?
但為什么選擇要學一個自己完全不懂的Python語言,這還是他在請教了李開復之后得到的啟發(fā):Python語言是現(xiàn)在全世界使用最多的一個編程語言,也是非常成熟的一個語言。

長按掃碼 閱讀全文