PHP 真的不行了?透過 PHP 的前世今生看真相

Yxh_blogs發表於2024-07-04

大家好,我是碼農先森。

1994年我出生在湖南的農村,就在同年加拿大的拉斯姆斯·勒多夫創造了 PHP,這時的 PHP 還只是用 Perl 編寫的 CGI 指令碼。或許是時間的巧合 PHP 變成了我後半生謀生的手段,當時拉斯姆斯·勒多夫寫這些指令碼的目的,只是為了統計自己網站的訪問者。就是這樣一個簡單的目的就誕生了「世界上最好的語言 PHP」,偉大的事業往往是最簡單的開始。這些用 Perl 編寫的 CGI 指令碼,可以認為是 PHP 的雛形,亦或是稱為 PHP 的第一個版本「PHP1.0」也不為過。

據說下面這段程式碼是 PHP 第一個版本,不知大家有沒有似曾相似的感覺。

<!--include /text/header.html-->

<!--getenv HTTP_USER_AGENT-->
<!--ifsubstr $exec_result Mozilla-->
  Hey, you are using Netscape!<p>
<!--endif-->

<!--sql database select * from table where user='$username'-->
<!--ifless $numentries 1-->
  Sorry, that record does not exist<p>
<!--endif exit-->
  Welcome <!--$user-->!<p>
  You have <!--$index:0--> credits left in your account.<p>

<!--include /text/footer.html-->

也就在這一年,網景公司(Netscape)釋出了 Navigator 瀏覽器0.9版,這是歷史上第一個比較成熟的網路瀏覽器,一經發布則轟動業界,成熟的網路瀏覽器為 PHP 的快速發展提供了天然的優質土壤。

次年,拉斯姆斯·勒多夫釋出了 PHP2.0 這個版本它不僅可以訪問資料庫,還能嵌入 HTML 中動態處理資料。新的特性吸引了一批 PHP 的愛好者,其中也包括了後來加入到了 PHP 核心開發組的 Zeev Suraski(澤埃夫·蘇拉斯基)和 Andi Gutmans(安迪·古曼茲),著名的「Zend VM 引擎」便是由這兩名開發者所主導開發的。

時間來到了1998年底,中國的即時通訊也在這時開始崛起,最典型的就是 OICQ 也就是 QQ 的前身。這時的 PHP3.0 官方版本也正式釋出,這個版本最強的特性是它的可擴充套件模組,這點吸引了大量的業餘開發者提交了新的擴充套件,這同時為 PHP 生態的發展埋下了深深的根基,以至於後續出現的 Swoole 非同步通訊擴充套件也是得福於此。

兩年之後,在千禧之年「2000年」這也是網際網路泡沫剛剛破滅的第一年。PHP4.0 釋出了,這個版本首次推出了由 C 語言編寫的 Zend VM 虛擬機器引擎,新程式的執行效能相較於之前提升了近十倍。此外,語法上還引入了類和物件的支援,這便是物件導向特性的最初模樣。

在國內非典還盛行的時期「2003年」,一個基於 PHP 開發的開源內容管理系統 WordPress v1.0 正式釋出,一經發布就得到廣大開發者的喜愛,讓搭建網站部落格的門檻極大的減低。根據目前最新統計,WordPress 的市場份額持續增長,已達到驚人的 46%,成為全球最流行的 CMS。這意味著在網際網路上,大約有一半的網站都是使用 WordPress 建立的。可想而知看現有的資料就可以推測出當時的 WordPress 熱度高漲,這也同時推動了 PHP 的廣泛傳播。還記得有次改寫 WordPress 的原始碼,習慣了物件導向程式設計的我,在程序導向的原始碼面前彷彿被烏雲籠罩,久久無法下手,不知 PHPer 有沒有同感?

非典剛剛結束的次年「2004年」,新時代的 PHP5.0 正式釋出,這是一個 PHP 跨時代的到來。並且之後多年裡 PHP 一直在 v5 的版本上迭代,是 PHP 發展史上歷時最長的一個大版本,這個版本里全面引入了物件導向特性,並且將 Zend VM 虛擬引擎升級到了第二代,使其效能得到顯著的提升。

在 PHP5 釋出的第三年「2006年」,國產 PHP 開發框架 ThinkPHP 誕生「當時的框架原名還是 FCS」,ThinkPHP 的釋出惠及了國內大量的 PHP 開發者。其中我的處女專案就是用的 ThinkPHP3.2 開發的,相信有很多的 PHPer 也和我一樣,吃到了這個國產框架的紅利。但也是由於國產框架的推出,讓 PHP 開發專案的門檻進一步的減低,吸引了大量非科班專業的人轉行從事 PHP 開發,從而也造成了如今 PHP 開發者的技術水平層次不齊的局面。

PHP 長期以來的應用場景都是聚焦於 CMS 內容網站的建設,以至於在非同步通訊領域無所建樹。直到 2012 年 Swoole 開始釋出第一個版本,雖說剛開始的 Swoole 並不完美,但也填補了 PHP 在非同步網路通訊領域的空白。同時讓 PHP 也能在實時通訊、物聯網通訊、遊戲開發等領域大展拳腳,在 PHP 的發展上做到了錦上添花。就在同年 Go 語言正式的第一個版本 v1.0 橫空出世,標誌著 Go 語言正式走向成熟,在往後的多年裡一直備受程式設計界的強烈關注。Go 語言以高效能而聞名於世,而 PHP 在高效能方面存在著明顯的短板,這也為多年以後 PHPer 轉型 Go 語言而埋下了伏筆。

PHP 經過在 v5 版本上長達十多年的迭代,終於在2015年底正式釋出了 PHP7,這是 PHP 一次質的飛躍。大家都知道改革開放對中國的經濟產生了重大的影響,同樣 PHP7 在 PHP 的發展史上也是產生了同等級別影響。同時讓我們值得驕傲的是中國新浪微博工程師惠新辰「俗稱鳥哥」,也是唯一的一名中國人成為了 PHP7 的核心發起人之一。PHP7 的問世讓新浪微博系統的效能也得到了大幅度的提升,其實新浪微博平臺第一代架構採用的是 LAMP 架構,後臺系統的開發語言使用的是 PHP,此外還有很多平臺最開始使用的也是 PHP 進行開發的,比如臉書FaceBook、阿里巴巴的淘寶、百度、騰訊等,這一點也足以證明 PHP 當時的火爆程度。

當我們還在受新冠疫情的困擾,每天核酸不斷。而 PHP8 已在2020年底悄然釋出,作為一個大版本的更新。其最大的亮點是引入了 JIT 編譯技術,該技術能夠在 PHP 程式碼執行時編譯成機器碼,而不是每次執行時都需要解釋執行。JIT 編譯技術提高了程式碼的執行效率,使得 PHP 執行更快,效能提升尤其顯著,大幅度改善了 PHP 的執行效能。簡而言之,PHP8 為 PHP 生態系統注入了強勁的動力。

現如今雖說疫情已經離我們遠去,但疫情對全球經濟影響仍在持續,加上某些國家的區域性動盪,導致了全球經濟的連續下滑。在這樣的大背景下,我們所處的網際網路行業也不容樂觀,國內網際網路公司裁員風波肆起,這也間接導致了程式設計師之間的內卷加劇。經濟好比是一塊蛋糕,經濟萎靡不振蛋糕則會越來越小。程式設計師無法外展,那麼只能內卷,更何況 PHP 一直處於被鄙視鏈的邊緣,很多做 Java、C/C++、Go 等語言的就自認為更高階技術更牛,隨著被其他語言的擠兌歧視,這也讓長期只從事 PHP 開發的程式設計師被迫淘汰出局。我想這便是,如今被人認為 PHP 沒落的真實原因吧?

幻想一下,如果回到疫情之前,世界經濟持續高漲。國內的網際網路行業也還是如火如荼,中小企業也蓬勃發展、生機盎然,呈現著一片繁榮的景象。那我想必 PHP 還是會在程式語言排行榜上持續霸榜,不至於跌落到前十開外吧。從所周知很多國內外的知名大公司也是緣於 PHP 起步的,同時也讓 PHP 相關的從業者受益匪淺。從過往來看 PHP 對網際網路行業所帶來貢獻,也足以對得起網路上一直流行的稱號「PHP是世界上最好的語言」。

有次在 v2ex 社群上看到有位網友釋出了一個帖子,其主要內容是感謝 PHP 給他帶來的收益,讓他一個前端的切圖仔,也能上手使用 PHP 做後端開發,促使他接了很多的外包專案獲得了可觀的回報。但有人反駁說了,一個擰螺絲的打工仔,還感謝起扳手來了?但我想說的是如果連扳手都沒有,那你可能連擰螺絲的機會都沒有。縱觀 PHP 這些年的發展也是在逐漸的迎合開發者,有些語言出身就在羅馬「Go 語言出自谷歌的 C 語言之父」,而有些語言則在出身普通,勢必會帶來不一樣的成長路徑和結果。

時代造就了馬雲,同樣也成就了 PHP。PHP9 還在緊鑼密鼓的開發中,據說為了更好的效能,會引入類似 async/await 原生非同步程式設計的方式,這對於 PHP 來說將是一種前沿且高效的程式設計模式。最後,隨著世界經濟的逐步恢復,網際網路行業的不斷迭代創新。PHP 也會煥發新生若在其堅守易用性、靈活性之外,再加強在高效能方面的建樹,勢必會穩穩地屹立在 Web 開發之巔不可動搖。

眾人拾柴火焰高,PHP 程式設計師應該要抱團取暖勇度寒冬,努力推動 PHP 生態的建設。早日讓眾多唱衰「PHP不行了」的聲音消失殆盡,並重回巔峰時刻。

感謝大家閱讀,與君共勉。


歡迎關注、分享、點贊、收藏、在看,我是微信公眾號「碼農先森」作者。

相關文章