馮漢森
Python,一門神奇的編程語言浪潮般崛起了。今天,Python的教學(xué)廣告處處皆有,是開機新聞里的??停W(wǎng)頁廣告的熟人,哪怕朋友圈也免不了它們的身影。
近20年來,C、C++和Java一直位列程序員最常用編程語言前3位,且遠(yuǎn)遠(yuǎn)領(lǐng)先于其他語言?,F(xiàn)在,Python在各種編程語言排行榜上地位躥升,擠掉了源遠(yuǎn)流長的C、C++,擠掉了叱咤風(fēng)云的Java,讓眾多程序員紛紛投懷送抱。
Python是當(dāng)今許多大學(xué)里教授的編程第一語言,在統(tǒng)計編程領(lǐng)域排名第一,在人工智能編程領(lǐng)域排名第一,在腳本編寫方面排名第一,在系統(tǒng)測試方面排名第一……
我是從小學(xué)編程的,也參加過一些算法競賽,雖然大學(xué)沒再繼續(xù),但是對這個變遷還是稍有感觸的。早些時候比賽中大家主要用C和C++,后來也可以使用Java,如今一些新興的測評網(wǎng)站使用Python漸漸多起來(比如求職者刷題常用的力扣)。算法競賽是有解題時間限制的,選手編寫程序必須要在一定時間內(nèi)算出結(jié)果,超過時限了會根據(jù)規(guī)則扣除相應(yīng)的分?jǐn)?shù)或直接零分。一般地講,在時限長度上,C/C++ < Java < Python,而在編寫難度上Python < Java < C/C++。算力就是財力,在早些年普遍算力有限,需要用C/C++來壓榨有限算力的最大價值。而如今算力膨脹,編寫難度越小、開發(fā)周期越短的Python自然也就更受歡迎了。
特別有意思的是,Python“出圈”了——出了程序員的圈子,走向各個人群:上至文職員工,下至小學(xué)兒童,均左手爬蟲統(tǒng)計,右手人工智能。一門編程語言為何能如此?這就要簡單探討一下編程的本質(zhì)了。
編程是什么?編程就是編定程序,讓計算機代為解決某個問題。為了使計算機能夠理解人的意圖,人類就必須將需解決的問題的思路、方法和手段通過計算機能夠理解的形式告訴它。
簡單來說,編程的本質(zhì)就是人給計算機下達明確命令的過程,只是計算機這個交流對象十分呆板,它們只“認(rèn)死理”,交流需要邏輯。一開始只有數(shù)學(xué)高材生才能勝任這份工作,后來面向過程的編程語言大大地簡化了這一過程,熟練的工程師就能編寫程序,再到如今,面向?qū)ο缶幊痰钠占笆沟闷樟_大眾也能踏入編程的門檻。
一年前我家買了一臺小米智能音箱。老爸興致勃勃地說:“小愛說段相聲!”
小愛同學(xué)應(yīng)了聲:“哎”,燈亮著等待問題。
老爸等了會兒沒得到回應(yīng),氣道:“你真笨!”
小愛這才開始應(yīng)答:“罵人是不對的!說好的以禮相待呢?”
類似的事情還發(fā)生過很多次,就是因為父母把“人工智能音箱”當(dāng)成了人在溝通,而實際應(yīng)視作程序在編程。程序的有效執(zhí)行需要具有一定的結(jié)構(gòu)和邏輯的命令,而自然語言其實比較“模糊”和“混亂”,人可以理解,但程序很容易解析錯。
從形式上來看,編程也不過是一種“不說人話”的交流方式而已,或者編程語言也就可以視為一種外語,而Python可說是核心詞匯和語法最少的那種,這正是Python爆火的基礎(chǔ)。
為什么“出圈”的是Python?
Python的核心價值要素有兩點:上手簡單、可選庫大。
“上手簡單”是指其編程語法上手十分簡單,沒有太多需要背的語法規(guī)則,或者說你不需要背那些規(guī)則也能上手,因為實在不行上網(wǎng)現(xiàn)場查也來得及??梢哉f會英語、看懂模塊的用途就差不多能開始用Python編程了。
“可選庫大”是指Python社群開源資源多且全。老師在教我們時說:“Python易學(xué)難精,但大多數(shù)人也不需要精通,很多東西別人都已經(jīng)寫好了,你調(diào)用就是了?!盤ython的社區(qū)有很多開源的“包”供你下載,這些“包”囊括了各行各業(yè)的各種功能,可以用它們拼裝成一個萬能的工廠。
“上手簡單”讓更多的新鮮血液能夠快速加入Python的開源社區(qū),“可選庫大”讓眾多初學(xué)者不再需要學(xué)習(xí)各領(lǐng)域的獨立的編程語言,上述兩個要素又孕育了一個龐大的開源分享系統(tǒng),使得Python成為了最能滿足時代無限需求的語言。
大數(shù)據(jù)、爬蟲、深度學(xué)習(xí)等時代新技術(shù)紛紛入駐Python,極大地降低了人們?nèi)腴T頂尖技術(shù)的門檻。以人工智能技術(shù)為例,如果你只是需要一個你個人能用的人臉識別、目標(biāo)識別或人臉生成的程序,你完全可以搜索那些大名鼎鼎的模型,進入它們項目的GitHub(一個面向開源及私有軟件項目的托管平臺),使用研究者們?yōu)槟銣?zhǔn)備好的指令來按部就班地下載并運行對應(yīng)的Python程序,再加載你自己的數(shù)據(jù)便可。這個做法幾乎已經(jīng)成為了人工智能領(lǐng)域的行業(yè)規(guī)范,也是人工智能領(lǐng)域能夠日新月異的基礎(chǔ)。
再比如,Python的爬蟲教程和統(tǒng)計教程可以讓你快速而有效地捕捉并統(tǒng)計各平臺的某些關(guān)鍵字或關(guān)鍵句,讓你幾個小時完成原本好幾天的工作量。我大二時曾經(jīng)給一位大四的師兄打下手,他當(dāng)時在做的就是在微博上找到某關(guān)鍵詞的所有評論來做分析預(yù)測。師兄就是用Python爬蟲程序去自動抓取web頁面上自己想要的數(shù)據(jù)。這些數(shù)據(jù)要是人工獲取工作量巨大。我負(fù)責(zé)后期給其中一部分評論標(biāo)注“積極的”或是 “消極的”,足足1小時標(biāo)注不到200個“正面/負(fù)面”情緒標(biāo)簽,我整個人都快瘋了。
在我看來,“Python熱”其實是信息時代下社會日益增長的生產(chǎn)效率需求與工作者生產(chǎn)能力不平衡不充分的矛盾。信息時代人們獲取信息很方便,但信息爆炸又導(dǎo)致人們沒有時間去處理所有信息。Excel等傳統(tǒng)工具能夠幫助你提高信息處理能力,而Python編程能再幫你提升一截。“Python熱”應(yīng)該是一種時代進展的必然,就算不是Python,也會有其他編程語言頂替它的作用。
想要上手Python是一件非常簡單的事情,免費教程數(shù)不勝數(shù)。我建議大家簡單學(xué)一下。
如今有許多人在網(wǎng)上拿開源免費的東西來賣錢,請大家務(wù)必多挖掘多思考,自己動手豐衣足食,不要偷懶被收智商稅。一個簡單實用的思路是,你需要什么就學(xué)什么。
學(xué)Python最好以應(yīng)用為目的,沒有應(yīng)用案例是很難學(xué)好編程的。你可以根據(jù)自己的喜好隨時創(chuàng)造需求,哪怕只是為了看小說不帶廣告,為自己的老文件們集體改個名字。
在學(xué)校,一個典型的案例是收集同學(xué)的信息。如果用Excel樣表整合,需要開關(guān)Excel、復(fù)制粘貼幾十次,但用Python自動讀取表格再合并追加到一個文件里就很快。當(dāng)然你也可以開個在線編輯文檔讓同學(xué)自己填,不過在線編輯是有人數(shù)上限的,超限的話軟件會要求收費,而且填寫的隱私信息完全暴露在所有人眼前。
在找工作時,可以學(xué)著用爬蟲搜索信息后建立信息數(shù)據(jù)庫,從中篩選符合心意的崗位。考研時要選導(dǎo)師,那么多老師你又不認(rèn)識找誰聯(lián)系?這個時候你可以通過爬蟲把所有老師的公開信息都找出來,再篩選出想報的導(dǎo)師,聯(lián)系就是了。
責(zé)任編輯:樸添勤