可能你曾經(jīng)質(zhì)疑過PHP 不是已經(jīng)完蛋了嗎?市面上已經(jīng)出現(xiàn)了很多“更好”的編程語言,不是嗎?
答案顯然是否定的,否則 PHP 早就消失在人們的視野當(dāng)中、還被踩上一萬只腳。要找到背后的根源,我們恐怕先要弄清楚所謂“更好”的語言究竟是什么意思。
如果大家還不理解 PHP 為什么仍然活蹦亂跳,那我們可能得從編程、程序員、市場以及技術(shù)大眾化等問題說起。是的,真正的原因在這里,而非代碼、函數(shù)或者語法。

曾幾何時(shí),罵 PHP 代表一種潮流
要想在如今的編碼工程領(lǐng)域選定隊(duì)伍、站穩(wěn)陣營,大家首先得把除領(lǐng)導(dǎo)指定語言之外的一切競爭性編程語言先痛罵一遍。這跟功能特性無關(guān),而是業(yè)務(wù)文化的直接體現(xiàn)。換言之,這樣的情景常讓人想起入教儀式。
程序員們是一群固執(zhí)己見的家伙,包括我在內(nèi),我們都很囂張、喜歡抨擊一切自己不用或者不喜歡的語言。大家肯定都聽到過工程師說“Java 太爛了,C#就是坨垃圾、啥也不是。”這里具體在說什么語言并不重要,只要能博大家一笑就行。
但肆意痛斥的背后還隱藏著一種更深層次的不屑,這一點(diǎn)在最近的 PHP 與 Python 之爭中體現(xiàn)得尤其明顯。在很多學(xué)術(shù)人士看來,這就像是一場血腥的改朝換代、似乎有人想干掉 PHP 并用 Python 徹底取而代之。
不信大家可以上維基百科查一查,其中 LAMP 堆棧詞條中的“P”代表的是 Python。有意思吧,20 年前我剛接觸 LAMP 的時(shí)候,這個(gè)“P”可絕對指代的是 PHP——沒錯(cuò),既不是 Python 也不是 Perl。我不是說情況不能演進(jìn)轉(zhuǎn)變,但 Python 怎么就在不知不覺中替代了 PHP 的文化地位?這確實(shí)是個(gè)值得深思的問題。
對于大多數(shù)程序員來說,我們會在學(xué)校里學(xué)習(xí) Python 以及其他一些在現(xiàn)實(shí)場景中可能永遠(yuǎn)用不上的小眾語言。大家多少會聽到教授或者其他從業(yè)者說出“PHP 很爛”之類的話,但如果深究下去,我們會發(fā)現(xiàn)他們可能從來沒認(rèn)真寫過哪怕一行 PHP 代碼。
事實(shí)上,光是想想有人在全職寫 PHP 代碼都會讓我們心底一寒,如同親眼見到惡魔撒旦真的有忠實(shí)信徒一般。
這種對 PHP 的蔑視其實(shí)相當(dāng)合乎邏輯,甚至在程序員群體當(dāng)中形成了一種內(nèi)生性的共識。跟朋友們坐在星巴克享受下午時(shí)光,順便吐槽一下特朗普、流行搖滾還有 PHP,豈不美哉!
此外還有編程純粹主義者,他們愿意浪費(fèi)大量寶貴時(shí)間來論證 PHP 為什么真就那么爛。大多數(shù)爭論都圍繞著他們不喜歡的某些設(shè)計(jì)傾向或者細(xì)微差別展開,而且踩一捧一是這類交流中的常見伎倆了。語言嘛,必須得評出誰高誰低,畢竟紫金葫蘆都要分個(gè)公母呢。
可抱怨的也確實(shí)不少:PHP 是一門類型松散的語言,所以經(jīng)常孕育出糟糕的代碼。(但 JavaScript 和 Node.js 也一樣,怎么沒見大家有那么大怨氣?)PHP 的函數(shù)太多了。(沒錯(cuò),這樣太方便了,顯不出程序員的水平。)函數(shù)名稱不一致。(是的,當(dāng)一種語言真正實(shí)現(xiàn)了大眾化、而非被全部掌握在單獨(dú)一個(gè)計(jì)算機(jī)科學(xué)博士的手里時(shí),就會出現(xiàn)這樣的問題。)
咱們回歸正題,可以看到針對 PHP 的批評意見主要源自個(gè)人偏好或者對細(xì)節(jié)的挑三揀四。如果我們愿意,也完全可以在 Python、C#、Java、Go 或者 JavaScript 等其他語言里挑出類似的毛病。作為程序員,我們就是愛抱怨,抱怨讓我們快樂。
但程序員們喜歡抨擊 PHP 的真正原因,在于我們固有的傲慢態(tài)度與不斷膨脹的嫉妒心混合到了一起。
PHP 確實(shí)更容易使用
PHP 誕生于上世紀(jì)九十年代中期,歲數(shù)甚至比很多少壯派程序員還大。我是從 2000 年初開始接觸 PHP 的,當(dāng)時(shí)它剛剛從版本 4 過渡到版本 5。后來,我開始在自己編寫的 CodeIgniter ZendFramework 框架中編寫應(yīng)用程序。
在我看來,PHP 之所以能夠保持長青、多年過去仍無衰老跡象,主要原因就是它被嵌入到了全球各地的新舊應(yīng)用程序當(dāng)中、也被嵌入不分老少的開發(fā)者頭腦當(dāng)中。有些人用過幾年,也有些人用了幾十年,PHP 都在他們心中留下了深刻印象。開發(fā)者不會消失、編寫出的商業(yè)代碼也沒有消失,所以 PHP 依舊健在。而且有趣的是,Python 其實(shí)誕生于 1991 年,比 PHP 還要早。而且雖然生命周期更長,但 Python 一直沒能達(dá)到 PHP 目前的高度。
作為工程師,我們都喜歡用自己熟悉的東西,也習(xí)慣了對自己不了解的東西大加貶低。別不敢承認(rèn),咱們程序員就這毛病。
高校一直努力把 Python 定位成一種通用型商業(yè)語言——但它并不是。Python 更適合作為一種高端語言,專門用于運(yùn)行服務(wù)器、數(shù)據(jù)科學(xué)、處理大規(guī)模復(fù)雜數(shù)據(jù),甚至是處理加密貨幣采礦。這些才是它的專長。
而 PHP 則屬于大眾語言,也已經(jīng)成為萬維網(wǎng)上的客觀標(biāo)準(zhǔn)。
所以如果愿意,各位也可以繼續(xù)對 PHP 惡語相向,沒關(guān)系。但歸根結(jié)底,它仍是目前 Web 上使用范圍最廣的語言;而且隨著 WordPress 的持續(xù)增長以及 PHP 7 和 8 的持續(xù)升級,這種領(lǐng)導(dǎo)地位短期內(nèi)也絕不會被動搖。