为什么开发人员讨厌 PHP

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

云栖号资讯:【点击查看更多行业资讯
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!

导读: 首先说一句,“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 年,他曾接受过一次采访,讲述了一些不可思议的事情。

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

untitled

不一致且设计糟糕

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

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

untitled

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

PHP 成功的牺牲品

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

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

untitled

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

未来已成定局的老人

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

untitled

我和 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://yqh.aliyun.com/zhibo

立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK

原文发布时间:2020-05-28
本文作者: Mehdi Zed
本文来自:“InfoQ”,了解相关信息可以关注“InfoQ

相关文章
|
Web App开发 关系型数据库 应用服务中间件
|
2月前
|
安全 关系型数据库 MySQL
PHP与MySQL交互:从入门到实践
【9月更文挑战第20天】在数字时代的浪潮中,掌握PHP与MySQL的互动成为了开发动态网站和应用程序的关键。本文将通过简明的语言和实例,引导你理解PHP如何与MySQL数据库进行对话,开启你的编程之旅。我们将从连接数据库开始,逐步深入到执行查询、处理结果,以及应对常见的挑战。无论你是初学者还是希望提升技能的开发者,这篇文章都将为你提供实用的知识和技巧。让我们一起探索PHP与MySQL交互的世界,解锁数据的力量!
|
2月前
|
NoSQL 关系型数据库 MySQL
不是 PHP 不行了,而是 MySQL 数据库扛不住啊
【9月更文挑战第8天】这段内容讨论了MySQL在某些场景下面临的挑战及其原因,并指出这些问题不能完全归咎于MySQL本身。高并发读写压力、数据量增长以及复杂查询和事务处理都可能导致性能瓶颈。然而,应用程序设计不合理、系统架构不佳以及其他数据库选择和优化策略不足也是重要因素。综合考虑这些方面才能有效解决性能问题,而MySQL通过不断改进和优化,仍然是许多应用场景中的可靠选择。
124 9
|
3月前
|
存储 SQL 关系型数据库
PHP与MySQL交互的奥秘
【8月更文挑战第29天】在编程的世界里,PHP和MySQL就像是一对默契的舞伴,共同演绎着数据的交响曲。本文将带你探索它们之间的互动,从连接数据库到执行查询,再到处理结果,每一步都充满了节奏与和谐。我们将一起走进这段代码的旅程,感受数据流动的魅力。
|
5天前
|
存储 关系型数据库 MySQL
PHP与MySQL动态网站开发深度解析####
本文作为技术性文章,深入探讨了PHP与MySQL结合在动态网站开发中的应用实践,从环境搭建到具体案例实现,旨在为开发者提供一套详尽的实战指南。不同于常规摘要仅概述内容,本文将以“手把手”的教学方式,引导读者逐步构建一个功能完备的动态网站,涵盖前端用户界面设计、后端逻辑处理及数据库高效管理等关键环节,确保读者能够全面掌握PHP与MySQL在动态网站开发中的精髓。 ####
|
6天前
|
关系型数据库 MySQL PHP
PHP与MySQL动态网站开发实战指南####
本文深入探讨了PHP与MySQL在动态网站开发中的应用实践,通过具体案例解析如何高效结合这两大技术构建数据驱动的Web应用。文章将涵盖环境搭建、基础语法回顾、数据库设计与操作、用户注册与登录系统实现等关键步骤,旨在为开发者提供一个从零到一的项目实战路径,展示PHP与MySQL协同工作的强大能力。 ####
|
25天前
|
SQL 关系型数据库 MySQL
PHP与MySQL协同工作的艺术:开发高效动态网站
在这个后端技术迅速迭代的时代,PHP和MySQL的组合仍然是创建动态网站和应用的主流选择之一。本文将带领读者深入理解PHP后端逻辑与MySQL数据库之间的协同工作方式,包括数据的检索、插入、更新和删除操作。文章将通过一系列实用的示例和最佳实践,揭示如何充分利用这两种技术的优势,构建高效、安全且易于维护的动态网站。
|
3月前
|
SQL 关系型数据库 MySQL
PHP与MySQL交互之基础教程
【8月更文挑战第31天】 在数字世界中,数据是推动一切的核心力量。本文将引导你探索PHP与MySQL的协同工作,通过实际代码示例,展示如何建立连接、执行查询以及处理结果集。无论你是初学者还是希望巩固知识的开发者,这篇文章都将为你提供宝贵的实践知识。