PHP 可能在未來十年內消失?

csdn 發佈 2020-01-13T22:01:19+00:00

作者| Italo Baeza譯者 | 孫薇,責編 | 屠敏以下為譯文:自Wordpress、Drupal、CakePHP、Laravel、Symfony及許多其他的Web應用程式走上舞台以來,人們發現語言程序的創建如此簡單,似乎也讓語言出現了某種類似二次復興的跡象。

猶記得,據 2001 年 7 月的 PHP 官方文檔描述,「PHP 是有史以來最好的語言,沒有之一。它快速,非常強大,而且免費。"不過,隨著時間的疊代,不少開發者發現所謂世界上最好的語言 PHP,雖然能極大地提升性能,但是其功能不夠完善最終導致 PHP 開始走上了下坡路,對此,你怎麼看?

作者 | Italo Baeza

譯者 | 孫薇,責編 | 屠敏

以下為譯文:

自Wordpress、Drupal、CakePHP、Laravel、Symfony及許多其他的Web應用程式走上舞台以來,人們發現語言程序的創建如此簡單,似乎也讓語言出現了某種類似二次復興的跡象。虛擬主機Web hosting再加上PHP + MySQL + Apache堆棧,就像野火一般迅速蔓延,突然每個人都在十分鐘裡建起了自己的網站:博客、購物車、相冊等等,應有盡有。

PHP的支持者們樂於致力改善這門語言,最終他們成功了——遲鈍的老版本逐漸被替換掉,PHP 7在性能和功能方面都更優,PHP 8甚至還支持JIT引擎。

但我認為,之後PHP會慢慢消失,甚至完全被淘汰。根據官宣,PHP 8的唯一主要功能就是JIT引擎——在CPU受限的場景中能提高性能,但也僅此而已,其他更新微不足道,不會對我們現有或未來的應用程式產生任何影響。

性能不會成為致命的問題,但功能缺乏才是問題。

暫時的勝利,最終的失敗

在PHP5暴露問題(慢、依賴混亂、功能缺乏)的同時,Ruby、Python、Node.JS和Go都開始受到大眾關注。Go出現得比較晚,但無論如何,我們可以看到這些語言的用途:

  • Websockets

  • 非阻塞IO

  • Promises實現(即「在我執行其他任務時,完成此項任務」)

  • 更佳的數據流

  • 本地伺服器部署

  • 桌面/移動應用的用法

  • 更乾淨的配置(如php.ini)

  • 軟體包管理(後由Composer修復)

這些新功能除了composer,全都不包括在PHP的核心功能中,甚至宣傳和計劃中都不涵蓋。基本上,官方是讓PHP社區自行決斷要自己做這些功能,還是乾脆放棄了事。

你可能會說,這些功能並非各個項目必需的,其可用性要取決於具體情況,這話沒錯,但要實現上述功能,我們必須要選擇是用非官方的程序包,還是自己做一個。

舉個例子,我們看一下WebSockets:必須在Ratchet、Swoole、Amp和React中作出選擇。這意味著,針對關鍵性功能,作為開發人員,我們不但要確保遵守程序包的相關文檔,保證程序包的可維護性,還要關注PHP的版本更新情況,才能保證不出問題。我可以想像,PHP8出現時,要在新版本上穩定下來,需要花費數周乃至數月的時間。

Swoole的案例是可以再討論的。目前開發者可能不太熱衷於使用這個麻煩纏身的軟體,尤其是考慮到語言障礙的問題,但如果想要進一步研究的話,可以點擊這裡查看開原始碼。

雖然近來,人們的關注點有些偏移向語言本身添加某些helper和命令,但這些helper方法的混亂也是多年來未曾解決的問題:ucfirst, strtolower, str_replace…我們為什麼不能在使用統一命名上達成一致?為什麼直到今日,仍然沒有人能從數組中提取一些鍵?

回到重點,不要誤會我反對使用第三方程序包,但我希望負責PHP本身的人員比隨機的公司擁有更多的可維護性。

而且別讓我用台式機或者移動應用程式。PHP是一種面向Web的語言,大多數開發者都默認這一點,但即便Node.JS被逐出了市場,PHP也不會有希望成為相應生態系統中的替代品。

具體到Node.JS的案例中,很大可能JavaScript編寫的部分伺服器代碼模塊是可以重用在之前的移動或桌面應用中的。對公司所有者而言,這意味著公司不必再僱傭另一個有其他語言經驗的開發者了,除非收益大過成本。

恐怕這就是我們將要面臨的局面:

  1. 應用一開始用PHP代碼庫開發;

  2. 管理者索要新功能;

  3. 某個其他語言會填充PHP不提供的功能區;

  4. 最終開發者要使用兩個生態系統。

同樣,每種語言都有其特色和要警惕的問題,但我始終認為,一種語言要有功用性,能夠讓使用者完成自己的任務,而不是讓人吃虧——如果不是為了PHP社區的利益,很難設想PHP會達成以上要求。

未來嚴峻

事實上,PHP8出現時會使用JIT編譯器,但PHP背後沒有核心開發者。而且Rogue Weave公司也更傾向於Zend Server,而非持續推動PHP核心Zend引擎的開發。這些功能可能永遠無法實現,而且在這些問題列入考量時,Node.JS和Go等語言也已經擁有了更廣闊的生態系統。

據我了解,JIT編譯器應當允許開發者使用純PHP而不是C++來創建擴展套件,這樣性能損耗較低,可能會讓語言功能發展得更快些,但創建者所提供的支持和/或可維護性也是語言持續的保證,否則難說軟體包維護者是否會像Predis那樣選擇退出。

綜上,在我看來,功能匱乏將使得PHP慢慢消失,而其他語言則會繼續向前發展。

原文:https://medium.com/@DarkGhostHunter/php-could-fade-away-in-the-next-decade-584e46d760db

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

關鍵字: