都2019年了,PHP還是世界上最好的語言嗎?

2020-12-20 量子位

曉查 乾明 發自 凹非寺量子位 報導 | 公眾號 QbitAI

當下,如果你打開搜尋引擎,搜索關鍵詞「PHP過時」,能找到714萬個相關結果。

這些結果之中,不乏有2016年、2018年的結果,說PHP已經過時了。

現已2019年,這個曾經自稱為「世界上最好的語言」PHP,情況如何?

一位名叫Brent的程式設計師小哥,寫了一篇博客文章,介紹了PHP在2019年的情況。

他說,現在的PHP每年都會積極開發新版本,從2004年發布PHP 5以來性能已經提升了兩到三倍。

而且,有很活躍的生態系統,裡面有各種各樣的框架、包和平臺。過去幾年,PHP也添了很多新功能,語言不斷發展等等。

他希望,大家都放棄偏見,重新認識下現在的PHP。

博客文章被po到HackerNews上之後,半天就有700多熱度,引起近400條討論。

有人表示,自己還是不喜歡PHP的代碼和架構,因為代碼很難看,還是圍繞著靜態方法構建的,不容易閱讀。

也有人給點了贊,說從生態系統、性能、語言本身上來看,PHP這幾年的發展的確不錯。

那麼,PHP現在到底怎樣呢?來一起看看。

PHP的性能:7.0版本提升兩到三倍

現在,PHP已經更新到了7.3版本,2019年底將會跟新7.4版本,之後會升級到8.0版本。

小哥表示,PHP5.0版本在2004年發布的時候,它的性能就已經達到了平均水平。在升級到7.0版本的時候,又從頭開始重寫了一遍核心部分,運行WordPress 5.0時,性能提升了兩到三倍。

在Web應用程式中,PHP與其他語言也有可比性,在某些情況下性能表現還更好。

雖然與C和Rust相比,PHP還是略遜一籌,但比Rails或Django要好得多,性能也比得上ExpressJS。

框架和生態系統:不僅僅是WordPress

在HackerNews的討論中,很多人都提到,因為WordPress的存在才讓PHP有了些存在感。

但小哥在博客中說,WordPress絕不能代表PHP當前的生態系統。

一般來說,PHP中有兩個主要的Web應用程式框架,分別是Symfony和Laravel。現在使用PHP做開發,基本上都會選擇其中的一個。

這兩個框架背後,都有一個龐大的包和產品生態系統,從管理面板和CRM到獨立軟體包,分析工具,支付集成等等。

雖然這些框架適用於實際開發,但如果只需要進行內容管理,WordPress和CraftCMS是更好的選擇,而且它們也會進一步改進。

此外,衡量PHP生態系統當前狀態的一種方法是看Packagist中的情況,這是PHP的主要軟體包的存儲庫。

PHP主要軟體包近年來已呈指數級增長,每天下載量達到2500萬次。這足以證明,PHP生態系統已經遠非昔日可比。

除了應用程式框架和CMS之外,過去幾年PHP中的異步框架也開始興起,比如Swoole、Amp和ReactPHP等等,都是用PHP或其他語言編寫的框架和伺服器,能夠讓用戶運行真正的異步PHP。

現在, PHP已經進入了異步世界,像WebSocket和具有大量輸入輸出的應用程式之類的東西,已經開始與PHP世界相關了。

語言本身

儘管async和await現在還不可用,但在過去的幾年裡,PHP語言本身已經做了很多改進。下面是一個不完全的PHP新特性列表:

短閉包Null合併運算符Traits代碼復用機制類型化屬性展開運算符JIT編譯器外部函數接口匿名類返回類型聲明現代加密庫生成器更多當談到PHP語言特性的時候,讓我們也來看看今天PHP語言是如何發展的。PHP有一個活躍的志願者核心團隊推動語言的發展,向社區徵求意見(RFC,Request for Comments)。

接下來,這些RFC在「內部」郵件列表中討論,也可以在線瀏覽。在添加新的功能之前,必須進行投票。只有至少佔2/3多數的RFC才被允許進入核心。

大約有100人允許參與投票。核心團隊的成員當然有權投票,因為他們必須維護代碼基礎。

除此之外,還有一群人是從PHP社區中單獨挑選出來的。這些人包括PHP文檔的維護者,整個PHP項目的貢獻者,以及PHP社區中傑出的開發人員。

雖然大部分核心開發是在自願的基礎上完成的,但是核心PHP開發人員之一Nikita Popov最近加入了軟體公司JetBrains,全職從事程式語言工作。

另一個例子是最近決定投資Zend框架的Linux基金會。像這樣的僱傭方式和收購確保了PHP未來發展的穩定性。

靜態分析工具

過去幾年裡,圍繞PHP本身的工具已經有所增加,比如由Vimeo開發的靜態分析工具Psalm等等。

這些工具能夠對你的PHP代碼進行靜態分析,並報告其中出現的錯誤以及可能會出現的錯誤。

儘管PHP還沒有被編譯,不允許使用自定義語法,但在某種程度上,它們提供的功能能夠媲美TypeScript。

這意味著,現在的PHP開發者要依賴文檔塊。但PHP的原始創建者Rasmus Lerdorf,已經明確提到了要在內核中添加靜態分析引擎。這一想法的潛力很大,但任務同樣艱巨。

在傳輸方面,受到JavaScript社區的啟發,PHP開發者社區已經在努力的拓展PHP語法。比如一個名為Pre的項目,可以把新的PHP語法轉換成普通的PHP代碼。

這個想法雖然已經在JavaScript世界中得到了證明,但是只有在提供了適當的集成開發環境和靜態分析支持的情況下,它才能在PHP中發揮作用。

儘管這是一個非常有趣的想法,但是在能夠稱之為「主流」之前,它還有很長的路要走。

PHP已經過時了嗎?

再次把話題回到開頭提出的問題上,PHP已經過時了嗎?

除了上面的一些動態,還有一份報告可以參考。

去年10月,GitHub發布2018年的年度報告。在熱門程式語言中,PHP排名第四。

雖然比不上JavaScript、Java,後來又被Python超過,但依舊比C++、C#等語言熱度要高。

相關焦點

  • PHP是世界上最好的語言(入門1)
    請點擊輸入大家都圖片描述大家都知道PHP是世界上最好的語言,我寫php代碼有十年的工作經驗了,現在給大家分享一下開發過程中的各種坑,為了照顧剛入門的同學,我就先從基礎的地方開始分享1:PHP這門語言是做什麼用的?PHP 是伺服器端腳本語言。主要是用來做網站建設的,目前市面上90%的網站都是用php來編寫的,比如:以前的淘寶網,鳳凰網。2:PHP這麼語言長什麼樣?
  • 編程的程式設計師們,你們有語言崇拜麼?比如PHP是世界上最好的語言
    答,PHP是世界上最好的語言。「PHP是世界上最好的語言」,雖然身在IT界,但說實話,這句話直到去年才明白,還是公司裡招了個PHP程式設計師,問的他這句話到底是什麼意思。當然,我現在也沒搞懂這句話是使用php程式設計師的語言崇拜還是語言偏執。說起偏執,應該大部分人都有吧,尤其是對自己有信心,喜歡鑽研技術的人,往往不允許別人對自己所用的語言說任何不好的詞語,這些人年紀會往往比較年青。
  • php語言是什麼?學好php需要掌握什麼?
    php容易學習,使用廣泛,主要適用於Web開發領域,PHP是Hypertext Preprocessor的簡稱,用中文翻譯過來的意思是「超文本預處理器」它是一種通用開源腳本語言。php的語法有C、Java和Perl的特點也有自創的特點,經過了24年的發展php從最初的1.0發展7.0版本,php的功能已經發展非常強大,php是適合編程零基礎入手的一門程式語言,下面為大家介紹一下學習php需要經過哪些過程?
  • Java語言和PHP語言有什麼區別
    最近,網絡上有很多網民就選擇哪種程式語言進行學習而糾結。例如,關於Java和php的優勢和不足,今天為大家分析一下Java語言和PHP語言的區別。一、Java語言的優勢和不足Java是非常熱門的程式語言,與其他高級語言相比,則是非常基礎的語言。並且Java是跨平臺的,具有Android,Swing,J2EE和J2ME等多種應用程式。就業方面比較廣泛,市場利用者的需求也很大。由於Java經常開發大型系統,因此大型企業往往需要大量的Java資源。
  • php入門教程:從0開始學php第一課 php是什麼?
    第一課 php是什麼?大家好,歡迎來到山鷹課堂,首先我自我介紹一下,本人89年,網名山鷹,山東臨沂人,2010年北漂7個月,之後一直在臨沂,目前在一家臨沂本地電商公司做技術開發。我呢研究php到現在差不多10年的時間了,很久以前就想出一套適合新手入門的php教程,由於各種原因一直拖到現在。在教程正式開始之前,給大家說一下學習php的各種疑慮。很多人說我沒有任何基礎我能學會嗎?我不會英語我能學會嗎?我數學不好我能學會嗎 …… 這一些列的疑慮都不是問題,編程就是用來解決具體問題的,我們的教程會以具體的需求出發,步步深入。
  • 世界上最好的程式語言,剛剛度過了25周歲生日
    但也有人認為,PHP 入門門檻低,非常適合 web 開發,即使不是「世界上最好的語言」,也不至於受過多苛責。愛 PHP 的三個理由如果有人深愛著 PHP,那一定是因為以下三個原因。第一, 狀態。每個網頁請求都是從一張完全空白的面板開始的。
  • 最「好」的程式語言 PHP 真的無藥可救了嗎?
    【編者按】PHP到底是不是最好的語言這個梗已經人盡皆知了,有些人對PHP淺嘗輒止,有些人與PHP共同成長。而Vimeo屬於後者。Vimeo是美國流行的原創高清視頻播客網站,vimeo禁止用戶上傳任何非原創的視頻內容。
  • php是什麼文件php文件怎麼打開php文件如何打開
    在我們生活中常常會遇到php格式.php結尾的文件,好多小夥伴們不認識這種文件是什麼,又不知道如何打開php文件,下面就來詳細介紹什麼php文件,怎麼打開php文件,如何打開php文件。PHP是什麼?什麼是PHP?
  • 5月編程最新語言指數排名 java不再是第一 php才是未來最好語言
    前幾天谷歌CEO皮查伊在會議展示了人工智慧的成果,在人工智慧上谷歌領先世界,這次的展示讓人工智慧重新改變的人們認識,也直接導致人工智慧程式語言Python的熱度在5月排名第一。從5月排名指數上看出來java首次被Python超越成為第一寶座,PHP挺近第四位,緊接這才是c#。每個人都說PHP是世界上最好的語言,在PHP每次指數都不斷提高下,不久將來PHP才是最好語言。
  • 最好的程式語言?美國出數據了,Java吃香,PHP敗了
    編碼江湖,長期以來就不存在什麼武林盟主,相反的,各類程式語言則在自己擅長的領域獨領風騷,誰要敢挑頭立盟主,就會死於滿天的口水之中。如今一組來自美國的數據,卻再次引起了「世界上最好程式語言」之爭。C語言是一種通用型命令式計算機程式語言,你可以用它開發作業系統、開發軟體和硬體設備。它的優勢很多,比如可移植性強,體型小巧,幾乎有所的現代程式語言,都脫胎於C,也就是說,了解了C你將很容易掌握其他類語言。但是C語言並不好學。
  • php工作原理是什麼?php常用功能有哪些?
    Php是超文本預處理器(Hypertext Preprocessor)英文全稱首字母的縮寫,php從1995年發展到現在現在已經成為流行開發動態網站的程序開源伺服器端語言。它融合了c、java、perl語言一些好的特點成為網站開發最佳的工具。
  • PHP是最好的語言什麼意思什麼梗? 程式設計師常用梗了解一下
    PHP是最好的語言什麼意思什麼梗? 程式設計師常用梗了解一下時間:2019-11-19 16:39   來源:小雞詞典   責任編輯:沫朵 川北在線核心提示:原標題:PHP是最好的語言什麼意思什麼梗? 程式設計師常用梗了解一下 程式設計師常用梗。用來嘲諷程式設計師技術較差,比較初級,或者只善於做鍵盤俠,而沒有真本事。
  • php變量是什麼?php變量的數據類型、命名規則等詳細介紹
    本篇將介紹「php變量是什麼?php變量的數據類型、命名規則以及php變量的使用教程」,有興趣的朋友可以了解一下!一、前言php是一門開源的腳本語言,它的語法簡單實用,利於學習,被廣泛的使用於Web開發領域。目前很多中小型網站都是使用php語言開發的,如果我們能學好php語言,也是很有前途的。
  • 「最好的語言「 25 歲了,PHP說要走向安全和開放!
    關注前沿科技 量子位梅寧航 發自 凹非寺量子位 報導 | 公眾號 QbitAI今年 4 月,隨著PHP 7.4.5 正式發布,宣告PHP誕生25年,作為一門飽受爭議的程式語言,PHP 經歷了什麼,又準備如何解決歷史遺留問題
  • PHP函數:php中rename()函數的妙用
    首頁 > 語言 > 關鍵詞 > php最新資訊 > 正文 PHP函數:php中rename()函數的妙用
  • 法語是世界上最美的語言嗎?
    除英語外,世界上每個國家/地區都有法語課的教授。如今,有23%的英語人口會說法語。懂一點法語會更容易學習其他語言,例如義大利語,羅馬尼亞語,西班牙語,英語和葡萄牙語。法語是聯合國的官方語言,並且是聯合國教科文組織和北約以及國際紅十字會,國際奧委會和國際法院所使用的語言。
  • PHP語言25周年 杜蕾斯發文慶祝 文案絕了
    1995年6月8日,PHP 1.0版本正式問世,目前已經更迭到7.4版本,PHP 8.0 Alpha1版本也有望於今年6月中旬發布。25周年之際,杜蕾斯官方微博發文慶祝:「#PHP語言25周年#不管PHP是不是世界上最好的語言,反正—— print(「durex is the best」)」網友看後調侃,一直被模仿,從沒被超越!小杜杜蹭熱點的能力從來不會令我們失望。
  • 微軟將終止在Windows上提供PHP官方支持
    微軟內部的PHP項目經理Dale Hirt在PHP郵件列表上宣布,從PHP 8開始,微軟不會在Windows上提供官方的支持。微軟是從Vista開始在Windows上支持PHP,而PHP 7.4則成為微軟最後的官方PHP版本。
  • Quentin:從.net到Java、PHP,哪個是全世界最好的語言?
    從.net到Java、PHP,成為計算機語言專家2016年4月,軟體工程專業畢業的Quentin剛參加工作一年半。在同事的口中,他常常會聽到盤石這個公司,抱著試試看的念頭,他向盤石投遞了自己的簡歷。結果當然是,成功通過面試進入盤石。
  • PHP的可變變量名
    php $a = 'hello'; ?於是,下面的語言:<?php echo "$a ${$a}"; ?php echo "$a $hello"; ?> 它們都輸出:hello world。