"This is the best language in the world."

PHP 走過的 25 年

與其他語言不同,PHP 是在 web 服務器中誕生的。它的優(yōu)點與面向請求、服務器端執(zhí)行緊密相關。

故事始于 1995 年。當時,Rasmus Lerdorf 使用 C 語言編寫了一個簡單的通用網關接口 二進制文件集,這是 PHP 的第一個化身。這個集合最初被用于跟蹤 Rasmus Lerdorf 在線簡歷的訪問數(shù)量,之后 Rasmus 將腳本套件命名為「Personal Home Page Tools」,簡寫為「PHP Tools」。



25 年說短不短,不過 PHP 的發(fā)明者 Rasmus Lerdorf 今年也才 51 歲。

1995 年 6 月 8 日,Rasmus 向公眾發(fā)布了 PHP Tools,這也是 PHP 誕生的標志性事件。

1996 年 4 月,Rasmus 重寫了一次代碼,推出了 PHP/FI,開始了 PHP 從工具套件向編程語言的真正演化。它包含對 DBM、mSQL 和 Postgres95 數(shù)據(jù)庫的內置支持,并支持 Cookie、用戶自定義函數(shù)等。1997 年 11 月,PHP/FI 2.0 發(fā)布。

1997 年 12 月,以色列理工學院的學生 Andi Gutmans 和 Zeev Suraski 為他們作為大學項目開發(fā)的電子商務應用程序尋找后端。他們發(fā)現(xiàn) PHP/FI 2.0 低效且缺少功能,于是開始完全重寫底層解釋器。他們聯(lián)系到 Rasmus,與之討論了實施方案和他們要重新開發(fā)的 PHP 的各個方面。



左:Andi Gutmans;右:Zeev Suraski。

1998 年 6 月,PHP 3.0 誕生。Zeev 和 Andi 重寫了解釋器并引入了一個新的擴展 API,該 API 大大簡化了社區(qū)貢獻新擴展的方式。頂峰時,PHP 3 安裝在互聯(lián)網大約 10% 的 Web 服務器上。

1999 年 1 月,Zeev 與 Andi 成立了 Zend 公司。該公司后來成為 PHP 的創(chuàng)新和開發(fā)源。它貢獻了核心改進,以及用戶包與框架和開發(fā)環(huán)境工具。

Zend 的成立為 PHP 的發(fā)展帶來了不小的變化。2000 年 5 月,PHP 4.0 發(fā)布。這一新版本帶有 Andi 和 Zeev 開發(fā)的全新「Zend 引擎」核心。除了性能得到顯著提升外,PHP 4 還添加了對更多 Web 服務器、HTTP 會話、輸出緩沖和多個新語言結構的支持。

2003 年,PHP 被用于開發(fā)博客軟件和內容管理系統(tǒng) WordPress。這一軟件一經發(fā)布即風靡全球,為 PHP 增加了大量人氣。時至今日,互聯(lián)網上超過三分之一的網站使用 WordPress。



WordPress:以 PHP 和 MySQL 為平臺的自由開源的博客軟件和內容管理系統(tǒng)。

2004 年,PHP 5.0 發(fā)布。在此期間,Dmitry 加入 Zend 并在 PHP 5 期間幫助開發(fā)了大多數(shù)核心 PHP 子系統(tǒng)。同年,F(xiàn)acebook.com 以簡單的服務器渲染 PHP 網站形式上線。

此時,PHP 已經非常流行了,因為它是第一批支持動態(tài)網頁的工具之一,而且 WordPress 為該語言添加了一些新功能,但這些也破壞了它的向后兼容性。

2005 年,開發(fā)團隊認為在 PHP 6 中支持 Unicode 將非常有趣,但這一版本完全失敗了。有人認為,這也是 PHP 將自己弄得「聲名狼藉」的主要原因之一。

為了這個失敗的版本,開發(fā)團隊浪費了大量的時間和精力。差不多十年之后,也就是 2015 年,PHP 團隊才開發(fā)出下一個成功的版本——PHP 7.0。在此期間,PHP 6 銷聲匿跡,但 PHP 5 的多個版本仍在使用并不斷更新。



PHP 7.0 是一次重大更新,包含新的 Zend Engine 3 、各種改進和新功能。它的速度是 PHP 5.6 版本的兩倍。但與此同時,這一版本也破壞了相當一部分向后兼容性。這些改變提高了 PHP 的入門門檻,引發(fā)了一部分用戶的不滿,但也有人為 PHP 語言性能的提升和社區(qū)的成長感到欣慰。

在之后的幾年里,PHP 7 又經過了幾次迭代。今年 5 月 14 日,這門語言發(fā)布了其最新版 7.4.6 版。今年 4 月,PHP 官方還公布了 PHP 8.0 版本的發(fā)布時間表。根據(jù)該時間表,PHP 8.0 的 Alpha 1 版本將于 2020 年 6 月 18 日放出。

在這 25 年的發(fā)展時間里,PHP 受到了褒貶不一的評價。有人認為,PHP 存在很多設計缺陷,開發(fā)者水平良莠不齊、安全性差。在 Stack OverFlow 的一項調查中,PHP 甚至被票選為最令人討厭的五種編程語言之一。但也有人認為,PHP 入門門檻低,非常適合 web 開發(fā),即使不是「世界上最好的語言」,也不至于受過多苛責。



愛 PHP 的三個理由

如果有人深愛著 PHP,那一定是因為以下三個原因。

第一, 狀態(tài)。每個網頁請求都是從一張完全空白的面板開始的。除了用以提供初始功能和生命支持的標準全局變量、函數(shù)和類之外,其命名空間和全局變量都是未初始化的。通過從已知狀態(tài)啟動每個請求,我們可以獲得一種故障隔離:如果請求 t 遇到了軟件缺陷并且失敗了,這個 bug 不會干擾后續(xù)請求 t+1 的運行。

當然,狀態(tài)也會存在于程序堆之外的其他地方,并且有可能破壞數(shù)據(jù)庫、內存緩存或者文件系統(tǒng)。但 PHP 與所有允許存在的可能環(huán)境分擔了該弱點。如果將請求之間彼此隔離,可以減少大多數(shù)程序缺陷的成本。

第二,并發(fā)。單個 Web 請求在單個 PHP 線程上運行。最初看來這像是一種愚蠢的限制。但由于程序是在 Web 服務器的語境中執(zhí)行的,就會有一個可用的自然并發(fā):Web 請求。異步的 CURL 到本地主機可提供一種 shared-nothing、copy-in/copy-out 的并行機制。實際上,與其他大部分通用語言所提供的鎖共享狀態(tài)方法相比,這種方法更加安全,并且對錯誤更具彈性。

最后,PHP 程序在請求級別運行意味著程序員工作流程是快速且高效的,并且隨著應用程序的更改一直保持較快的速度。許多語言都宣稱這一點,但是如果它們不為每個請求重置狀態(tài),主事件循環(huán)將和請求共享程序級狀態(tài),則它們幾乎總是需要一些啟動時間。

例如,對于一個典型的 Python 應用服務來說,debug 的周期大概像是「想一想」、「編輯」、「重啟服務器」、「發(fā)送測試請求」。即使重啟服務器僅需要幾秒,但人類大腦為了保持在這個狀態(tài)上,也會花費 15 到 30 秒的時間。

相比之下,PHP 的「想一想」、「編輯」、「重新加載頁面」的周期會讓開發(fā)者提高效率。對于一個漫長且復雜軟件項目來說,這將有效地提高生產力。

因此,即使不是 “世界上最好的語言”,PHP 也是一門優(yōu)秀、高效的編程語言。隨著時間的推移,我們可以期待 PHP 團隊能夠開發(fā)出更好的版本。

最后問一句:你覺得什么是世界上最好的語言?

參考鏈接:

https://www.jetbrains.com/zh-cn/lp/php-25/

https://slack.engineering/taking-php-seriously-cf7a60065329

1.《php是世界上最好的語言 世界上最好的編程語言,剛剛度過了25周歲生日》援引自互聯(lián)網,旨在傳遞更多網絡信息知識,僅代表作者本人觀點,與本網站無關,侵刪請聯(lián)系頁腳下方聯(lián)系方式。

2.《php是世界上最好的語言 世界上最好的編程語言,剛剛度過了25周歲生日》僅供讀者參考,本網站未對該內容進行證實,對其原創(chuàng)性、真實性、完整性、及時性不作任何保證。

3.文章轉載時請保留本站內容來源地址,http://f99ss.com/shehui/406956.html