PHP 還有未來么,還是 25 歲就「壽終正寢」了?

2020年11月24日16:56:08 科技 1722

PHP 還有未來么,還是 25 歲就「壽終正寢」了? - 天天要聞

作者 | BEN JAMES

譯者 | Arvin,責編 | 夕顏

出品 | CSDN(ID:CSDNnews)

1995年6月,拉斯穆斯·勒多夫(Rasmus Lerdorf)在Usenet小組中發布了一則如下公告。公告至今還在,隨時可以閱讀。

公告:

正式發布個人主頁工具(PHP工具)1.0版本。

這些工具是一組用C編寫的小巧緊湊的cgi二進位文件。

今天,25年過去了,PHP已經幾乎無處不在。我敢打賭,對於本文的大多數讀者來說,他們對Web編程的首次嘗試均涉及PHP。

但是,無論PHP擁有多麼豐富的歷史和廣泛的用戶基礎,都沒有理由在一個快速發展的領域中使用這門語言。雖然PHP將不可避免地在現有的應用程序中出現數年,但它在新站點中還會有未來嗎?

在展望未來之前,我們必須首先研究PHP在過去是如何發展的。

發端

Rasmus Lerdorf最初創建PHP是為了追蹤瀏覽過他在線簡歷的用戶。當源代碼發布後,代碼庫被大量重寫,PHP就開始流行起來。據報道,到1998年,有1%的域名安裝了PHP。那時的PHP完全寫在標記中,語法明顯不同於現代版本。

Zeev Suraski和Andi Gutmans嘗試用PHP建立業務,但發現它在功能上很匱乏。他們與Rasmus合作,PHP再次被重寫並發布了PHP 3.0版本。當時事情有了一些進展,預計有10%的域安裝了PHP 3。這也是PHP的含義從「個人主頁」變成人人喜愛的遞歸縮寫詞「PHP: Hypertext Preprocessor」的轉折點。這個版本和時期通常被視為PHP鞏固地位的時期。在PHP 3和4過渡時期,phpMyAdmin被創建。Zeev和Andi將他們的名字組合在一起,創建了PHP服務公司Zend,古老的大象徽標誕生。

剩下的就是經典的歷史了:PHP 4發布後不久,Drupal出世。2003年出現了WordPress,2004年,哈佛大學一位名叫Mark的學生(FB創始人)聲名大噪。

FACEBOOK和PHP

Facebook是著名的PHP網站。但是,當成千上萬的用戶變成數以百萬計,數以百萬計的用戶向數十億用戶擴張時,就出現了成長的煩惱。

特別是,PHP過去是(現在仍然是)一種腳本語言。對於開發人員的生產率來說很好,但對於資源效率來說卻不然。因此,在2008年,Facebook開始從事HipHop for PHP(一種編譯器)的工作。很簡單,它解析PHP,將其編譯為C ++,然後將生成的C ++編譯為x64。鑒於PHP是弱類型且動態的,這不是什麼了不起的壯舉。但是結果不言而喻:CPU負載減少了50%。

PHP 還有未來么,還是 25 歲就「壽終正寢」了? - 天天要聞

我敢肯定,可以想像如果你 是Facebook的一名開發人員,使用這個程序會多麼可怕。對PHP代碼進行更改,運行解釋器,然後運行編譯器,再運行可執行文件,發現問題後返回修復。那是一個相當長的迭代周期,這就是為什麼Facebook還開發了HPHPi,這是一種解釋器,可以完成與解析器和編譯器 (HPHPc)相同的工作,但只是用於開發。可以想像,讓這兩個項目保持同步是件非常頭疼的事,因此在2011年,他們開發了HHVM(HipHop虛擬機)。

HHVM是一種PHP運行時。它使用JIT(即時編譯)來提供兩全其美的方法。這非常酷,如果你有興趣,可以在Facebook自己的博客文章中閱讀更多內容。

下一個重大進展是在2014年,出現了一種專門為HHVM構建的語言Hack。它既是PHP的超集又是其子集,添加了可選的類型注釋和諸如非同步架構之類的附加功能。它還幫助HHVM的JIT更加高效,因為它可以通過使用指定的類型提示使HHVM的JIT放心地進行優化。很快,Facebook上的新代碼開始用Hack編寫,在往後的時間裡也把現有代碼向Hack轉化。Hack和HHVM都是開源的,現在都在積極維護。

Facebook發現原生形式的PHP無法大規模擴展的事實,是否意味著它是一種設計拙劣的語言?不,我不這麼認為。我不認為當時存在的選項是針對Facebook所需的規模或細節創建的。但是,這並不能阻止人們用PHP構建Facebook。

PHP的仇恨者

在廣闊的軟體社區中,隨著PHP的發展壯大,它不可避免地引來了越來越多的憤世嫉俗者的攻擊。不過,客觀地講,PHP比大多數其他語言更令人討厭。根據最近的2020 Stack Overflow開發者調查,PHP在最可怕的語言中排名第六。為什麼?

我不想在這裡討論技術細節,如果你感興趣,可以看看《PHP:糟糕設計的化身》,這篇文章簡直被PHP仇恨者奉為聖經。這篇博客寫於2012年,其所提及的一些問題此後已得到解決,但許多問題尚未得到解決。(例如:為什麼在2020年仍沒有本地非同步支持?)

我認為PHP在語言哲學上的問題更大。這是一個用複雜方式實現的用於相當狹窄領域的工具。在理想情況下,如果應用程序必須是複雜的,那麼開發人員應該在用戶代中看到複雜性,而不是語言本身。你不需要用一個複雜的工具來創建複雜的項目。當我說PHP很複雜時,我並不是說它對初學者來說很難使用(事實上恰恰相反),我是說它有不一致的命名約定和許多非常具體的函數,這兩者都很容易產生錯誤,直到運行時這些錯誤才會暴露出來。但是,這些僅僅是PHP時代的屬性嗎?雖然這可能是一個因素,但肯定不是大家討厭它的原因。畢竟,Python創建於1989年,比PHP早6年,在Stack Overflow 調查中,它在最受喜愛的語言中排名第三,也是當今增長最快的語言之一。

PHP 還有未來么,還是 25 歲就「壽終正寢」了? - 天天要聞

Stack Overflow 2020調查:最可怕語言

當談到安全性時,關於PHP站點上超過平均水平的漏洞數量,是該語言的錯誤還是站點開發人員的錯誤,存在一些爭論。

一方面,為了吸引包括非程序員在內的廣泛人群而設計的編程語言,不管語言本身有什麼優點,這些人用幾十年前的教程編寫的代碼組合在一起創建網站,這種編程語言總是會遇到問題。另一方面, PHP試圖以令人費解的方式修復基本的安全問題,例如先用escape_string()修復SQL注入,然後通過添加real_escape_string()修復漏洞,再添加addslashes()、mysql_escape_string()、pg_escape_string()等等。將此添加到其複雜的錯誤/異常處理(是的,錯誤和異常是不同的)中,如果不熟悉語言的細微差別,那麼很容易出錯。運行過時、不受支持的PHP版本的站點數量的數量還將以驚人的速度繼續增長,因此在未來幾年裡,PHP站點仍將是黑客唾手可得的目標。

儘管如此,我不認為這門語言存在的問題有人們所說的那麼嚴重。儘管人們對PHP的抱怨有合理的理由,但在我看來,大部分的污名都是因為它很受歡迎而遭受的嫉妒,而不是什麼個人原因。

未來

本人深知在地址欄中使用post.php的頁面輸入對這門語言的評論,是很有諷刺意味的。但這與現有的網站無關。我認為即使是最熱心的用戶也不會建議我們重寫所有使用PHP創建的網站。問題是,在2020年,如果我想創建一個新網站,我應該考慮使用PHP嗎?

PHP 還有未來么,還是 25 歲就「壽終正寢」了? - 天天要聞

毫無疑問,當前的web開發趨勢正在為單頁面應用程序設定一個方向——在這種應用程序中,你的瀏覽器永遠不會重新載入,但是導航是通過Javascript使用API調用(例如:瀏覽GitHub或Google Drive)得來的數據重新呈現頁面來實現的,這樣的調用快得像閃電一樣。Javascript庫、框架和工具在瀏覽器中構建反應式和高性能應用程序的生態系統不斷增長,其中React和Vue最受歡迎。

歸根結底,PHP是用於伺服器端呈現的。這對大多數網站來說是不錯的,也是大多數網站的最佳選擇。但是如果你要在2020年建造新的產品,你必須接受這一點將帶來的限制。雖然PHP風格的伺服器端渲染還沒有死(大家是不是都忘了SEO了?),但是現代的網站很可能是同構的,也就是說,能夠在伺服器和客戶端渲染相同的Javascript,使用諸如Next.js(用於React)或Nuxt.js(用於Vue)等框架,能夠將PHP從伺服器端清除。

但是我們不能忽視PHP也在不斷發展的事實。Laravel自詡為「web工匠的PHP框架」,它提供了一種MVC架構,用於安全快速地創建PHP應用程序。受到社會的高度重視,它的發展積極迅速。此外,PHP 8也在今年8月推出,帶來一大堆新特性(其中許多特性和Facebook章節中介紹的類似),比如JIT、Union類型和改進的錯誤。

最後,祝PHP 25歲生日快樂,雖然PHP古怪得很,將來很長時間也將保持這份怪異。你給了很多人力量,並在web的崛起中發揮了關鍵作用。但是,如果人們到別處尋找未來,你也不要太沮喪,畢竟現在都2020年了。

本文為CSDN翻譯文章,轉載請註明出處。

https://hackaday.com/2020/06/29/does-php-have-a-future-or-are-twenty-five-years-enough/

科技分類資訊推薦

「英偉達已向中國三家企業通報」 - 天天要聞

「英偉達已向中國三家企業通報」

據台灣《工商時報》網站5月3日報道,在針對中國市場的H20晶元遭美國政府禁售後,美國晶元大廠英偉達正加緊開發另一款符合美國出口規定的人工智慧(AI)晶元,以繼續保住其在中國的市場份額。
金舟投屏文件輸出目錄設置方法 - 天天要聞

金舟投屏文件輸出目錄設置方法

金舟投屏文件輸出目錄怎麼設置?跟著我來操作。1、 打開金舟投屏應用2、 在金舟投屏窗口,點擊菜單按鈕。3、 在彈出的下拉菜單中,選擇設置選項。4、 進入設置窗口後,選擇點擊文件選項。5、 在文件窗口裡,點擊輸出目錄按鈕,於彈出窗口選擇文件輸出路徑,例如:D:文件保存金舟投屏。6、 點擊關閉即可完成操作(9777180)...
E-鑽文件加密大師:輕鬆加密文件保護數據安全 - 天天要聞

E-鑽文件加密大師:輕鬆加密文件保護數據安全

對電腦文件加密,能保護個人隱私與商業機密,提升重要文件安全性。1、 把重要文件放入一個文件夾,進行加密保護。2、 開啟E-鑽文件加密大師;3、 點擊加密按鈕,選擇要加密的文件夾,然後單擊確定。4、 選擇加密強度與模式;5、 請再次輸入密碼,然後點擊確認。6、 點擊加密文件,輸入密碼後即可打開。(9777179)...
Win7文件夾加密方法大全 - 天天要聞

Win7文件夾加密方法大全

如今,隱私的重要性日益凸顯。每個人都有自己的隱私,特別是在電腦中存儲了大量個人文件,其中一些是不想讓他人看到的重要資料。因此,我們需要為文件夾採取適當的保護措施。加密文件夾是最常用的方式之一,而加密方法多種多樣。這次我們將分享一種簡單易行的加密技巧,供大家參考使用。1、 在百度搜索強傑隱身俠下載,下載...
隱身俠的軟硬體區別 - 天天要聞

隱身俠的軟硬體區別

隱身俠是保障信息安全的利器,可用於保護和備份電腦、U盤、移動硬碟及加密雲盤中的重要文件與私密數據。它能有效防範因設備維修、丟失、被入侵或外借等情況導致的信息泄露或數據丟失風險,助您掌控信息資產,提升工作效率。此外,U型隱身俠還兼具普通U盤的存儲功能。1、 從使用方式來看,硬體版需將購入的隱身俠硬體PCKII插...
文件夾加密秘籍:使用加密軟體保護數據安全 - 天天要聞

文件夾加密秘籍:使用加密軟體保護數據安全

接下來,小編將1、 下載並安裝隱身俠應用查看2、 打開瀏覽器,搜索隱身俠,下載並安裝軟體,操作簡單,所示。3、 雙擊圖標開啟隱身俠4、 安裝軟體後,會提示重啟電腦,請重啟後再啟動隱身俠以使其生效,所示。5、 登錄賬號(若無賬號,註冊一個即可)。6、 請輸入賬號與密碼,參照下圖。7、 創建新的保險箱8、 登錄後,點擊...
隱身俠操作指南:簡單易懂的使用方法 - 天天要聞

隱身俠操作指南:簡單易懂的使用方法

隱身俠是一款保護電腦和移動存儲設備中重要文件與隱私信息的新一代信息安全產品。它能輕鬆加密硬碟、U盤等存儲設備中的數據,已通過多項權威認證。產品外形酷似小型U盤,不僅可作為普通U盤使用,還能充當電腦信息安全的防護工具,簡單易用,一分鐘學會操作,是保障個人電腦隱私安全的理想選擇。1、 首次設置使用2、 平常操...
金舟截圖軟體圖片輸出格式設置方法 - 天天要聞

金舟截圖軟體圖片輸出格式設置方法

1、 在右側彈出欄中,點擊程序設置選項。2、 在程序設置窗口,點擊圖片輸出格式按鈕,於彈出選項中選擇所需格式,例如JPEG。3、 點擊確定按鈕即可完成操作(9777181)...
解決Win10系統下隱身俠無法安裝的問題 - 天天要聞

解決Win10系統下隱身俠無法安裝的問題

隱身俠——您的信息保密專家。它能有效保護電腦、U盤、移動硬碟以及加密雲盤中的關鍵文件和機密數據,防範因設備維修、丟失、被盜用或黑客攻擊導致的信息泄露與損失風險,助您牢牢掌控核心資源,讓工作與生活更加安心無憂。此外,隱身俠本身也可作為普通U盤使用,兼具實用性與安全性。1、 請檢查您的Win10系統是否已啟用本...
新增旁路供電功能,一加 13 手機獲 ColorOS 15.0.0.821 升級 - 天天要聞

新增旁路供電功能,一加 13 手機獲 ColorOS 15.0.0.821 升級

IT之家 5 月 4 日消息,據IT之家讀者投稿,一加 13 手機現已獲推 PJZ110_15.0.0.821(CN01)版本更新,相應包體積為 1.62 GB,主要為手機帶來了旁路供電功能。旁路供電技術即手機直接由外部電源供電,此時電池則處於閑置狀態,既不充電也不放電,因此可以減少手機發熱,同時可以減少不必要的充放電循環,有助於延長電池的使...