PHP 20歲了:從玩具到巨頭
題圖來自: Steve Jurvetson via Flickr
實際上,當Lerdorf發布個人主頁工具(Personal Home Page Tools,即 PHP 名字的來源)的1.0版本時,那時的網路還是如此的年輕。直到那年的十一月份HTML 2.0還沒有公布,而且HTTP/1.0也是次年的五月份才出現。那時,NCSA HTTPd是使用最廣泛的網路伺服器,而網景的Navigator則是最流行的網路瀏覽器,八月份的時候,IE1.0才剛剛出現。換句話說,PHP的開端剛好撞上了瀏覽器戰爭的前夜。
早些時候,我們談論了一大堆關於PHP對網路發展的影響。回到那時候,當說到用於網路應用的伺服器端處理,我們的選擇是有限的。PHP滿足了我們對於一種工具的需求,這就是可以使得我們在網路上做一些動態的事情。它的實用的靈活性只受限於我們的想像力,PHP從那時起便與網路共同成長。現在,PHP佔據了網路語言的超過80%的份額,已經是成熟的腳本語言,特別適合解決網路問題。她獨一無二的血統講述了一個故事,實用高於理論,解決問題高於純正。
把我們鉤住的網路魔力
PHP一開始並不是一門編程語言,從她的設計就很明顯不是 -- 或者她本來就缺乏相關特性,正如那些貶低者指出的那樣。最初,她是作為一種API幫助網路開發者能夠接入底層的C語言封裝庫。第一個版本是一組小的CGI可執行程序,提供表單處理功能,可以訪問查詢參數和mSQL資料庫。而且她可以如此容易地處理一個網路應用的資料庫,證明了其在激發我們對於PHP的興趣和PHP後來的支配地位的關鍵作用。
到了第二版 -- 即 PHP/FI -- 資料庫的支持已經擴展到包括PostgreSQL、MySQL、Oracle、Sybase等等。她通過封裝他們的C語言庫來支持各種資料庫,將他們作為PHP庫的一部分。PHP/FI也封裝了GD庫,可以創建並管理GIF圖像。她可以作為一個Apache模塊運行,或者編譯進FastCGI支持,並且她引入的 PHP 編程語言支持變數、數組、語言結構和函數。對於那個時候大多數在網路這塊工作的人來說,PHP是我們一直在尋求的那款「膠水」。
當PHP吸納越來越多的編程語言功能,演變為第三版和之後的版本時,她從來沒有失去這種黏合的特性。通過倉庫如PECL(PHP Extension Community Library),PHP可以把各種庫都連在一起,將他們的函數引入到PHP層面。這種將組件結合在一起的能力,成為PHP之美的一個重要方面,使之不會受限於其源代碼上。
網路,一個碼農們的社區
PHP在網路發展上的持續影響並不局限於能用這種語言幹什麼。PHP如何完成工作,誰參與進來 -- 這些都是PHP傳奇中很重要的部分。
早在1997年,PHP的用戶群體開始形成。其中最早的是美國中西部PHP用戶組(後來叫做 Chiago PHP),並1997年二月份的時候舉行了第一次聚會。這是一個充滿生氣、飽含激情的開發者社區形成的開端,聚合成一種吸引力 -- 在網路上的一個小工具就可以幫助他們解決問題。PHP這種普遍存在的特性使得她成為網路開發一個很自然的選擇。在分享主導的世界裡,她開始盛行,而且低入的門檻對於許多早期的網路開發者來說是十分有吸引力的。
伴隨著社區的成長,為開發者帶來了一堆工具和資源。這一年是2000年,出現了PHP的一個轉折點,它見證了第一次PHP開發者大會,聚集了編程語言的核心開發者,他們在Tel Aviv見面,討論即將到來的4.0版本的發布。PHP擴展和應用倉庫(PEAR)也於2000年發起,它提供了高質量的用戶代碼包,依據標準和最佳操作。第一屆PHP大會PHP Kongress不久之後在德國舉行。PHPDeveloper.org也隨後上線,直到今天,這都是PHP社區里最權威的新聞資源。
這個社區的勢頭表明了接下來幾年裡PHP成長的關鍵所在。隨著網路開發產業的爆發,PHP也獲得發展。PHP開始為更多、更大的網站提供動力。越來越多的用戶群在世界各地開花。郵件列表、在線論壇、IRC、大會,以及如php[architect]、德國PHP雜誌、國際PHP雜誌等商業雜誌 -- PHP社區的活力在完成網路工作的方式上有極其重要的影響:共同地,開放地,倡導代碼共享。
然後,在10年前,PHP 5發布後不久,在網路發展史上一個有趣地事情發生了,它導致了PHP社區如何構建庫和應用的轉變:Ruby on Rails發布了。
框架的異軍突起
用於Ruby編程語言的Ruby on Rails框架在MVC(模型-視圖-控制)架構模型上獲得了不斷增長的焦點與關注。Mojavi PHP框架幾年前已經使用MVC模型了,但是Ruby on Rails的高明之處在於鞏固了MVC。框架引爆了PHP社區,並且框架已經改變了開發者構建PHP應用程序的方式。
許多重要的項目和發展已經發端,這歸功於PHP社區框架的生長。PHP框架互用性組織成立於2009年,致力於在框架間建立編碼標準,命名約定與最佳操作。編纂這些標準和操作幫助為開發者在使用成員項目的代碼時提供了越來越多的互用性軟體。互用性意味著每個框架可以拆分為組塊和獨立的庫,也可以作為整體的框架在一起使用。互用性帶來了另一個重要的里程碑:Composer項目於2011年誕生了。
從Node.js的NPM和Ruby的Bundler獲得靈感,Composer開闢了PHP應用開發的新紀元,創造了一次PHP「文藝復興」。它激發了包互用性、標準命名約定、編碼標準的採用、覆蓋測試的提升。它是任何現代PHP應用中的一個基本工具。
加速和創新的需要
如今,PHP社區有一個生機勃勃應用和庫的生態系統,有一些被廣泛安裝的PHP應用包括WordPress,Drupal,Joomla和MediaWiki。從小型的夫妻店站點到whitehouse.gov和Wikipeida,這些應用支撐了各種不同規模的業務的網站。在Alexa前十的站點中,有6個使用PHP,在一天內為數十億的頁面訪問提供服務。因此,PHP應用已成為需要加速的首選,並且許多創新也加入到PHP的核心來提升性能。
在2010年,Facebook公開了其用作PHP源對源的編譯器的HipHop,可以翻譯PHP代碼為C++代碼,並且編譯為一個單獨的可執行二進位應用。Facebook的規模和成長需要從標準互用的PHP代碼遷移到更快、最佳的可執行的代碼。儘管如此,由於PHP的易用和快速開發周期,Facebook還想繼續使用PHP。HipHop後來進化為HHVM,這是一個針對PHP的JIT(just-in-time)編譯基礎的執行引擎,其包含一個基於PHP的新的語言:Hack。
Facebook的創新以及其他的VM項目是在引擎水平上的比較,其引起了關於Zend引擎未來的討論。Zend引擎依然是PHP的內核和語言規範。在2014年,它創建了一個語言規範項目,「提供一個完整的,簡明的語句定義,和PHP語言的語義學」,使得對編譯器項目來說,創建互用的PHP實現成為可能。
下一個PHP的主要版本成為了激烈爭論的話題,他們提出了一個叫做phpng(下一代)的項目,來清理,重構,優化和改進PHP代碼基礎,這也展示了對實際應用的性能的實質提升。由於之前有一個未發布的PHP 6.0版本,因此在決定命名下一個主要版本叫做「PHP 7」後,就合併了phpng分支,並制定了開發PHP 7的計劃,以增加很多語言中擁有的功能,如scalar和返回類型提示。
隨著今天第一版PHP 7 alpha發布,基準檢測程序顯示她在許多方面與HHVM的一樣好或者擁有更好的性能,PHP正與現代網路開發需求保持一致的步伐。同樣地,PHP-FIG繼續創新和推動框架與庫的協作 -- 最近由於PSR-7的採納,這將會改變PHP項目處理HTTP的方式。用戶組、會議、公眾和如PHPMentoring.org這樣的佈道者繼續在PHP開發者社區提倡最好的操作、編碼標準和測試。
PHP從各個方面見證了網路的成熟,而且PHP自己也成熟了。曾經一個簡單的低級C語言庫的API封裝,PHP以她自己的方式,已經成為一個羽翼豐滿的編程語言。她的開發者社區是一個充滿生氣、樂於助人、在實用方面引以為傲,並且歡迎新人的地方。PHP已經經受了20年的考驗,而且目前在語言與社區里的活躍性,會保證她在接下來的幾年裡將會是一個密切相關的、積極有用的的語言。
在Rasmus Lerdorf的SunshinePHP的演講中,他回憶到,「我會想到我會在20年之後討論當初做的這個愚蠢的小項目嗎?沒有。」
這裡向Lerdorf和PHP社區的其他人致敬,感謝他們把這個「愚蠢的小項目」變成了一個如今網路上持久、強大的組件。
via: http://www.infoworld.com/article/2933858/php/php-at-20-from-pet-project-to-powerhouse.html
作者:Ben Ramsey 譯者:wi-cuckoo 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive