為什麼?怎麼 PHP 還沒死嗎?不是有那麼多比 PHP 更優秀的程式語言嗎?
不,並沒有。如果真的有這樣的語言的話,它們早就帶頭幹掉 PHP 了。我們需要重新審視什麼才是「更好」的程式語言。
為什麼 PHP 還沒死?如果你表示不解,那可能是因為你並不瞭解程式設計、程式設計師、市場和民主。實際上,這與程式碼、函數或語法沒有任何關係。
抨擊 PHP 成為了一種時尚
如今,為了在程式設計的圈子內走紅,你就必須抨擊與「主流文化」吹捧的程式語言有競爭關係的語言。這與語言本身的功能無關,只是因為文化,就有點像宗教。
程式設計師是一群固執己見的人,非常傲慢,但我們必須克服這些缺點。我們喜歡抨擊我們不喜歡和不使用的程式語言。你會發現有些工程師說 Java 很糟糕,有些說 C# 很糟糕,而有些則說 Go 很糟糕。至於具體是什麼語言根本不重要,總會有人批評。
此外,還有一種更深的鄙視,最近這段日子 PHP 和 Python 之間默默地展開了一場較量,似乎學術界正在策劃一場陰謀:幹掉 PHP,讓 Python 取而代之。
如今,你甚至會發現在一些維基百科的頁面中,LAMP 技術棧中的 P 居然神奇地變成了 Python。20 年前,在我使用LAMP 的時候,這幾個字母指代的可是 Linux、Apache、MySQL 和 PHP,當時的 P 指的可是 PHP,而不是 Python,甚至不是Perl。我並不是說這些定義不能改變。也許是我的疑心太重了?不夠包容?還說 Python 佔據了 PHP 的位置?
對於我們大多數人來說,大學裡學習了 Python,還有其他一些實際工作中可能永遠也用不到的小眾語言。雖然我們的老師或其他菜鳥會說:「PHP 很糟糕」,但也許他們中的大多數人從未編寫過一行 PHP 程式碼。
事實上,你甚至可能會懷疑是否真的有人從事專業的 PHP 程式設計工作。普通人對 PHP 的不屑一顧實際上並不合邏輯,而且也不是發自內心的。只不過,與朋友在咖啡館聊天的時候,我們習慣於一起鄙視某些明星、網紅或者 PHP。
此外,還有一些程式設計純粹主義者,他們願意浪費寶貴的時間吹毛求疵,討論 PHP 如何糟糕。大多數這樣的爭論都會圍繞個人的偏好,或者他們不喜歡的細微差別,為的是宣傳自己喜歡的程式語言,並希望這些語言一統天下!
他們的抱怨沒完沒了:
PHP 的型別很弱,而且還有很多糟糕的程式碼。
Javascript 和 Node.js 又何嘗不是呢?你不是一樣在用?
PHP 的函數太多了。
有些人就連這都要抱怨,是因為太方便了嗎?
函數名不一致。
當一種語言真正做到民主化,而不是由哪個「專家高手」憑一己之力一手編寫而成,就會出現這樣的問題。
可見,他們對 PHP 的批評通常都源於個人偏好,或者只是雞蛋裡挑骨頭。要是這麼說的話,我們也可以針對Python、C#、Java、Go、Javascript 或其他任何語言挑出相同的毛病。作為程式設計師,我們喜歡抱怨,滿腹牢騷。
但作為程式設計師,我們喜歡抨擊 PHP 的真正原因是,我們固有的狂妄自大和赤裸裸地嫉妒。
PHP更容易使用
PHP誕生於 90 年代中期,甚至在我們中的一些人出生之前。我從 2000 年初開始使用 PHP,當時的版本正在從 4 向 5 過渡,後來我開始使用 CodeIgniter、ZendFramework,在自己的框架中編寫應用。
我認為 PHP 長盛不衰的原因,也是這門語言不會消亡的主要原因是,它不僅嵌入到了各類新舊應用程式中,也嵌入到了新老程式設計師的腦海中,他們使用 PHP 已經長達幾十年了。我們不會離世,我們編寫的商業程式碼也不會消失。
有趣的是,Python 誕生於 1991 年,那時PHP 還沒有出現。雖然 Python 的生命更長,但它的採用未能達到 PHP 如今的水平。
為什麼?
在我個人看來,與 PHP 相比,Python 使用起來很痛苦。這個問題在 Python 3 中有所緩解,但在 15 年前,Python 還沒有各種開箱即用的、「花裡胡哨」的函數,遠比不上 PHP。你必須手動安裝很多功能。
此外,我發現 Pyhon 還有一個問題,而且這個問題一直延續至今,那就是空格。我討厭使用空格作為分隔符的語法。我希望按照自己喜歡的方式分隔程式碼,而且不希望程式語言礙手礙腳。無論你再怎麼說得天花亂墜,程式碼是我的,我想怎麼寫就怎麼寫,誰也管不著。
Python一直吹噓自己的空格語法「易於閱讀」,但這不過是行銷的空話罷了。我個人認為,Python 使用了最糟糕的語法,還不自知。
這種自以為是的語法很容易引入錯誤。最初,在 IDE 能夠所有這些問題之前,我相信沒有程式設計師喜歡這種語法。至少我個人就不喜歡。這也是幾十年來該語言的採用率一直很低迷的部分原因。其實就是因為這種語法對使用者不夠友好。
此外,我認為早年間人們並不知道 Python 的存在。它作為一種指令碼語言嵌入到 Linux 發行版中,這就是它的主要用途。沒有人會跑出來大喊道:「我可以用 Python 構建網站了!」
事實上,雖然我們可以用 Python 做網站,但優秀的工程師都知道 Python 的強項並不是做網站。除了我個人對語法的偏好之外,Python 在功能上是一門非常強大的語言,特別是它的庫可以用在資料科學或其他側重於數學計算的地方,這些情況下精度是必須滿足的要求。
PHP是任何人都可以使用的語言
我同意,在過去的 15 年間,Python 推出了許多更新,並超越了 PHP,只不過這些更新晚了十年。
2008年釋出的 Python 3 實際上打破了向後相容性。Python 2 的程式碼無法與 Python 3 一起執行,你需要做一定的修改。但是,如果有一百萬行程式碼需要更新,那就沒戲了,尤其是在企業環境中。
公平地說,PHP 7 和 8 也破壞了一些 PHP5 的程式碼(沒有 PHP 6)。我是ZendFramework 1 社群的一員,該社群幫忙更新了執行在 PHP 7 和 8 之上的框架。幸運的是,在將 ZF1 升級到 PHP 7 和 8 時,我的企業遺留程式碼幾乎沒有損壞。所以,大部分 PHP 5.6 程式碼仍然可以向後相容。
但也許真正幫助 PHP 一炮而紅的事件是,一家成立於 2005 年的名為 Automattic 的小型初創公司。
WordPress剛開始的時候很不起眼,但它不僅改變了開發人員,而且也改變了普通人釋出網站的方式。
到目前為止,最好的釋出選擇是 Drupal、Joomla 或其他一些BBS 軟體。但這些軟體使用起來都很痛苦,因為編寫這些軟體的人的思考方式更接近程式設計師,而不是普通使用者。
如果 WordPress 是用 Python 編寫的,那麼可能 PHP 真的會走下坡路。但我敢說,Python 會阻礙 WordPress 的迅速崛起,甚至完全阻止。
採用以及擴充套件貢獻者的支援將關係到語言或應用程式在開源市場中的生存。而易用性是刺激採用率迅速上漲的關鍵。
作為一名受過大學教育的軟體工程師,無論你如何詆譭 PHP,都無法否認 PHP 不僅受到了專業軟體工程師的青睞,而且就連兼職人員、家庭主婦、平面設計師、公司經理、企業家和小學生都能使用計算機編寫網頁。
可以說 PHP 是資訊時代的 BASIC(語言)。
作為一名軟體工程師,你的思考方式必然和軟體工程師一樣,而不是那些只想利用有限的時間和資源為自己的小企業建立一個網站的人。
而 WordPress 和 PHP 改變了這一切。
WordPress本身很容易使用,但功能很有限。普通人可以利用 WordPress 的外掛架構,編寫很小的 PHP 程式碼片段,他們不需要重寫整個類或成為軟體工程師來完成這些工作。
數以百萬計的業餘程式設計師通過 WordPress 在網路上與其他人分享他們的成功,並行展了這個平臺。
通俗易懂的 PHP 語言讓普通人也可以編寫有效的程式碼。簡單、沒有特殊要求、弱型別、不需要編譯,就可以執行。
PHP與網際網路
15年後的今天,PHP 為 78% 的 Web 提供支援。僅 WordPress 就佔所有網站的近 40%,並擁有近 2/3 的 CMS 市場份額!關鍵是Python 希望佔有這些市場的 10%!儘管 Python 純粹主義者對 PHP 充滿仇恨,但 Python 僅佔 Web 的不到 1.5%。
有些企業客戶的招聘人員曾聯絡過我,他們希望刪除所有的 Python Web 程式碼,並換成 PHP。你可能會感到很震驚,但其實這種情況應該更多。為什麼?因為老實說,Web 不是 Python 的主戰場,Python的主要使用者是資料科學和其他專家,而且有這方面經驗的人才供不應求。
通常公司需要靈活。當需要擴大團隊或有人離職時,他們不可能花費數週或數月來尋找新的 Python 人員。而且 Python 工程師也很貴。
對於小型企業來說,尋找 PHP 程式設計師要容易得多,而且如有必要甚至可以進行培訓。關鍵是你可以找到擁有數十年經驗的高階 PHP 架構師,比找相應的 Python 人員要容易得多。
關鍵是,如果你在一家公司工作,如果沒有正當理由就想用 Python 編寫網頁或中介軟體,那麼就會遭到責備。因為公司會為此揹負上 Python 程式碼,將來他們需要花費鉅額資金來刪除這些程式碼,並用正確的工具替換。
應用程式架構師的首要工作是,針對企業的實際情況,選擇最有效的技術。不能因為網上非常流行,或者是學校裡教了某種語言,你就根據自己的喜好來選擇。
我建議完全用 Python 編寫 SaaS 應用程式的情況非常少,考慮到 Python 的 Web市場份額,似乎大多數應用程式架構師都會選擇正確的語言。他們會在 Python 最擅長的領域選擇 Python,並根據 PHP 的最大優勢選擇 PHP。
總結
作為工程師,我們都喜歡使用自己熟悉的語言,而且我們喜歡對自己不熟悉的技術嗤之以鼻。
各個高校都在嘗試將 Python 作為通用的商業語言。但實際上,Python 更適合執行伺服器、資料科學、處理大型複雜數位,乃至加密貨幣的挖礦等。
而 PHP 是大眾語言,它已成為網際網路事實上的語言。
所以,如果你喜歡,可以繼續抨擊 PHP,繼續鄙視它。但無論怎樣,PHP 仍然是迄今為止網路上使用最廣泛的語言,隨著 WordPress 的持續飛速增長和 PHP 7 和 8 的新速度,這種地位在短期內不會改變。
參考連結:
https://beau-beauchamp.medium.com/php-is-killing-python-2be459364284