原標(biāo)題:潘石屹考了99分的Python,到底是一種什么存在?
去年,當(dāng)?shù)禺a(chǎn)大佬潘石屹要把學(xué)習(xí)Python作為生日禮物送給自己的時候,微博上還多是一陣調(diào)侃之聲。可能正是印證了Python程序員們常常掛在嘴邊的“人生苦短,就學(xué)Python”的口頭禪,時年56歲的小潘同學(xué)要再一次抓住“青春”的尾巴吧。
為督促自己學(xué)習(xí),小潘還在微博專門設(shè)置了一個#潘石屹用Python解決100個問題#的話題,鼓勵全民圍觀,監(jiān)督他的Python學(xué)習(xí)計(jì)劃。顯然,幾個月的堅(jiān)持,讓小潘同學(xué)的Python學(xué)習(xí)有了初步的成果。5月16號,他在參加完NCT全國青少年編程能力等級測試 Python 編程一級考試后,曬出了99分的優(yōu)秀成績單。
至于為啥要學(xué)Python,樸實(shí)的潘總在接受媒體采訪時表示,人到50歲以后一定要學(xué)點(diǎn)新東西,以防止老年癡呆。
但為什么選擇要學(xué)一個自己完全不懂的Python語言,這還是他在請教了李開復(fù)之后得到的啟發(fā):Python語言是現(xiàn)在全世界使用最多的一個編程語言,也是非常成熟的一個語言。
最主要的呢?
未來社會是一個人工智能的社會,學(xué)習(xí)Python是打開人工智能時代的鑰匙。
Python對于人工智能很重要,對很多關(guān)注AI的人們來說想必是個基本常識,但是對于大部分并非專業(yè)從事編程的人,比如我來說,Python到底有多重要,其實(shí)還是一頭霧水的。
于是我默默地拿起了一本《Python編程:從入門到實(shí)踐》……
額,短期學(xué)會有點(diǎn)不太現(xiàn)實(shí)。我還是本著謙虛好學(xué)的態(tài)度,梳理下專業(yè)人士的觀點(diǎn),來盡可能地搞清楚“Python之于AI”是一種怎樣的存在吧?
Python為何能這么流行?
衡量一門編程語言受歡迎程度的重要指標(biāo),可以參考其在Stack Overflow(一家IT問答社區(qū))上面的標(biāo)簽數(shù)量。下圖是近10年來全世界最主要的幾種編程語言在社區(qū)平臺的問答帖子中的標(biāo)簽數(shù)量的趨勢圖。
從2012年之后,Python就一直處在穩(wěn)步上升的趨勢,與此相對照的是其他主流編程語言,除了R語言一直處于停滯不前的狀態(tài),其他編程語言則是在不同程度地穩(wěn)步下降。
這一指標(biāo)確實(shí)很好地印證了Python的流行程度和普及度。根據(jù)專業(yè)人士的說法,Python具有以下優(yōu)點(diǎn):
一、Python的成熟和易用。
實(shí)際上,從1991年,van Rossum向全世界發(fā)布了第一個版本的Python至今已經(jīng)有30歲的高齡了。但Python卻沒有因?yàn)檫@種計(jì)算機(jī)時代略顯“古老”的年齡而走向衰敗,反而因?yàn)镻ython在可用性和功能性上面取得的平衡,讓越來越多的程序員開始使用這一語言。
一方面簡單易用,一方面又可以用來開發(fā)大型的應(yīng)用程序,這兩個因素結(jié)合,正是 Python在上世紀(jì)90年代逐漸取得成功的原因。現(xiàn)在,Python語言已經(jīng)形成一個龐大的成熟社區(qū),一旦人們在編寫Python代碼遇到任何問題,都可以從中找到有用的答案。
二、Python對于初學(xué)者非常友好。
從一開始,Python就提供了清晰而明確的語法,使得發(fā)人員更容易閱讀和理解代碼,這是眾多程序員喜歡上Python的主要理由。
用三種語言來顯示“Hello World!”為例,相比起C語言和Java,Python更符合人類直覺的語言形式,對新手而言也更加友好,只需要一句“print”(發(fā)布)就可以了。
用van Rossum的原話來說就是,一門編程語言不僅要告訴計(jì)算機(jī)該做什么,還要便于在開發(fā)者之間傳遞思想。那還有什么比使用一種 “符合人性”的編程語言來實(shí)現(xiàn)更好的思想交流呢?
第三,Python的功能足夠強(qiáng)大。
經(jīng)過如此久的迭代開發(fā),Python早已擁有各種各樣的支持庫。用一個形象的比喻來說,Python就像是編程界的“瑞士軍刀”,可以在各種各樣的場合里用到。比如處理矩陣和向量數(shù)據(jù)的NumPy、做技術(shù)和工程方面的計(jì)算的SciPy、數(shù)據(jù)處理和分析的Pandas以及支持?jǐn)?shù)據(jù)可視化的Matplotlib等等支持庫。
需要注意的是,正是Python在支持庫上面的功能擴(kuò)展,與AI技術(shù)發(fā)展息息相關(guān)。這些正是我們接下來要討論的問題。
為什么Python更適合人工智能?
我們知道第三次人工智能浪潮的興起得益于機(jī)器學(xué)習(xí),特別是深度學(xué)習(xí)算法的成功。而訓(xùn)練一個AI算法模型就需要為其喂養(yǎng)大量的數(shù)據(jù)。在前期的AI發(fā)展中,“有多少智能就有多少人工”就是這一AI訓(xùn)練過程的典型描述。在這一過程中,Python因其有強(qiáng)大的數(shù)據(jù)處理的生態(tài)庫,因而能夠?yàn)槠涮峁?shù)據(jù)的訪問和轉(zhuǎn)換,實(shí)現(xiàn)AI算法的快速“喂養(yǎng)”。
舉個例子,機(jī)器學(xué)習(xí)或者深度學(xué)習(xí)的算法模型所要處理的數(shù)據(jù)實(shí)際上都是矩陣和向量。而NumPy則正好支持維度數(shù)組與矩陣運(yùn)算,結(jié)合Python內(nèi)置的math和random庫,可以輕松通過簡單代碼實(shí)現(xiàn)矩陣的轉(zhuǎn)置、求逆、求和、叉乘、點(diǎn)乘和分解等功能。
而且,NumPy在實(shí)現(xiàn)層對矩陣運(yùn)算做了大量的并行化處理,通過數(shù)學(xué)運(yùn)算的精巧,而不是讓用戶自己寫多線程程序,來提升程序效率。有了Python這種強(qiáng)大的數(shù)據(jù)計(jì)算和處理能力,開發(fā)者就可以把工作重心放在模型和算法上,不用操心運(yùn)行的問題了。
就像上面所說,Python其實(shí)也是AI技術(shù)的“瑞士軍刀”。對于AI訓(xùn)練所需要的數(shù)據(jù)獲取、分析、建模等流程也都可以通過Python的各類支出庫來解決。
(用Python訓(xùn)練和使用一個logistic Regression模型)
比如,像requests、scrapy這類網(wǎng)絡(luò)爬蟲庫,可以從網(wǎng)絡(luò)上獲得源源不斷地海量數(shù)據(jù);像scipy、pandas、matplotlib以及剛剛介紹的NumPy,幫助開發(fā)者進(jìn)行科學(xué)計(jì)算、數(shù)據(jù)處理、繪圖以及矩陣計(jì)算等操作;而像nltk、keras、sklearn這類用于建模的支持庫,即可用于NLP、DL的模型搭建,實(shí)現(xiàn)一個完整的AI算法模型。
此外,Python也可以用于處理高效的C/C ++算法,以及CUDA/cuDNN的包裝語言,這讓現(xiàn)有的機(jī)器學(xué)習(xí)和深度學(xué)習(xí)庫可以在Python中高效運(yùn)行的原因之一。
總體而言,Python成為一門理想的集成語言,可以讓開發(fā)者關(guān)注真正的問題,而不是花很多時間在細(xì)節(jié)實(shí)現(xiàn)上。
Python語言十全十美嗎?
當(dāng)然不是,像任何一門編程語言一樣,Python也會有自身的缺陷。
首先,Python的執(zhí)行速度不夠快。由于Python是一門解釋型語言。編程語言和機(jī)器語言之間需要解釋器的翻譯,而Python是一次執(zhí)行一個任務(wù),因而需要每翻譯一行程序敘述就立刻運(yùn)行,然后再翻譯下一行再運(yùn)行,這樣就導(dǎo)致Python要比像C、Java這類編譯型語言執(zhí)行速度慢的原因。
但對于現(xiàn)在的服務(wù)器算力來說,Python速度的劣勢幾乎沒有什么影響,因?yàn)閷τ陂_發(fā)者而言根本察覺不到明顯的延時。此外,還可以通過和C語言的結(jié)合,將需要優(yōu)化速度的應(yīng)用轉(zhuǎn)換為編譯好的擴(kuò)展語言,并在系統(tǒng)中使用Python腳本將這部分應(yīng)用連接起來,以提高程序的整體效率。
其次,Python源代碼加密困難。Python不像編譯型語言的源程序會被編譯成目標(biāo)程序,而是會直接運(yùn)行源程序,因此對源代碼加密比較困難。
此外,Python不太適用于移動開發(fā)。Python在設(shè)計(jì)時并沒有考慮到移動開發(fā),因而還不支持在非x86硬件平臺上編譯代碼,而且Python的測試套件很容易在移動平臺崩潰。隨著移動設(shè)備的數(shù)量和流量開始遠(yuǎn)遠(yuǎn)超過PC設(shè)備,Python也應(yīng)該要努力進(jìn)化以支持移動平臺了。
盡管Python在未來幾年內(nèi)會依然興盛,但是一些潛在的競爭對手也正在成長——Rust、Go以及Julia。這些語言都各自超過Python的優(yōu)點(diǎn),也能修補(bǔ)Python的薄弱環(huán)節(jié),正在成為Stack Overflow近幾年受歡迎趨勢上升很快的三種語言,但是零點(diǎn)幾的份額還不足以挑戰(zhàn)Python。
然而總體上,Python因其開放的開源社區(qū)以及全球最多的開發(fā)者生態(tài),使其成為近十年來最成功的編程開發(fā)語言之一。
如果列舉Python的廣泛應(yīng)用,我們可以列舉出一系列的名單。包括人工智能學(xué)習(xí)框架如Google的TensorFlow?、Facebook的PyTorch、開源社區(qū)的神經(jīng)網(wǎng)絡(luò)庫Karas以及云計(jì)算開源平臺OpenStack等使用python實(shí)現(xiàn)。此外,Python還在Web開發(fā)、操作系統(tǒng)運(yùn)維、金融大數(shù)據(jù)分析和圖形GUI上面都是強(qiáng)大的支持工具。
(MIT研究員在通過Python代碼跑出黑洞圖片后,沒有報錯時的小興奮)
如果這些領(lǐng)域還是離我們的日常生活太過遙遠(yuǎn)的話,我們不妨就記住Python這樣的一個小應(yīng)用吧。
還記得去年媒體瘋傳的那張黑洞照片嗎?這張據(jù)說用了2年時間拍攝而成的黑洞照片,其實(shí)并不是一個望遠(yuǎn)鏡拍攝到的,而是采用了遍布全世界的望遠(yuǎn)鏡連接起來,共同拍攝而成的。那么來自多個望遠(yuǎn)鏡拍攝的數(shù)據(jù)的處理就需要用到Python。
簡單來說,人類看到的第一張真實(shí)的黑洞照片,其實(shí)是用Python合成的。如果今后有人問起Python能做什么,你還能記得這個知識點(diǎn)就可以了。
- 蜜度索驥:以跨模態(tài)檢索技術(shù)助力“企宣”向上生長
- 美媒聚焦比亞迪“副業(yè)”:電子代工助力蘋果,下個大計(jì)劃瞄準(zhǔn)AI機(jī)器人
- 微信零錢通新政策:銀行卡轉(zhuǎn)入資金提現(xiàn)免手續(xù)費(fèi)引熱議
- 消息稱塔塔集團(tuán)將收購和碩印度iPhone代工廠60%股份 并接管日常運(yùn)營
- 蘋果揭秘自研芯片成功之道:領(lǐng)先技術(shù)與深度整合是關(guān)鍵
- 英偉達(dá)新一代Blackwell GPU面臨過熱挑戰(zhàn),交付延期引發(fā)市場關(guān)注
- 馬斯克能否成為 AI 部部長?硅谷與白宮的聯(lián)系日益緊密
- 余承東:Mate70將在26號發(fā)布,意外泄露引發(fā)關(guān)注
- 無人機(jī)“黑科技”亮相航展:全球首臺低空重力測量系統(tǒng)引關(guān)注
- 賽力斯發(fā)布聲明:未與任何伙伴聯(lián)合開展人形機(jī)器人合作
- 賽力斯觸及漲停,汽車整車股盤初強(qiáng)勢拉升
免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進(jìn)一步核實(shí),并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實(shí)內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。