馮漢森

Python,一門神奇的編程語言浪潮般崛起了。今天,Python的教學廣告處處皆有,是開機新聞里的???,網頁廣告的熟人,哪怕朋友圈也免不了它們的身影。
近20年來,C、C++和Java一直位列程序員最常用編程語言前3位,且遠遠領先于其他語言。現在,Python在各種編程語言排行榜上地位躥升,擠掉了源遠流長的C、C++,擠掉了叱咤風云的Java,讓眾多程序員紛紛投懷送抱。
Python是當今許多大學里教授的編程第一語言,在統計編程領域排名第一,在人工智能編程領域排名第一,在腳本編寫方面排名第一,在系統測試方面排名第一……
我是從小學編程的,也參加過一些算法競賽,雖然大學沒再繼續,但是對這個變遷還是稍有感觸的。早些時候比賽中大家主要用C和C++,后來也可以使用Java,如今一些新興的測評網站使用Python漸漸多起來(比如求職者刷題常用的力扣)。算法競賽是有解題時間限制的,選手編寫程序必須要在一定時間內算出結果,超過時限了會根據規則扣除相應的分數或直接零分。一般地講,在時限長度上,C/C++ < Java < Python,而在編寫難度上Python < Java < C/C++。算力就是財力,在早些年普遍算力有限,需要用C/C++來壓榨有限算力的最大價值。而如今算力膨脹,編寫難度越小、開發周期越短的Python自然也就更受歡迎了。
特別有意思的是,Python“出圈”了——出了程序員的圈子,走向各個人群:上至文職員工,下至小學兒童,均左手爬蟲統計,右手人工智能。一門編程語言為何能如此?這就要簡單探討一下編程的本質了。
編程是什么?編程就是編定程序,讓計算機代為解決某個問題。為了使計算機能夠理解人的意圖,人類就必須將需解決的問題的思路、方法和手段通過計算機能夠理解的形式告訴它。
簡單來說,編程的本質就是人給計算機下達明確命令的過程,只是計算機這個交流對象十分呆板,它們只“認死理”,交流需要邏輯。一開始只有數學高材生才能勝任這份工作,后來面向過程的編程語言大大地簡化了這一過程,熟練的工程師就能編寫程序,再到如今,面向對象編程的普及使得普羅大眾也能踏入編程的門檻。
一年前我家買了一臺小米智能音箱。老爸興致勃勃地說:“小愛說段相聲!”
小愛同學應了聲:“哎”,燈亮著等待問題。
老爸等了會兒沒得到回應,氣道:“你真笨!”
小愛這才開始應答:“罵人是不對的!說好的以禮相待呢?”
類似的事情還發生過很多次,就是因為父母把“人工智能音箱”當成了人在溝通,而實際應視作程序在編程。程序的有效執行需要具有一定的結構和邏輯的命令,而自然語言其實比較“模糊”和“混亂”,人可以理解,但程序很容易解析錯。
從形式上來看,編程也不過是一種“不說人話”的交流方式而已,或者編程語言也就可以視為一種外語,而Python可說是核心詞匯和語法最少的那種,這正是Python爆火的基礎。
為什么“出圈”的是Python?
Python的核心價值要素有兩點:上手簡單、可選庫大。
“上手簡單”是指其編程語法上手十分簡單,沒有太多需要背的語法規則,或者說你不需要背那些規則也能上手,因為實在不行上網現場查也來得及。可以說會英語、看懂模塊的用途就差不多能開始用Python編程了。
“可選庫大”是指Python社群開源資源多且全。老師在教我們時說:“Python易學難精,但大多數人也不需要精通,很多東西別人都已經寫好了,你調用就是了?!盤ython的社區有很多開源的“包”供你下載,這些“包”囊括了各行各業的各種功能,可以用它們拼裝成一個萬能的工廠。

“上手簡單”讓更多的新鮮血液能夠快速加入Python的開源社區,“可選庫大”讓眾多初學者不再需要學習各領域的獨立的編程語言,上述兩個要素又孕育了一個龐大的開源分享系統,使得Python成為了最能滿足時代無限需求的語言。
大數據、爬蟲、深度學習等時代新技術紛紛入駐Python,極大地降低了人們入門頂尖技術的門檻。以人工智能技術為例,如果你只是需要一個你個人能用的人臉識別、目標識別或人臉生成的程序,你完全可以搜索那些大名鼎鼎的模型,進入它們項目的GitHub(一個面向開源及私有軟件項目的托管平臺),使用研究者們為你準備好的指令來按部就班地下載并運行對應的Python程序,再加載你自己的數據便可。這個做法幾乎已經成為了人工智能領域的行業規范,也是人工智能領域能夠日新月異的基礎。
再比如,Python的爬蟲教程和統計教程可以讓你快速而有效地捕捉并統計各平臺的某些關鍵字或關鍵句,讓你幾個小時完成原本好幾天的工作量。我大二時曾經給一位大四的師兄打下手,他當時在做的就是在微博上找到某關鍵詞的所有評論來做分析預測。師兄就是用Python爬蟲程序去自動抓取web頁面上自己想要的數據。這些數據要是人工獲取工作量巨大。我負責后期給其中一部分評論標注“積極的”或是 “消極的”,足足1小時標注不到200個“正面/負面”情緒標簽,我整個人都快瘋了。
在我看來,“Python熱”其實是信息時代下社會日益增長的生產效率需求與工作者生產能力不平衡不充分的矛盾。信息時代人們獲取信息很方便,但信息爆炸又導致人們沒有時間去處理所有信息。Excel等傳統工具能夠幫助你提高信息處理能力,而Python編程能再幫你提升一截?!癙ython熱”應該是一種時代進展的必然,就算不是Python,也會有其他編程語言頂替它的作用。
想要上手Python是一件非常簡單的事情,免費教程數不勝數。我建議大家簡單學一下。
如今有許多人在網上拿開源免費的東西來賣錢,請大家務必多挖掘多思考,自己動手豐衣足食,不要偷懶被收智商稅。一個簡單實用的思路是,你需要什么就學什么。
學Python最好以應用為目的,沒有應用案例是很難學好編程的。你可以根據自己的喜好隨時創造需求,哪怕只是為了看小說不帶廣告,為自己的老文件們集體改個名字。
在學校,一個典型的案例是收集同學的信息。如果用Excel樣表整合,需要開關Excel、復制粘貼幾十次,但用Python自動讀取表格再合并追加到一個文件里就很快。當然你也可以開個在線編輯文檔讓同學自己填,不過在線編輯是有人數上限的,超限的話軟件會要求收費,而且填寫的隱私信息完全暴露在所有人眼前。
在找工作時,可以學著用爬蟲搜索信息后建立信息數據庫,從中篩選符合心意的崗位??佳袝r要選導師,那么多老師你又不認識找誰聯系?這個時候你可以通過爬蟲把所有老師的公開信息都找出來,再篩選出想報的導師,聯系就是了。
責任編輯:樸添勤