我爲什麼不看好 PHP 發展 ? 原 薦

講道理來說對 php 還是蠻有感情的,從第一次看到 HHVM ,swoole , PHP7 ,再到後來 laravel reactphp php-pm 等項目,php 社區有着源源不斷的潛力,和一羣熱愛開發的人來給它續命。

糟心的設計

  • 性能問題

    PHP 設計之初是沒有過多考慮性能問題,同步阻塞模型非常適合一般思維,多進程也一定解決了腳本語言長時間跑會不穩定的問題。但是這樣做的後果就是多進程十分佔用 CPU 資源,進程需要等數據庫操作。而且 PHP 本身不常駐內存,像 laravel 這樣重量級框架,每次請求需要從磁盤加載代碼到內存,再執行,響應速度可想而知。 這就好比你開了一家飯館,廚師炒菜慢,爲了簡化管理,你選擇增加 100 個服務員,給顧客 1對1 服務。而異步非阻塞模型,一個服務員通過排號點餐叫號,就實現了你上萬個服務員要做的事情。

  • 環境安裝問題

    不得不吐槽,phpize + perl + composer 三連是 php 的一大敗筆,當我們安裝一個拓展時,最麻煩的情況是系統安裝對應軟件,phpize 編譯,然後添加到 php.ini ,重啓 php 。而對於 golang/Rust/Node.js/Python ,比如 node.js 你只需要 npm install 就能安裝好所有,甚至包含了拓展和各種包,它會自動編譯。所以,對於很多 php 開發者來說,拓展等環境要求耗費了很多無用功。 你可能會說,我用 phpstudy , laradock … 但是 Python golang node.js 這種,一個 apt install xxx (yum install xxx)就解決了。 你可能會說,php 也可以用 apt 安裝,但是對不起,你還需要安裝它的七大姨八大姑,php-xm,php-json,php-xxxx 等十幾個軟件包。

生態方面

  • 大司用的 php 並不是你用的 php

    事實上,用 php 的大公司不算多,Facebook 總的來說,我更願意稱他在用 PHP 的風格生成 C++ 代碼。微博更是有着無數 C 拓展,yaf 本身也是一個 C 拓展,其他一衆公司基本上是 CI 這類框架爲主,做視圖層渲染,並且大都常駐內存。 真正能用到正宗 PHP 的基本上是沒有。

  • 軟件生態

    整體來說,php 生態還算不錯,Laravel 生態也值得一提。 相對來說,一些新興的 swoole 框架就沒那麼火了。 PHP7 發佈有許多年了,雖然支持類型定義,但是大部分 PHP 倉庫都沒有支持,相比之下,JavaScript 的生態對 Typescript 的支持要火熱很多,大部分倉庫都支持。

  • 開發人員問題

    PHP 目前的開發生態是一個惡性循環,入門級開發者偏多,導致 PHP 開發組不敢做太大的變動,基於 php-cli 的框架的寥寥無幾,使用 PHP7 的開發者不算很多,那類型定義就更無從談起了。對於新鮮事物的接受程度如此。

  • 企業生態

    不得不說的一個問題是,如果你學 PHP ,而且對 C 和 swoole 不懂的話,那麼你有很大的可能會入職外包公司。而 swoole 這些對於一般公司來說,招人成本太高,還不如直接 golang node.js 划算。

    未來的前景

  • 開發效率將不再是優勢

    laravel 的火熱,決定了 PHP 未來勢必走上複雜化這條路,越來越複雜,越來越適合寫大項目,但本身性能和設計問題限制了它。而 spring boot 等一衆其他語言框架,將會越來越簡單,像 node.js 你只需要 npm install , npm start 就能啓動項目,不需要管拓展,不需要配置nginx 配置僞靜態等等…

  • 語言本身的限制太多

    PHP 本身提供了極爲匱乏的系統層函數,你無法簡單的操作和管理內存,做定時任務,做隊列,做開啓一個 websocket 端口,甚至處理串口通信,等等,將來這些操作將極爲普遍,而 php-fpm 本身搞這些很麻煩。你只能通過拓展,通過C和C++。

  • 應用場景

    PHP 除了它所宣稱的開發快,本身沒有什麼特色,不論是性能(相對於 JS 和 JAVA),甚至沒有 JIT ,當然,更不適合做 IO 密集型應用,或者像 JS 在瀏覽器,JAVA 在企業級應用,.NET 在windows ,有着很強的門檻或者語言特色。 可預見的事實是,不管未來 微服務,區塊鏈,AI,VR,AR 還是會出來 BR CR DR… 都不會有 PHP 一席之地。這是一個很殘酷的事實,而 PHP 如果做出重大改變,就意味着失去原來的生態和開發者。

    總結

    我無心挑起語言之爭,只是想告訴很多 PHPer :

    1. 你們可能在今後中遇到的很多問題,在其他語言中都十分好解決。比如操作 excel 文件 容易內存泄露,比如 做websocket ,比如做定時任務。
    2. 語言是死的,人是活的,不管 C++ 也好,java 也罷,有很多值得程序員學習的東西,對個人是提高。
    3. 對於 PHP 初學者來說,如果你十分討厭外包的話,我建議你慎重考慮下,要不要繼續學習 PHP。
    4. 鳥哥和韓大 不推崇 laravel 的原因也是因爲它本身太龐大,不適合 php-fpm 。 並且從架構角度來說,CI 框架更好優化,把 IO 操作讓給更適合的程序或者語言。

    總的來說,PHP 現有的項目一大堆,做快速開發還是可以,並且還有很多歷史遺留的項目,在很長時間內不會死,甚至活得很好,你也不用擔心事業,但從長遠來看它並沒有前途。

我們的一些開源項目

基於 ueditor 的現代化編輯器: https://github.com/notadd/neditor (依然有 ueditor 的一些歷史遺留問題,比如 es5 grunt)

基於 nest.js 微服務框架: https://github.com/notadd/notadd (還在開發中,需要配合其他服務)

如果有噴的,請在此回覆,不要污染 issues 。 另外,我不是這些項目的開發者,我們團隊是。

比較風騷的是,php 倉庫總數在下跌:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章