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/
本文为 @ 场长 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。