當代人的知識焦慮中,一定少不了這門叫 Python 的語言。已經有一些電信公司、科技公司,開始讓所有的員工都要去學習「Python」,不管你是不是工程師都要學。一時之間,給人一種全民學 Python 的錯覺。但是, Python 為什麼突然變重要了,真的有必要學它嗎?
在搞清楚要不要學 Python 之前,有必要瞭解它的歷史。
雖然 Python「成名」是這兩年的事,但它問世已有近 30 年歷史。稍微接觸過 Python 的人,大多都聽說過這樣一句話:人生苦短,我用 Python。(著名程式設計師 Bruce Eckel 更早的時候說過「Life is short You need Python」)這句名言就出自 Python 之父吉多·范羅蘇姆(Guido van Rossum),看到這個「范」姓想必很多人都能猜出他的國籍了——荷蘭。
范羅蘇姆開發 Python 的理由很任性,1989 年聖誕節期間,為了打發假期時間,他決定創立一門新的程式語言,這門語言應該既像 ABC 一樣具備良好可讀性和易用性,又易於擴展和編譯。
1991 年,由范羅蘇姆獨立開發的第一版 Python 編譯器發佈,後續的版本則由他和同事合作,但他仍是主要開發者和決策者,2018 年 7 月 12 日退休後,范羅蘇姆仍是 Python 社群的「終身仁慈獨裁者」(Benevolent Dictator For Life)。
至於為什麼叫 Python,是因為當時范羅蘇姆正好在看 BBC 的喜劇《Monty Python's Flying Circus》,他覺得要給自己的產品起一個簡短、獨特且略帶神秘感的名字,於是就用了帶有「蟒蛇」之意的 Python。
那麼 Python 到底好在哪裡?如果你去問掌握 Python 的人,對方可以給你列出無數條,太技術性的東西這裡也不多說了,但是我們前文提到 Python 簡單易懂的特點,還是可以從下圖這張與 Java 的對比圖中略窺一二,即使完全沒有基礎,相信你也能看懂這段程式碼。
正因為 Python 易學好懂,所以非常適合沒有學過程式語言的人員處理實驗數據甚至開發程式,他們並不關心電腦要怎麼實現這些運算,也不想把精力花在記憶體管理、並行處理等問題上,只要能又快又好地解決問題即可,而 Python 恰好可以滿足需求,用最簡單的方式調用各種函式、粘結不同的語言,所以很多人把 Python 稱為「膠水語言」。
而在學術界的廣泛使用,也造就了人工智慧熱潮湧現後 Python 的流行,因此人工智慧和 Python 應該算互為因果或互相成就的關係。
不過這裡有一個容易混淆的地方,很多培訓課程都會把 Python 和人工智慧劃等號,但其實不然,人工智慧是一個廣泛的概念,Python 涉及到的只是人工智慧中的深度學習,比如 Google 的 Tensorflow 就是支援 Python 的深度學習框架,下次再看到打著 AI 為名的課程,教你「 30 天 Python 入門」的廣告,就可以直接不用理他了。
人生苦短,我學 Python
正如前文所說,Python 的學習門檻較低,學習曲線非常平滑,所以流行起來後,它的使用也不再侷限於程式設計師,比如很多工作招聘需求上都會寫上「熟悉 Python 者優先」,全民學 Python 可能還是誇張了點,但你身邊總能找到一兩個學 Python 學到頭禿或掌握了新技能成就滿滿的人。
他們當中,有的目標非常明確。
「為了爬蟲啊。」某知名社群的行銷小范學 Python 的目標很實際,「進公司以後才發現有必要學一下 Python,不然老得麻煩別人寫爬蟲程式。」
會 C 語言和 Java 的 程式設計師阿峰,為了做數據挖掘,最近也自學了 Python。相比於自嘲已經把高等數學還給大學老師的小范,學習 Python 用阿峰的話來說,「只是語法的問題」。他可以熟練地列舉 Python 的各種好處:「資源太豐富了,你想學人工智慧,框架一堆一堆,多到你不知道用哪個好。」
「應該這麼說,大家都用 Python,可以說是生態環境決定了吧。你當然也可以用其他語言,不過這一大堆東西,你自己再學一遍,那不是多此一舉嗎?」阿峰總結道。
還有一些人,他們學 Python 並不指望用它解決實際的問題。
有些人學 Python 的初衷只是想對人工智慧有更好的理解:「追蹤人工智慧的發展,只瞭解大概原理是不夠的,學了 Python,起碼我能對那些研究成果到底達到什麼水準有具體的認知。」
抱有類似想法的還有在一家網路公司當產品經理的小韓:「我在一個技術為導向的行業裡做產品,學 Python 是必然的,更多的時候不一定是要自己親自上陣寫程式碼,而是要理解技術思維。」
「你不能提一個完全不符合技術邏輯的需求,會被嘲笑的。自己寫過程式碼,就能知道技術是怎麼理解和來完成一個需求的過程,你在寫產品檔案的時候更能站在技術角度來告訴他們:我要做什麼。這樣他們看和開發的時候效率也會更高,反覆理解和溝通也會減少。還有就是要清楚的明白技術有沒有在騙你,(你的需求)到底能不能做。」條理清晰地說完學 Python 的理由後,小韓又補充了一句:「另外就是我覺得自己寫程式碼,真的挺酷的。」
然而,有 1000 個學 Python 的理由,就有 1001 個放棄的理由,從入門到放棄,可能只要一節課。
一個「難」字,就能勸退無數理科小白。雖說 Python 在程式語言中已經是難度相對低的,但也並不是毫無門檻,「從語法規則上說,它非常簡單,至少比日常語言要簡單得多;難處在於它要處理的對象、對現實事物的抽象,是數學式的思考方式。」接觸過 BASIC 和 HTML 的邱姓編輯說。
也就是說,如果你連高中的函式都沒學好,恐怕就會陷入「道理我都懂,可我還是不知道怎麼寫」的絕望中。
「我就上了個 Django 框架課,搞了個伺服器,」自稱「數學絕緣體」的 Sasa 跟我吐槽 Python 根本就沒有人們說的那麼簡單,「它真的勸退我,實在搞不懂。然後我去看了Youtube上的教學影片,我真的不明白,為什麼有用 Python 排版 PPT 的教程?我用 Office 不好嗎?到底為什麼要學啊?」這連環三問,竟問得我無話可說。
就算你的數學不錯,也很難保證每天在工作之餘仍有精力和毅力與枯燥的教程周旋。前面跟我說著覺得寫程式碼很酷的小韓,跟我說他暫時放棄了,「看到一半,最近太忙,沒時間了。」
總結
我們採訪的幾位學習者,或多或少所在行業都與 Internet 或科技相關,那麼如果生活中完全沒有數據分析、爬蟲等需求,要不要為了看起虛無飄渺的「編輯思維」學習 Python 呢?
有人說現在的 Python 很像十幾年前的英語,如雨後春筍般冒出的培訓班、「未來人才必須掌握的基本技能」的論調、從娃娃抓起的焦慮,都和當年如出一轍,就連賣點都一模一樣:考試加分,升職加薪。
但這只是表象,如果從實際意義或未來前景來看,我覺得應該把 Python 看作當年的電腦操作技能,也就是會不會用電腦。如今用電腦處理檔案、剪輯影片、上網、看影片等已是我們習以為常的操作,你不需要懂得電腦的運作原理,也能將自己掌握的知識借助電腦得到應用,未來 Python 或許扮演的是類似的角色,成為一種基礎設施。
總之不必過於神化 Python,多一門技能當然沒有壞處,不會,也不見得就被時代拋棄,但你要指望學了 Python 就能像網路上宣傳的那樣「改變人生」的話,那就純粹是想多了。
- 本文授權轉載自:ifanr
請注意!留言要自負法律責任,相關案例層出不窮,請慎重發文!