首页
/
每日頭條
/
科技
/
十大最不會死的編程語言
十大最不會死的編程語言
更新时间:2025-01-08 01:38:37

  機器之心報道

  機器之心編輯部

  PHP,祝你 25 歲生日快樂。

  十大最不會死的編程語言(世界上最好的編程語言)(1)

  「隻要是用過 PHP 的程序員,都知道兩件事:第一,這是一種糟糕的語言,如果有其他選擇,自己絕不會再使用 PHP;第二,曆史上一些非常成功的項目都在用 PHP。」

  Fine,這兩點并不矛盾。作為一門編程語言,PHP 是有很多的缺陷,但和 PHP 環境具備的優點相比,這些缺陷也就不值一提了。和其他語言相比,PHP 為項目的搭建、更改和運行提供了更好的支持。

  2020 年 6 月 8 日,「世界上最好的語言」PHP 迎來了自己的 25 周歲生日。

  ?phpprint "This is the best language in the world.";?

  PHP 走過的 25 年

  與其他語言不同,PHP 是在 web 服務器中誕生的。它的優點與面向請求、服務器端執行緊密相關。

  故事始于 1995 年。當時,Rasmus Lerdorf 使用 C 語言編寫了一個簡單的通用網關接口 (CGI) 二進制文件集,這是 PHP 的第一個化身。這個集合最初被用于跟蹤 Rasmus Lerdorf 在線簡曆的訪問數量,之後 Rasmus 将腳本套件命名為「Personal Home Page Tools」,簡寫為「PHP Tools」。

  十大最不會死的編程語言(世界上最好的編程語言)(2)

  25 年說短不短,不過 PHP 的發明者 Rasmus Lerdorf 今年也才 51 歲。

  1995 年 6 月 8 日,Rasmus 向公衆發布了 PHP Tools,這也是 PHP 誕生的标志性事件。

  1996 年 4 月,Rasmus 重寫了一次代碼,推出了 PHP/FI,開始了 PHP 從工具套件向編程語言的真正演化。它包含對 DBM、mSQL 和 Postgres95 數據庫的内置支持,并支持 Cookie、用戶自定義函數等。1997 年 11 月,PHP/FI 2.0 發布。

  1997 年 12 月,以色列理工學院的學生 Andi Gutmans 和 Zeev Suraski 為他們作為大學項目開發的電子商務應用程序尋找後端。他們發現 PHP/FI 2.0 低效且缺少功能,于是開始完全重寫底層解釋器。他們聯系到 Rasmus,與之讨論了實施方案和他們要重新開發的 PHP 的各個方面。

  十大最不會死的編程語言(世界上最好的編程語言)(3)

  左:Andi Gutmans;右:Zeev Suraski。

  1998 年 6 月,PHP 3.0 誕生。Zeev 和 Andi 重寫了解釋器并引入了一個新的擴展 API,該 API 大大簡化了社區貢獻新擴展的方式。頂峰時,PHP 3 安裝在互聯網大約 10% 的 Web 服務器上

  1999 年 1 月,Zeev 與 Andi 成立了 Zend 公司。該公司後來成為 PHP 的創新和開發源。它貢獻了核心改進,以及用戶包與框架和開發環境工具。

  Zend 的成立為 PHP 的發展帶來了不小的變化。2000 年 5 月,PHP 4.0 發布。這一新版本帶有 Andi 和 Zeev 開發的全新「Zend 引擎」核心。除了性能得到顯著提升外,PHP 4 還添加了對更多 Web 服務器、HTTP 會話、輸出緩沖和多個新語言結構的支持。

  2003 年,PHP 被用于開發博客軟件和内容管理系統 WordPress。這一軟件一經發布即風靡全球,為 PHP 增加了大量人氣。時至今日,互聯網上超過三分之一的網站使用 WordPress。

  十大最不會死的編程語言(世界上最好的編程語言)(4)

  WordPress:以 PHP 和 MySQL 為平台的自由開源的博客軟件和内容管理系統。

  2004 年,PHP 5.0 發布。在此期間,Dmitry 加入 Zend 并在 PHP 5 期間幫助開發了大多數核心 PHP 子系統。同年,Facebook.com 以簡單的服務器渲染 PHP 網站形式上線。

  此時,PHP 已經非常流行了,因為它是第一批支持動态網頁的工具之一,而且 WordPress 為該語言添加了一些新功能,但這些也破壞了它的向後兼容性。

  2005 年,開發團隊認為在 PHP 6 中支持 Unicode 将非常有趣,但這一版本完全失敗了。有人認為,這也是 PHP 将自己弄得「聲名狼藉」的主要原因之一。

  為了這個失敗的版本,開發團隊浪費了大量的時間和精力。差不多十年之後,也就是 2015 年,PHP 團隊才開發出下一個成功的版本——PHP 7.0。在此期間,PHP 6 銷聲匿迹(2010 年被正式放棄),但 PHP 5 的多個版本仍在使用并不斷更新。

  十大最不會死的編程語言(世界上最好的編程語言)(5)

  PHP 7.0 是一次重大更新,包含新的 Zend Engine 3 (PHPNG)、各種改進和新功能。它的速度是 PHP 5.6 版本的兩倍。但與此同時,這一版本也破壞了相當一部分向後兼容性。這些改變提高了 PHP 的入門門檻,引發了一部分用戶的不滿,但也有人為 PHP 語言性能的提升和社區的成長感到欣慰。

  在之後的幾年裡,PHP 7 又經過了幾次叠代。今年 5 月 14 日,這門語言發布了其最新版 7.4.6 版。今年 4 月,PHP 官方還公布了 PHP 8.0 版本的發布時間表。根據該時間表,PHP 8.0 的 Alpha 1 版本将于 2020 年 6 月 18 日放出。

  在這 25 年的發展時間裡,PHP 受到了褒貶不一的評價。有人認為,PHP 存在很多設計缺陷,開發者水平良莠不齊、安全性差。在 Stack OverFlow 的一項調查中,PHP 甚至被票選為最令人讨厭的五種編程語言之一。但也有人認為,PHP 入門門檻低,非常适合 web 開發,即使不是「世界上最好的語言」,也不至于受過多苛責。

  十大最不會死的編程語言(世界上最好的編程語言)(6)

  愛 PHP 的三個理由

  如果有人深愛着 PHP,那一定是因為以下三個原因。

  第一, 狀态。每個網頁請求都是從一張完全空白的面闆開始的。除了用以提供初始功能和生命支持的标準全局變量、函數和類之外,其命名空間和全局變量都是未初始化的。通過從已知狀态啟動每個請求,我們可以獲得一種故障隔離:如果請求 t 遇到了軟件缺陷并且失敗了,這個 bug 不會幹擾後續請求 t 1 的運行。

  當然,狀态也會存在于程序堆之外的其他地方,并且有可能破壞數據庫、内存緩存或者文件系統。但 PHP 與所有允許存在的可能環境分擔了該弱點。如果将請求之間彼此隔離,可以減少大多數程序缺陷的成本。

  第二,并發。單個 Web 請求在單個 PHP 線程上運行。最初看來這像是一種愚蠢的限制。但由于程序是在 Web 服務器的語境中執行的,就會有一個可用的自然并發:Web 請求。異步的 CURL 到本地主機(或者到另一個 Web 服務器)可提供一種 shared-nothing、copy-in/copy-out 的并行機制。實際上,與其他大部分通用語言所提供的鎖共享狀态方法相比,這種方法更加安全,并且對錯誤更具彈性。

  最後,PHP 程序在請求級别運行意味着程序員工作流程是快速且高效的,并且随着應用程序的更改一直保持較快的速度。許多語言都宣稱這一點,但是如果它們不為每個請求重置狀态,主事件循環将和請求共享程序級狀态,則它們幾乎總是需要一些啟動時間。

  例如,對于一個典型的 Python 應用服務來說,debug 的周期大概像是「想一想」、「編輯」、「重啟服務器」、「發送測試請求」。即使重啟服務器僅需要幾秒,但人類大腦為了保持在這個狀态上,也會花費 15 到 30 秒的時間。

  相比之下,PHP 的「想一想」、「編輯」、「重新加載頁面」的周期會讓開發者提高效率。對于一個漫長且複雜軟件項目來說,這将有效地提高生産力。

  因此,即使不是 “世界上最好的語言”,PHP 也是一門優秀、高效的編程語言。随着時間的推移,我們可以期待 PHP 團隊能夠開發出更好的版本。

  最後問一句:你覺得什麼是世界上最好的語言?

  參考鍊接:htt

Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
家庭影院怎麼布線最好
家庭影院怎麼布線最好
家庭影院怎麼布線最好?家庭影院怎麼布線?随着人們生活水平的不斷提高,家庭影院也為了一種時尚的休閑生活方式,不用去電影院,一樣可以看到同樣效果的電影未來幾年,中國家庭影院市場還會穩步增長那麼家庭影院怎麼布線?家庭影院安裝布線方法?接下來詳細為...
2025-01-08
1tb加256g夠用嗎
1tb加256g夠用嗎
專注行業評述,深挖科技故事!大家好,歡迎來到館長Zero的内容欄目。文|館長Zero前段時間iPhone14系列正式發布,作為頂級旗艦機型,其Pro版本也是配備了1TB存儲版本,然而其高昂的售價也成了網友們讨論的焦點之一。我們拿iPhone...
2025-01-08
大白話漢語手語
大白話漢語手語
大白話漢語手語?随着北京冬殘奧會的臨近,交流冰雪運動成為聾人朋友近期的熱門話題如今,一套冰雪運動項目的手語以及冰墩墩、雪容融的“普通話”版手語正式與聽障朋友見面參與研究、制定冰雪運動項目手語的大部分人都是使用手語的聾人經過一年研究測試,最終...
2025-01-08
摩托羅拉moto g32
摩托羅拉moto g32
IT之家9月16日消息,摩托羅拉發布了兩款新的MotoE系列手機,硬件幾乎相同,主要是系統有區别,MotoE22運行基于安卓12的摩托羅拉MyUX系統,而MotoE22i則運行安卓12Go版系統。MotoE22兩款手機都采用6.5英寸HDL...
2025-01-08
python word文檔處理庫
python word文檔處理庫
Python-docx模塊基礎入門之一Word文件讀取操作1.打開Word文檔document讀取存在的文件,要用到docx庫中的Documentdocument=Document(file_path),file_path表示要打開的Wor...
2025-01-08
Copyright 2023-2025 - www.tftnews.com All Rights Reserved