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