从工程实践、容器框架、自渲染、平台体系等角度,解读各种跨端技术更为适用的业务场景>> 了解详情
写点什么

为什么开发人员讨厌 PHP

  • 2020 年 5 月 28 日
  • 本文字数:3403 字

    阅读完需:约 11 分钟

为什么开发人员讨厌 PHP

本文最初发表在 Mehdi Zed 个人博客,经原作者授权,InfoQ 中文站翻译并分享。


导读: 首先说一句,“PHP 是世界上最好的语言。”懂的都懂,这是一个有历史的、承载了程序员黑色幽默的梗。但是,这些年以来,“PHP 已死”、“PHP 行将消亡”之类的言论甚嚣尘上,由此看得出,很多开发人员讨厌 PHP。这又是为什么呢?PHP 真的就这么令人讨厌吗?答案是:No!


PHP 是世界上网站使用最广泛的语言,也是最讨厌的语言。而且人们对它的恨,是纯粹的恨。为什么会有如此多的开发人员对它恨之入骨呢?今天就让我们来谈谈仇恨的源头,看看它是否真的让人如此憎恨。


别碰我的 PHP

如果我说,全世界的开发者都很讨厌 PHP,这并非我的一家之言。在最新的 Stack OverFlow 调查中,来自世界各地的开发者将 PHP 列入最讨厌的语言前五名。而最新的 Hired 调查显示,PHP 位居最讨厌的语言前两名。还有很多类似的调查结果,我甚至都不想提 Reddit 上人们是怎么看待 PHP 的。如果你是有着 20 年经验的 PHP 开发人员,来这里就是为了把我钉在 Symfony(一款基于 MVC 架构的 PHP 框架)的祭坛上,请放松! 我们是来聊天的,请把枪放下,好吧?现在,恰恰相反,如果你对 PHP 深恶痛绝,那就吃点爆米花,找个舒服的姿势坐下来,跟我们一起聊聊。


话说很久之前,我自己也在做一些 Symfony2。而且我也很喜欢 Symfony 这个玩意儿,说实话,这玩意儿还挺好使的。我把这事儿告诉了一名开发人员,他是我在一次 DevOps 会议上认识的哥们。但我万万没想到,他会如此震惊,感觉都快要呕吐了,我忘不了他看我的眼神,就好像我屠杀了一名新生儿似的。为方便起见,从现在开始,我就姑且称他为 James。于是,我马上问 James 一个问题,为什么对 PHP 如此憎恨呢?


PHP 过往的混乱

要想了解接下来的内容,你需要结合一些背景知识。为做到这一点,让我们稍微回顾一下。那是 1994 年,Rasmus Lerdorf (1968 年 11 月 22 日出生于格陵兰岛凯凯塔苏瓦克的程序员,拥有加拿大国籍。他是编程语言 PHP 的创始人,其中 PHP 的头两个版本是由他编写,后来他也参与 PHP 后续版本的开发)正在快速地编写一个 C 工具套件。这套工具用来管理他的个人网站。Rasmus 当时只是为了解决自己的需求才开发的。他也从来没有想过把它变成一种编程语言。这个工具套件中并没有任何东西是为了成为工具而设计的。一年后,Rasmus 发布了这个当时被称为 PHP/FI 的开源工具包,看起来是这样的:


<!--include /text/header.html--><!--getenv HTTP_USER_AGENT--><!--ifsubstr $exec_result Mozilla-->  Hey, you are using Netscape!<p><!--endif--><!--sql database select * from table where user='$username'--><!--ifless $numentries 1-->  Sorry, that record does not exist<p><!--endif exit-->  Welcome <!--$user-->!<p>  You have <!--$index:0--> credits left in your account.<p><!--include /text/footer.html-->
复制代码


与你今天在庞大的 PHP 7 框架中使用的东西相去甚远,不是吗?然而,所有这一切都来源于此。接下来的故事是这样的:1997 年,代码被一个开发团队接管,当年发布了 PHP/F12。1998 年,代码一部分被重写,发布了 PHP 3。1999 年,PHP 的核心被完全重写,发布了 Zend。第二年发布了 PHP 4。2004 年,PHP 5 与 Zend 2 一起发布。PHP 6 被取消了,因为此时的 PHP 开发已经变成了人间炼狱。最后,通过对该语言进行又一次的重大重写:2015 年,发布了 PHP 7。我记得当时我非常激动。但最初,Rasmus 只不过是编写自己的东西而已。2004 年,他曾接受过一次采访,讲述了一些不可思议的事情。


我真的不喜欢编程。我开发这个工具的目的,就是为了减少编程的工作,这样,我就可以简单地重用那些我不知道如何停止的代码,我从来也没有打算过要编写一种编程语言[……]。实际上我根本就不知道要如何编写一种编程语言,我只是不断地添加下一个逻辑步骤。



不一致且设计糟糕

回到 2019 年,我和朋友 James 一起参加聚会。在聚会上他就立即跟我吐槽起 PHP “恶心” 的语法。这门语言是如何没有类型的,这门语言是如何变幻莫测的。无论是操作符的使用,还是函数的命名,都存在令人难以置信的不一致性问题。我就不给你一一列出 PHP 的问题了,要不然,这篇文章就会变得奇长无比,占用你一整天的时间才能阅读完毕。


如果你真想知道这一切,那么我就会发现你是世界上最讨厌 PHP 的人。不,其实我觉得最讨厌 PHP 的人就是他自己。所有这些帖子都验证了 James 曾对我说过的话。开发者之所以讨厌 PHP,是因为它是一种技术上不一致、设计糟糕的编程语言。当你将它和其他编程语言进行比较时,这对比就显而易见了。如果你读完这两篇文章后,还不承认 PHP 的确存在一些问题的话,那就是因为 PHP 已经成为你的信仰。而我也不会试图去说服 PHP 狂热分子。



使用 PHP,很容易产生糟糕的代码。而其他编程语言的限制就更多了。我们还看到 PHP 存在很多安全问题。而这里的问题也是一样的。使用 PHP 也很容易产生槽糕的、不安全的代码。但并不是说,只要你编写出正确的代码,PHP 就不是一个安全漏洞,也不会注定出现难看的代码。开发人员之所以讨厌 PHP,是因为使用一种允许如此多自由的语言中,更容易出错


PHP 成功的牺牲品

在这种环境的仇恨还有一个重要因素。开发人员讨厌 PHP,是因为它无处不在。我这个博客就是在 PHP 7 上运行的。像大多数网站一样,我只需托管一个动态页面,然后将其缓存。PHP 就可以胜任这项工作。是的,语言本身并非最好。是的,我可以使用高超的技术栈。但谁在乎呢?PHP 以一种快速而方便的方式满足了我的需求。也正是因为这个原因,80% 的网站都是用 PHP 运行的。


当我向 James 解释同样的事情时,他就开始发疯。就和你我一样,James 也有朋友和家人。这些人经常就专业和个人网站的问题向他寻求帮助。这些人的网站经常是用什么语言写的,你猜猜?于是,James 发现自己不得不经常修改 PHP 中的内容,他经常为此感到头疼。



随着 WordPress 的出现,它在互联网上占据了主导地位,James 将在很长一段时间内使用 PHP。顺便提一下,我跟你说的这种语言好像只能处理像我这样的博客,但显然事实并非如此。Facebook、Wikipedia、Yahoo!、Flick、Tumblr 等所有这网站都是用 PHP 运行的,每个月都毫无畏缩地迎接数以百万计的用户。PHP 在这方面做得非常好,而且也已经做了很长时间。


未来已成定局的老人

十年来,你一直听到 PHP 即将消亡的消息。但 PHP 一直都健在。尽管有时间和最新的架设技术,它依然纹丝不动。开发人员讨厌 PHP,是因为它与那些炒作驱动的开发背道而驰。在一个人人都迅速投资最新事物的行业里,PHP 就像一个不想出售土地的老人,一个继续傲慢地跳舞的老人。



我和 James 的讨论照常进行,突然间,他告诉我一些完全令人震惊的事情。“PHP 是迄今为止你所能找到的最慢的 Web 语言。”当他这样说的时候,我就知道他已经很长时间没有读过任何有关 PHP 的东西了。


PHP 的发展,并不在于声誉

在许多开发者的心目中,PHP 一直停留在版本 4。当这门语言不稳定时,具有灾难性的性能,且不存在的面向对象进程设计。开发人员讨厌 PHP,是因为他们认为这门语言已经停滞不前有 20 年了。当你今天去了解 PHP 时,你就会知道它已经远远超过当年的 PHP 4 了。


PHP 7 比 Python 和 Ruby 都要快。如果你愿意的话,PHP 7 也可以做到强类型。随着近年来出现的静态解析器,工具也在不断发展。像 Symfony 或 Zend 这样的框架强制采用良好的实践。每年都会发布一个新版本,并附有非常精确的议程。此外,PHP 7.4 具有更好的性能。还是那句话,由于篇幅所限,我不会赘述现代 PHP 正在发生的一切。如果你想知道所有的事情,我推荐你阅读这篇文章《2019 年的 PHP》(PHP in 2019):是时候改变你对这门语言的看法了,它已经和过去没有任何关系了。


开发人员讨厌 PHP,是因为讨厌 PHP 很炫酷。这门语言也是正因为此而声誉一直不佳。是的,留下了很强的后遗症,也存在很多问题。但对于大多数网站来说,还是有很多好东西的。


结语

大多数讨厌 PHP 的开发人员之所以讨厌 PHP,是出于优越感或无知。但不管怎样,这都是愚蠢的。你必须根据自己的需要选择一种技术。PHP 在许多场景中都非常有用,非常强大。仅仅因为它的声誉就将它排除在外可不是什么好主意。


作者介绍:


Mehdi Zed,开发人员。现在是蒙特利尔的后端开发者和 DevOps。Dev 是他的爱好之一。热爱写作。


原文链接:


https://www.jesuisundev.com/en/why-developers-hate-php/


2020 年 5 月 28 日 09:212621

评论

发布
暂无评论
发现更多内容

硬核干货:葡萄城 SpreadJS 前端表格技术分享

Geek_Willie

Excel SpreadJS 表格控件 表格开发

池化技术到达有多牛?看了线程和线程池的对比吓我一跳!

王磊

Java

当远程工作成为未来的工作方式......

Atlassian

Atlassian Jira

秒杀全网!研发、运营必备实用工具网站

程序员生活志

工具类网站

Flink 1.11 SQL 使用攻略

Apache Flink

flink

《深度工作》学习笔记(2)

石云升

学习 专注 深度工作

计算机网络基础(十)---网络层-迪杰斯特拉算法

书旅

算法 计算机网络 网络 最短路径

将Arch Linux安装到U盘

Kurtis Moxley

Linux 安装操作系统

到底一台服务器能够支持多少TCP并发连接?

南方有乔木兮

第八周作业

田振宇

BIGO技术 | Paxos的工程实践与极致优化

InfoQ_3597a20b53cc

技术

4. JSON字符串是如何被解析的?JsonParser了解一下

YourBatman

Jackson JSON库

原创 | 使用JPA全面实现DDD持久化【关于本书】

编程道与术

Java hibernate DDD JDBC jpa

国家版权局发布《关于规范摄影作品版权秩序的通知》

Geek_987812

电子存证 作品版权 侵权盗版 剑网2019

如何成为一个成功的首席数据官

尹千觞

实战:docker搭建FastDFS文件系统并集成SpringBoot

生命在于折腾

springboot

蚂蚁上市:P7可获1200万元期权,酸酸酸酸酸...

程序员生活志

互联网热点 蚂蚁金服

QQ音乐PB级ClickHouse实时数据平台架构演进之路

腾讯云大数据

大数据

企业为何需要建立统一的复用型软件平台?

力软.net/java开发平台

Java 企业信息化 开发工具 框架 平台应用服务

week08 总结

Z冰红茶

真香!Linux 原来是这么管理内存的

cxuan

Linux 操作系统

央行数字货币或将成为经济“内循环”的未来加速器

Geek_987812

数字经济 全球经济下行 降息 惠普金融深化

LeetCode题解:142. 环形链表 II,JavaScript,快慢指针,详细注释

Lee Chen

LeetCode 前端进阶训练营

What's New in Dubbo-go v1.5

apache/dubbo-go

Go dubbo

CDN百科第八期 | 我的网站到底需不需要CDN加速?

阿里云Edge Plus

网站 CDN 云直播

大厂经验(4):iOS端埋点自动采集技术原理剖析

DeeperMan

ios 前端 数据采集 埋点

腾讯“神盾-联邦计算”平台带你翻越数据合作的重重大山

腾讯云大数据

大数据

如何设计一个亿级消息量的IM系统

Chank

Java Architecture Architect IM Instant Messaging

顺势昌,逆势亡:人啊,得学会做信天翁,而不是鹧鸪鸟

非著名程序员

创业 程序员 管理 提升认知

一个小实验,来

池建强

算法 薪资

乘商用之风,破后疫情之浪:丁耘分享华为如何持续护航5G新价值

脑极体

数据cool谈(第2期)寻找下一代企业级数据库

数据cool谈(第2期)寻找下一代企业级数据库

为什么开发人员讨厌 PHP-InfoQ