17611538698
webmaster@21cto.com

PHP是语言中的丰田卡罗拉

编程语言 0 18 6小时前
图片

1995年,一位名不见经传的软件开发者发布了新型脚本语言的首个版本,其明确目标是为名为“万维网”(The World Wide Web)的新平台开发应用程序。

该项目最初规模非常小,但得益于互联网泡沫时代的狂热,它迅速发展成为有史以来使用最广泛的编程语言之一。经过最初的蹒跚学步,该语言最终在1997年实现了某种程度的标准化,甚至不情愿地加入了一些面向对象编程(OOP)特性,以取悦社区和评论家。

然而,无论它如何努力,这种语言及其用户多年来一直被所谓的“严肃派”程序员们嘲笑,他们嘲笑其“WTF”级别的语法、运行时模型的怪癖、不断增加的安全问题,以及围绕它涌现的无数框架。尽管面临强烈反对,这门语言及其社区最终挺了过来,并迎来了一个巨大的第二春,甚至得到了大型科技公司本身的明确支持。如今,随着这门语言迎来30周年的辉煌时刻,一个新项目正凭借Go编程语言的优势推动其未来演进。

有趣的是,上述两段描述不仅适用于一种,而是两种编程语言:一方面是PHP,它深受Perl启发并于发布由拉斯穆斯·勒多夫(Rasmus Lerdorf)于1995年6月以“个人主页工具”(Personal Home Page Tools)之名发布; 另一方面,JavaScript 由布伦丹·艾克 (Brendan Eich)设计,并于同年 12 月由网景(Netscape) 发布。

但这两种语言之间的相似性不仅限于此。1997年,这两种语言都通过PHP/FI 2和ECMA-262实现了某种程度的标准化。在2010年代,这两种语言分别获得了Facebook、Google和Microsoft的大力支持。到了2025年,它们都基于Go编程语言进行了重大改造:一个名为FrankenPHP的新PHP运行时,以及最近宣布的TypeScript编译器。

PHP和JavaScript代表了同一枚硬币的两面:Web编程,包括服务器端和客户端。万维网(World Wide Web)的兴起使它们成为重要角色,尽管它们(坦白说)最初的设计缺陷相当明显,演进过程缓慢且依赖委员会决策,以及各自生态系统中层出不穷的安全漏洞。

C++ 创造者 Bjarne Stroustrup 经常被人们引用的一句微笑话是这样说的:

只有两种语言:一种是人们抱怨的,另一种是没人使用的。

我们曾发表过一篇关于BASIC的文章,这种编程语言是所有开发者又爱又恨的,但它单枪匹马地定义了我们行业的一个时代。我们理应为PHP留出一些篇幅——这种同样被众人抱怨、被众人嘲笑的语言,却据称支撑着全球70%至80%的网站; 毋庸置疑,这是一个令人印象深刻的数字,无论你如何看待它,无论多少“严肃”的程序员如何嘲笑它。

纵观历史,编程语言曾获得过一些有趣且发人深省的绰号。C语言被称为“可移植的汇编语言”。Java 适合“写一次,调试到处”。Python 通常被称为“可执行的伪代码”。JavaScript“在10天内创建,这一点显而易见”。Perl是“互联网的胶带”。

至于 PHP,它要么是“糟糕设计的分形”( seriously, people? ),要么是“Pretty Horrific Programming”的缩写。哎哟~

以下是我的看法:PHP 是经济实惠的云网络托管服务的通用语言;或者换句话说,它是编程语言中的“丰田卡罗拉”:平淡无奇、可靠稳定、易于使用且价格亲民。

图片

几乎在世界任何地方,你都能找到提供 LAMP 圣四重奏的经济实惠网络托管服务: Linux、Apache、MySQL 和 PHP;一个操作系统、一个Web服务器、一个数据库服务器和一个脚本语言,以低廉的价格打包在一起,使大众能够走得更远。引用乔治·克鲁尼的话来说,还需要什么别的呢?

如今,PHP 具备现代编程语言的许多特征;让我们来列举一些,首先是从其完全开源 的性质开始。它具有先进的 OOP 功能,如 traits、property hooks、命名空间、属性 和 枚举。

它包含函数式编程构造,如带捕获列表的闭包和箭头函数,以及一个“管道”运算符(将于今年11月推出)(OCaml 和 F# 开发者们,欢呼吧!)。PHP 支持关联数组,并拥有一个虽简单但快速、实用且不断发展的类型检查系统 (记住:declare(strict_types=1); 是你的好帮手),包括 never 和 可空类型。它内置了一个完整的算法库,遵循“开箱即用”的理念,如果其他方法都行不通,还有一个强大且开源的包管理器,拥有足够多的包让 npm 汗颜。它对单元测试提供了卓越的支持。

作为脚本编程语言,它的编译和执行速度相当快。它拥有自己的生态系统,包括技术会议、吉祥物以及由JetBrains开发的强大IDE。

然而,它确实包含goto 语句。哦,天啊!迪杰斯特拉会怎么说!更不用说那些烦人的以美元符号开头的变量,以及令人尴尬的foreach 语句。真是“耻辱”!

大多数所谓的“严肃”程序员都应该从他们的象牙塔中走出来,看看 2025 年的 PHP,以避免被大语言模型(LLM)取代工作。过去十年间,该编程语言经历了重大、稳步且持续的更新,包括每年11月发布一个稳定版本的节奏,以及一个专门团队持续修复安全漏洞,并用更新、更安全的API替换过时的API。

我知道人们确定应该重新审视PHP,因为我本人也曾不得不走出自己的象牙塔,去做这件事。我必须坦率地承认我的过失:早在2009年,我曾参与过一个(坦白说毫无意义的)社区活动,名为“我讨厌PHP”(互联网档案馆已妥善保存了该活动的副本),我的名字在首页上醒目地出现。我认罪了,法官大人。

作为辩解,我将指出那正是PHP较为黑暗的时代。那时正是布鲁斯·泰特(Bruce Tate)的《超越Java》(Beyond Java)及其书中对PHP的漫长抨击盛行的时期。

还记得早已消失的PHP安全联盟吗?小鲍比表的时代是否已经结束?让我们坦率地说,其实并没有。如果你想的话,你仍然可以发布包含SQL注入漏洞的代码(提示:尽量避免使用.运算符。对于所有非数据库查询的操作,字符串插值是你的好帮手)。

Rt. Rvd. 牧师曼努尔·拉弗罗伊格在其讲道中,向“奇异机器第一联合教会”的挚爱会众宣称,每种编程语言中都蕴含着神性……包括PHP:

如果像 PHP 这样的语言能让如此多的人接触到黑客技术,那么这就是它的神圣之处。它为孩子们提供了一个学习程序执行如何出错的第一步,因为控制和数据如此容易被篡改。

如今,我所看到的是一群健康、蓬勃发展的PHP社区。除了JetBrains之外,这个社区并没有受到FAANG或其他任何“科技巨头”公司任性的影响。而PHP基金会正在推动其标准向未来演进,希望能在金钱与人之间的不稳定领域中找到平衡。

请谨慎看待这些数据,但若观察语言排名,仍有大量市场待重新夺回:在TIOBE指数中,尽管PHP曾被评为2004年年度语言,但目前它在第15位且为下降趋势:2010年它曾位列第3。在IEEE排名中,它位列第13位,而在PYPL排名中位列第7位,与过去20年相比,这一排名有所下降。不过, 在RedMonk排名中,它位列第4位,而图表显示,自2013年至今的下滑幅度并未如此剧烈。

开玩笑归开玩笑,PHP历史上最重要的进展与驱动它的引擎有关。几十年来,Zend引擎一直是该语言演进的标杆; 该引擎专为1999年万维网的需求设计(当时是LAMP架构的时代),尽管它在当时表现出色,但无法顺畅地适应DevOps、容器和Kubernetes编排器的时代。

(如果你曾经尝试过使用 Dockerfile 搭配 Nginx、FPM 和 Supervisor 来运行某个被遗忘的 PHP 7.1 应用程序,请举手。我感同身受,朋友们。)

幸运的是,我们现在可以摆脱Zend了。得益于其社区不可预测的强大力量,有一个名为FrankenPHP的项目。该项目最近已被PHP基金会采纳为官方运行时,它具备所有能推动PHP进入新阶段的条件。

FrankenPHP不仅极大简化了容器的创建过程,还为PHP代码提供了新的执行模型,同时与现有的庞大代码库保持100%兼容。本月我们在Vidéothèque板块中对FrankenPHP进行了更详细的探讨。

尽管 FrankenPHP 非常出色,但我并不期待对 PHP 的负面评价会很快消失。

该语言将继续承受其 humble 起源带来的污名。Rasmus Lerdorf 并未在 “Masterminds of Programming”的采访,因为PHP是典型的在集市上诞生的语言,是偶然设计的产物。拉尔斯也不会受邀参加下一届HOPL大会,尽管该语言拥有不合理的 popularity,PHP也不会被用于博士论文(除了与安全相关的论文)。雪上加霜的是,PHP甚至未在《编程之道》中提及(好吧,好吧,该书出版于1987年,我承认这一点)。

但值得庆幸的是,IEEE的《计算机杂志》确实关注了PHP,并跟进对拉斯穆斯的采访,以文字 和 视频 两种格式,于2012年发表。

至少如此。在这篇采访中,拉斯穆斯阐述了“集市”背后的核心哲学:

我在过程中逐渐意识到,为了让PHP发展壮大,我必须放弃对PHP的控制权——我必须让其他人也拥有部分控制权。 这不仅仅是他们为我的项目做贡献——它变成了我们的项目,这真正改变了PHP的本质。

作者:Adrian Kosmaczewski

编译:行动中的大雄

原文:

https://deprogrammaticaipsum.com/the-toyota-corolla-of-programming/

评论