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