誰會(huì)成為AI 和大數(shù)據(jù)時(shí)代的第一開發(fā)語言?這本已是一個(gè)不需要爭論的問題。如果說三年前,Matlab、Scala、R、Java 和 Python還各有機(jī)會(huì),局面尚且不清楚,那么三年之后,趨勢(shì)已經(jīng)非常明確了,特別是前兩天 Facebook 開源了 PyTorch 之后,Python 作為 AI 時(shí)代頭牌語言的位置基本確立,未來的懸念僅僅是誰能坐穩(wěn)第二把交椅。
不過聲音市場上還有一些雜音。最近一個(gè)有意學(xué)習(xí)數(shù)據(jù)科學(xué)的姑娘跟我說,她的一個(gè)朋友建議她從 Java 入手,因?yàn)?Hadoop 等大數(shù)據(jù)基礎(chǔ)設(shè)施是用 Java 寫的。無獨(dú)有偶, 上個(gè)月 IBM developerWorks 發(fā)表的一篇個(gè)人博客 ,用職位招聘網(wǎng)站indeed 上的數(shù)據(jù)做了一個(gè)統(tǒng)計(jì)。這篇文章本身算得上是客觀公正,實(shí)事求是,但傳到國內(nèi)來,就被一些評(píng)論者曲解了本意,說 Python 的優(yōu)勢(shì)地位尚未確立,鹿死誰手尚未可知,各位學(xué)習(xí)者不可盲目跟風(fēng)啊,千萬要多方押寶,繼續(xù)撒胡椒面不要停。
在這里我要明確表個(gè)態(tài),對(duì)于希望加入到 AI 和大數(shù)據(jù)行業(yè)的開發(fā)人員來說,把雞蛋放在 Python 這個(gè)籃子里不但是安全的,而且是必須的。或者換個(gè)方式說,如果你將來想在這個(gè)行業(yè)混,什么都不用想,先閉著眼睛把 Python 學(xué)會(huì)了。當(dāng)然,Python不是沒有它的問題和短處,你可以也應(yīng)該有另外一種甚至幾種語言與 Python 形成搭配,但是Python 將坐穩(wěn)數(shù)據(jù)分析和 AI 第一語言的位置,這一點(diǎn)毫無疑問。我甚至認(rèn)為,由于 Python 坐穩(wěn)了這個(gè)位置,由于這個(gè)行業(yè)未來需要大批的從業(yè)者,更由于Python正在迅速成為全球大中小學(xué)編程入門課程的首選教學(xué)語言,這種開源動(dòng)態(tài)腳本語言非常有機(jī)會(huì)在不久的將來成為第一種真正意義上的編程世界語。
討論編程語言的優(yōu)劣興衰一直被認(rèn)為是一個(gè)口水戰(zhàn)話題,被資深人士所不屑。但是我認(rèn)為這次 Python 的上位是一件大事。請(qǐng)?jiān)O(shè)想一下,如果十五年之后,所有40歲以下的知識(shí)工作者,無分中外,從醫(yī)生到建筑工程師,從辦公室秘書到電影導(dǎo)演,從作曲家到銷售,都能使用同一種編程語言進(jìn)行基本的數(shù)據(jù)處理,調(diào)用云上的人工智能 API,操縱智能機(jī)器人,進(jìn)而相互溝通想法,那么這一普遍編程的協(xié)作網(wǎng)絡(luò),其意義將遠(yuǎn)遠(yuǎn)超越任何編程語言之爭。目前看來,Python 最有希望擔(dān)任這個(gè)角色。
Python 的勝出令人意外,因?yàn)樗秉c(diǎn)很明顯。它語法上自成一派,讓很多老手感到不習(xí)慣;“裸” Python 的速度很慢,在不同的任務(wù)上比C 語言大約慢數(shù)十倍到數(shù)千倍不等;由于全局解釋器鎖(GIL)的限制,單個(gè)Python 程序無法在多核上并發(fā)執(zhí)行;Python 2 和 Python 3 兩個(gè)版本長期并行,很多模塊需要同時(shí)維護(hù)兩個(gè)不同的版本,給開發(fā)者選擇帶來了很多不必要的混亂和麻煩;由于不受任何一家公司的控制,一直以來也沒有一個(gè)技術(shù)巨頭肯死挺 Python ,所以相對(duì)于 Python 的應(yīng)用之廣泛,其核心基礎(chǔ)設(shè)施所得到的投入和支持其實(shí)是非常薄弱的。直到今天,26歲的Python 都還沒有一個(gè)官方標(biāo)配的 JIT 編譯器,相比之下, Java 語言在其發(fā)布之后頭三年內(nèi)就獲得了標(biāo)配 JIT 。