撰稿 | 如煙
出品 | 51CTO技術(shù)棧(微信號:blog51cto)
“PHP是世界上最好的語言”,已成為承載程序員黑色幽默的熱梗。這門有著三十年歷史的編程語言在web時(shí)代獨(dú)享高光,近些年也伴隨著“沒落”、“將亡”的論調(diào)艱難前行。
近日 GitHut 最新公布的數(shù)據(jù)顯示,開發(fā)者在 GitHub 提交的 PR 中,所使用語言為 PHP 的數(shù)量逐年下降。
圖片
圖片
細(xì)看圖表中的曲線不難發(fā)現(xiàn),過去 4 年,C、C++、Java、Ruby 的曲線都比 PHP 的平坦。因此有人直言:“2023 年,PHP 停滯不前”!
網(wǎng)友們的評論也是五花八門,有人并不看好PHP的發(fā)展:“很多系統(tǒng)已經(jīng)不再支持它,我認(rèn)為這很能說明問題”;還有人認(rèn)為PHP不會涼涼:“40% 的網(wǎng)站仍在使用 Wordpress,因此 PHP 仍將存在一段時(shí)間。”
PHP 陷入停滯的原因是什么?是否真的大勢已去,無法重現(xiàn)當(dāng)年風(fēng)采?
1、Web時(shí)代,得PHP得天下
PHP作為服務(wù)器端腳本語言的開山鼻祖,在2000年-2010年經(jīng)歷了最榮耀的十年,也確實(shí)稱得上是“世界上最好的語言”。
當(dāng)時(shí)包括淘寶、雅虎、搜狐在內(nèi)的80%的網(wǎng)站都用PHP開發(fā),如果聽說哪家互聯(lián)網(wǎng)公司的后臺不用PHP,都會覺得匪夷所思。
PHP應(yīng)Web而生,回顧互聯(lián)網(wǎng)的發(fā)展史,就不難理解PHP盛行的原因。
Web 1.0時(shí)代,互聯(lián)網(wǎng)內(nèi)容主要由網(wǎng)站自己生產(chǎn),用戶也只能通過桌面瀏覽器上網(wǎng)查看內(nèi)容,這個(gè)階段的業(yè)務(wù)形態(tài)比較簡單,單體應(yīng)用足以應(yīng)付,不存在高并發(fā)等性能問題。上手簡單、開發(fā)迅速的優(yōu)勢讓PHP變得炙手可熱。
進(jìn)入Web 2.0時(shí)代,隨著論壇、博客的出現(xiàn),用戶也能參與到內(nèi)容創(chuàng)建中來,導(dǎo)致網(wǎng)站服務(wù)器面臨前所未有的流量挑戰(zhàn)。此時(shí)的PHP顯得有些力不從心,但有大公司對其性能優(yōu)化的加持,如社交軟件Facebook推出了用于執(zhí)行PHP代碼的虛擬機(jī)HipHop VM,PHP的地位依然沒有被撼動(dòng)。
在這兩個(gè)黃金時(shí)代,PHP+MySQL的“黃金組合”造就了很多經(jīng)典的開源項(xiàng)目:WordPress、ecshop、Discuz! 等。
2、PHP走下“神壇”,優(yōu)勢變桎梏
徹底結(jié)束掉 PHP “黃金時(shí)代”的是移動(dòng)互聯(lián)網(wǎng)的到來。
在萬物成網(wǎng)的背景下,單體架構(gòu)已無法滿足復(fù)雜業(yè)務(wù)群高并發(fā)、高可用的系統(tǒng)需求,于是微服務(wù)應(yīng)運(yùn)而生。業(yè)務(wù)的多樣化、復(fù)雜化也觸碰到了PHP的瓶頸。一方面PHP的性能成了致命問題,另一方面其方便的機(jī)制因無法滿足新的場景需求,反倒成了桎梏。
微服務(wù)的出現(xiàn)對PHP有哪些影響呢?
一是微服務(wù)要輕量化,傳統(tǒng)的PHP架構(gòu)并不滿足要求。
二是服務(wù)要被多個(gè)業(yè)務(wù)端調(diào)用,運(yùn)行要足夠快;但PHP作為腳本語言,由于存在腳本解析消耗,運(yùn)行速度確實(shí)趕不上 java、C++ 等靜態(tài)語言。
三是為了滿足服務(wù)間的頻繁通信,通信協(xié)議必須高效,這樣一來很多公司傾向于使用RPC協(xié)議而非HTTP協(xié)議,但PHP架構(gòu)并不能很好地應(yīng)用RPC通信的優(yōu)勢。
四是微服務(wù)要有較為成熟的生態(tài)和框架支持,但Swoole的微服務(wù)生態(tài)并不成熟。
綜合來看,大部分公司進(jìn)行服務(wù)化時(shí),會選用主流靜態(tài)語言(java、C++ 以及后起之秀 golang 等)。PHP 的“C位”不保,更多用來開發(fā)中間的業(yè)務(wù)聚合系統(tǒng)來調(diào)用這些服務(wù)。
3、新版本的發(fā)布能讓PHP重回巔峰嗎?
為了適應(yīng)當(dāng)今的開發(fā)需求,PHP團(tuán)隊(duì)一直在努力推動(dòng)語言的現(xiàn)代化改進(jìn)。
近日,PHP 8.3 的推出,添加了“類常量顯式類型”、“只讀屬性深拷貝”,“以及對隨機(jī)性功能的補(bǔ)充”,這一系列的改進(jìn)不僅讓PHP更具競爭力,也使得它更適應(yīng)當(dāng)今復(fù)雜的應(yīng)用場景,但也許并不能帶PHP重現(xiàn)高光時(shí)刻。
主要原因來自編程語言生態(tài)系統(tǒng)中的重要角色——開發(fā)者群體。
PHP的“簡單、強(qiáng)大、實(shí)用”,可以讓開發(fā)人員專心面對業(yè)務(wù),但這樣卻不利于開發(fā)人員的成長。絕大部分的 PHPer 都是業(yè)務(wù)工程師,不了解設(shè)計(jì)模式、數(shù)據(jù)結(jié)構(gòu)、算法、計(jì)算機(jī)原理,無法勝任復(fù)雜的系統(tǒng)架構(gòu)。
有網(wǎng)友曾吐槽:PHP性能并非最大的問題,PHPer的水平才是合作過程中最讓人“咬牙切齒”的槽點(diǎn)。大多數(shù)PHPer寫了多年代碼也不會封裝,分不清變量類型,甚至連自己的代碼也講不明白。
這也許才是PHP 生態(tài)發(fā)展中最致命的因素。
新版本的推出雖然彌補(bǔ)了語言自身的短板,卻彌補(bǔ)不了生態(tài)中非語言部分的缺陷。既然 PHP 生態(tài)在解決復(fù)雜系統(tǒng)問題時(shí)不具備優(yōu)勢,公司就會選擇其它更具優(yōu)勢的語言,自此便形成循環(huán),PHP難回巔峰。
4、PHP尚能飯否?
語言沒有最好的,無論是PHP,GO,Java,都有自己的定位,而 PHP恰好是PC Web時(shí)代最適合快速開發(fā)Web站點(diǎn)的。
隨著技術(shù)的高速發(fā)展,新的編程語言、框架如雨后春筍般冒出,可能很快就會改變現(xiàn)有格局,但這并不意味著曾經(jīng)的王者就會永遠(yuǎn)地黯然失色。
首先,PHP目前依然是全球最流行的服務(wù)器端腳本語言之一。來自 W3Techs 的數(shù)據(jù)顯示,WordPress 在43%的網(wǎng)站上運(yùn)行,服務(wù)器端編程語言的網(wǎng)站中有 76.7% 都在使用 PHP。
其次,PHP對于處理Web請求和生成動(dòng)態(tài)內(nèi)容具有天然的優(yōu)勢,其簡單、靈活的特性,特別適合業(yè)務(wù)、系統(tǒng)相對簡單,無需服務(wù)化、對性能不敏感、需要快速迭代的場景,成為許多初創(chuàng)公司和中小企業(yè)的首選開發(fā)語言;另外,大公司在發(fā)展初期,大量項(xiàng)目都采用PHP作為核心語言,為了適應(yīng)業(yè)務(wù)的發(fā)展,會將單體項(xiàng)目中的某些核心功能拆解成服務(wù),單體項(xiàng)目調(diào)用后端服務(wù)接口,這種情況下,PHP 項(xiàng)目就成了粘合層。
最后,PHP有龐大的社區(qū)支持。社區(qū)的強(qiáng)大意味著有大量的開源工具、框架和庫可供選擇,同時(shí)也意味著問題的解決方案更容易獲得。
總之,PHP 在未來可預(yù)見的很長時(shí)期內(nèi)不會沒落,它會作為中小公司的快速原型語言和大公司的粘合層語言長期存在,迎來屬于它的“后黃金時(shí)代”。
參考鏈接:
https://www.reddit.com/r/programming/comments/18hgduc/github_says_php_is_the_most_stagnating_language/
https://zhuanlan.zhihu.com/p/667402970
https://www.zhihu.com/question/442641007/answer/1726044472
https://baijiahao.baidu.com/s?id=1783339298344382156