首頁  >  文章  >  PHP 終將擊敗 Python?

PHP 終將擊敗 Python?

藏色散人
藏色散人轉載
2021-11-22 11:17:432580瀏覽

最近,我突然發現自己好像又在逆潮流而動。可能我的想法與許多朋友不同,我認為 PHP 這個程式語言界的「混蛋」比以往任何時候都更受歡迎。

或許你會質疑-PHP 不是已經完蛋了嗎?市面上已經出現了很多「更好」的程式語言,不是嗎?

答案顯然是否定的,否則 PHP 早就消失在人們的視野當中、還被踩上一萬隻腳。要找到背後的根源,我們恐怕要先弄清楚所謂「更好」的語言究竟是什麼意思。

如果大家還不理解 PHP 為什麼還是活蹦亂跳,那我們可能得從程式設計、程式設計師、市場以及科技大眾化等問題說起。是的,真正的原因在這裡,而不是程式碼、函數或語法。

曾幾何時,罵PHP 代表一種潮流

要想在如今的程式設計工程領域選定隊伍、站穩陣營,大家首先得把除領導指定語言以外的一切競爭性程式語言先痛罵一遍。這跟功能特性無關,而是業務文化的直接體現。換言之,這樣的情景常讓人想起入教儀式。

程式設計師們是一群固執己見的傢伙,包括我在內,我們都很囂張、喜歡抨擊一切自己不用或不喜歡的語言。大家一定都聽過工程師說「Java 太爛了,C#就是坨垃圾、啥也不是。」這裡具體在說什麼語言並不重要,只要能博大家一笑就好。

但肆意痛斥的背後還隱藏著一種更深層的不屑,這點在最近的 PHP 與 Python 之爭中體現得尤其明顯。在許多學術人士看來,這就像是一場血腥的改朝換代、似乎有人想幹掉 PHP 並用 Python 徹底取而代之。

不信大家可以上維基百科查一查,其中 LAMP 堆疊詞條中的「P」代表的是 Python。有趣吧,20 年前我剛接觸 LAMP 的時候,這個「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 誕生於上世紀九十年代中期,歲數甚至比很多少壯派程式設計師還要大。我是從 2000 年初開始接觸 PHP 的,當時它剛從版本 4 過渡到版本 5。後來,我開始在自己編寫的 CodeIgniter ZendFramework 框架中編寫應用程式。

在我看來,PHP 之所以能夠保持長青、多年過去仍無衰老跡象,主要原因就是它被嵌入到了全球各地的新舊應用程式當中、也被嵌入不分老少的開發者頭腦當中。有些人用過幾年,有些人用了幾十年,PHP 都在他們心中留下了深刻印象。開發者不會消失、寫出來的商業程式碼也沒有消失,所以 PHP 依舊健在。而且有趣的是,Python 其實誕生於 1991 年,比 PHP 還要早。而且雖然生命週期更長,但 Python 一直沒能達到 PHP 目前的高度。

為什麼會這樣?

從個人觀點出發,我覺得跟 PHP 相比,Python 使用起來更麻煩。這個問題在 Python 3 中有所改善,但退回 15 年前,Python 還沒有 PHP 中開箱即用的那些「花俏功能」(函數)。很多功能必須手動安裝,否則就沒用。

而且長期貫穿 Python 語言的另一個老大難問題,就是其中的間隔語法。我真的非常討厭這種由程式碼間的空格數決定分隔關係的語法。我喜歡以自己喜歡的方式分隔程式碼,而且完全受不了程式語言本身在這裡動腦筋。大家可以隨意批評我的這個習慣,但這是我自己的程式碼、我親手寫的,想要用自己的風格來有錯嗎?如果連這點權利都不給,我詛咒自以為是的槓精們天天查 bug。

Python 一直吹噓這種間隔語法“易於閱讀”,這明顯是行銷屁話。我話擱在這裡──Python 用的這套文法,堪稱程式語言界最自以為是、最糟糕的文法。

正是這種令人難以理解的自以為是,讓程式設計師們飽受折磨;在程式設計早期、還沒有IDE 能幫我們修正文法錯誤的年代,根本就不會有多少程式設計師願意正眼瞧Python。反正我自己是不想。更確切地說,這也是 Python 語言在誕生的前十年一直拿不下可觀市場份額的一大原因。沒錯,這種設計壓根沒有使用者友善性可言。

另外,Python 語言的存在感也不強。它是作為腳本語言嵌入到 Linux 發行版中的,這也是它最主要的用途所在。沒有人會歡呼「耶,Python 來了,我們可以用它建立網站了!」

當然,Python 也可以用來做網站,但優秀的工程師都能感受到它的特性並不適合Web 開發場景。除了個人在文法層面的偏好之外,我承認 Python 是一種功能極為強大的語言,特別適合處理資料科學或其他著重高精度數學運算的任務。

人人都能上手 PHP

過去 15 年以來,Python 確實迎來了脫胎換骨般的更新,所以在不少層面上已經超越了 PHP。但 Python 仍有兩個沉重的包袱沒能丟掉:第一,大部分的更新出現都晚了十年。

Python 3 發佈於 2008 年,它的出現破壞了向下相容性。除非額外修改,否則 Python 2 程式碼無法與 Python 3 一同運作。但企業環境下動不動就有幾十、上百萬個舊版程式碼,誰願意去費這個勁?

公平地講,PHP 7 和 8 也破壞了部分 PHP 5(並沒有 PHP 6 這個版本)程式碼。我曾是 ZendFramework 社群的一員,社群一直幫助更新框架以支援舊程式碼的 PHP 7 和 8 上運行。好消息是,在將 ZendFramework 升級至 PHP 7 和 8 時,我們的遺留程式碼幾乎沒有受到任何影響。因此,大部分 PHP 5.6 的程式碼都得到了良好的向下相容效果。

而真正讓 PHP 成為業界長青樹的分水嶺事件,也許是一家名為 Automattic 的小型新創公司在 2005 年的悄悄建立。

如果 WordPress 是用 Python 寫的,我敢保證 PHP 絕對沒有今天這麼得意。但我也敢說,Python 會阻礙、甚至扼殺掉 WordPress 獲得如今如此廣泛成功的可能性。

一種語言或應用程式要在開源市場上持續生存,貢獻者的使用與擴展可謂至關重要。而誰更容易上手,誰就能在業界吸引更多貢獻者的支持。

身為受過科班訓練的軟體工程師,一切針對PHP 的辱罵我都可以試著去理解,但我想提醒大家一點-使用PHP 的不只是有著正規文憑的工程師,還有兼職人員、家庭主婦、平面設計師、公司經理、企業家甚至是小學生。沒錯,成千上萬的小學生正在自己第一台電腦用 PHP 寫網頁。

也可以說,PHP 是資訊時代下的 BASIC 語言。

而身為軟體工程師,許多批評者已經習慣了工程師的思維方式,卻忘記這世上還有無數只想為小公司建個網站、時間跟資源都很有限的 PHP 用戶。

WordPress 和 PHP 向他們敞開了熱情的懷抱。是的,WordPress 本身確實易於使用,但還不夠全面。而補充這個短板的正是 WordPress 外掛架構(「架構」這個詞在這可能不太準確,但大家能理解就行),允許普通人用 PHP 寫一小段程式碼來實現相應變更。用不著重寫整個類別、也不用考什麼軟體工程師認證,只需要一小段程式碼。

這數以百萬計的業餘程式設計師就這樣邁出了自己的程式設計之路,並在網路上與他人分享自己的心得、最終建立起碩大無朋的 PHP 技術社群。

易於理解的 PHP 讓一般人也能有效寫程式碼,它簡單、沒脾氣、型別鬆散、不涉及編譯,可以說是任勞任怨。

PHP 支撐著整個萬維網

快轉到 15 年後,如今 PHP 支撐著 78%的 Web 系統。光是 WordPress 就在全部網站中佔比近 40%,並擁有近三分之二的 CMS 份額!更重要的是,「聲名卓著」的 Python 在這塊蛋糕上僅佔 10%!雖然身為競爭對手的 Python 死忠們對 PHP 充滿仇恨,但 Python 支援的 Web 佔比還不到 1.5%。

氣不氣?其實沒什麼好氣的。

對,理當如此。

有企業客戶的招募人員聯絡我,表示打算刪除所有 Python Web 程式碼並替換成 PHP。這事聽起來蠻神奇,但其實常常發生。為什麼?因為有一說一,Python 並不怎麼適合 Web 應用。熟悉 Python 的開發者往往是資料科學及其他領域的專家,而且有經驗的人才在市場上可謂供不應求。讓他們搞 Web 開發,就挺沒必要的。

企業則希望在 Web 上靈活一點。當他們需要擴張或削減團隊規模,也不想花幾週甚至幾個月慢慢找出熟悉 Python 的人才。這類工程師很貴的,企業不大負擔得起。

但適應不同業務規模的 PHP 程式設計師在勞動市場上則是保質保量,甚至可以根據需要快速培訓。更重要的是,就算想找一位經驗豐富、擁有數十年經驗的高階 PHP 架構師,難度也遠低於在 Python 領域找個同等程度的。

而且公司管理階層也會教 Python 鐵粉們做人。你想在沒有硬性理由的前提下用 Python 寫 Web 或中間件?人家根本沒那麼多預算,而且要求隨時方便撤換成其他工具,這些都是 Python 不擅長的。

要成為合格的應用程式架構師,首先就是學會用最有效的技術為業務或企業提供「規模適中」的支援:我們的個人偏好不重要、技術時不時髦不重要,最重要的是多、快、好、省。

所以我發現適合完全用 Python 寫的 SaaS 應用程式其實很少。考慮到 Python 在 Web 領域可憐的市場份額,似乎大多數應用程式架構師都跟我有著相同的判斷。他們只在最適合的地方使用 Python,並在更多其他適合的地方使用 PHP。

總結

身為工程師,我們都喜歡用自己熟悉的東西,也習慣了對自己不了解的東西大加貶低。別不敢承認,咱們程式設計師就這毛病。

大學一直努力把 Python 定位成一種通用型商業語言——但它不是。 Python 更適合作為一種高階語言,專門用於運行伺服器、資料科學、處理大規模複雜數據,甚至是處理加密貨幣採礦。這些才是它的專長。

而 PHP 則屬於大眾語言,也成為萬維網上的客觀標準。

所以如果願意,各位也可以繼續對 PHP 惡語相向,沒關係。但歸根結底,它仍然是目前 Web 上使用範圍最廣的語言;而且隨著 WordPress 的持續增長以及 PHP 7 和 8 的持續升級,這種領導地位短期內也絕不會被動搖。

作者簡介:

Beau Beauchamp 是企業級 UI/UX 全端 web 應用架構師和高級開發者,擁有 20 多年開發可擴展應用的經驗。

原文連結:

https://beau-beauchamp.medium.com/php-is-killing-python-2be459364284

陳述:
本文轉載於:toutiao.com。如有侵權,請聯絡admin@php.cn刪除