停止说PHP已死

2020-12-05 04:53:02

不是。 PHP还没有死。它没有死,也没有达到“寿命终止”。而已。无论有多少人希望它消失,它都不会消失。至少不是很长一段时间。

我已经写了一段时间了。在这里和那里进行调整,但无法决定何时发布。在最近发布的PHP 8中,“现在”感觉到了合适的时机。

每个月我都会读一篇文章,评论或推文,指出PHP快要死了,我们应该停止使用它。如果您在某个论坛或其他论坛上或Stack Overflow上看到有关学习PHP的问题,则几乎有100%的机会会得到某人的回答,例如:“您为什么要学习PHP?在< insert-cool-language-that-isnt-php-here>”这样的地方学习。

我花了近20年的时间用PHP编写东西(实际上可能还要更多。我真的不记得我刚开始的时候)以及其他语言,并且在大多数情况下,我只是忽略了其中的大部分内容对话。在几乎所有这些年中,PHP一直“垂死”,我应该在数年前停止使用它。我绝不是我使用的任何一种语言的专家,我对PHP有很多了解,但是一次又一次,我发现自己回到了它。

当我偶尔被写得很好的反PHP文章说服时,我已经花了很多时间学习其他语言。我承认这些冒险取得了巨大的成就。尽管我可能永远不会专业地使用其中的许多语言,但我通过学习另一种语言而学到了很多有关成为程序员的知识。

如果您从这篇文章中得到一件事,那就应该是:“学习另一种语言”,而不是因为“ php快死了” –事实并非如此。您应该学习另一种语言,因为它对您作为程序员有好处。如果PHP真的快要死了,那么可以肯定的是,您有继续前进的理由,但是就目前而言,它还没有死。

其中许多图表之一显示了PHP在网络上的流行程度,这是许多PHP程序员在捍卫自己的选择时会提出的第一件事。尽管这些数字非常有趣,但我倾向于相信它们有些误导。忽略PHP之所以流行是因为WordPress之类的事实是一个错误。喜欢它还是讨厌它,WordPress是我们都在这里的原因。但是WordPress是……很好……WordPress。它有很多(我的意思是很多)错误,但是我知道(很多人都是朋友)使用WordPress做很多令人惊奇的事情-赚了很多钱。

PHP不是WordPress。而且,尽管WordPress已牢固地融入到PHP的历史书中,但PHP比WordPress更好-更好。 WordPress有很多问题,PHP有很多问题,但这并不意味着它对每个项目都是错误的选择。我可能不会用C ++编写我的Web应用程序(或者至少在那些项目的语言列表中排第),但这并不会使C ++成为一门糟糕的语言。就像我不会使用PHP编写硬件驱动程序或与AI相关的任何方式一样,它不适合该工作。就在驾驶室之外

语言的选择与您所知道的也有很大关系。就像古老的谚语所说:时间就是金钱,在大多数情况下,为项目采用新语言是一项艰巨的任务,这将给通常已经很紧迫的时间框架带来更大的压力。我非常了解PHP,因此通常会成为我的首选。我了解一点Python,但是使用PHP会更好。我可能可以在Python中做同样的事情,但是要花我两倍的时间(至少在开始的时候)。这并不意味着我根本不会使用Python,或者我对Python有任何反对,仅表示PHP是我的首选。

学习语言实际上并不那么难,有经验的程序员也许可以在周末学习某种语言的要旨。但这并不意味着他们会说这种语言。知道一种编程语言并不仅仅是知道哪个内置函数可以做什么,还在于拥有足够的经验来知道何时使用什么功能或生态系统如何融合在一起。

我知道PHP,但是我也知道如何设置Nginx Web服务器以及如何配置FPM或opcache。我有足够的知识可以对依赖项做出明智的选择。我知道如何在生产中安全地部署PHP应用程序,并且我知道如果不谨慎使用某些语言功能可能会引入的安全问题。这些事情不仅仅是“了解”一种语言。作为程序员,我们投入大量时间来学习这些通常不属于我们选择的语言的东西。

这就是为什么当另一个程序员告诉我我选择的语言是“污秽”时,我真的很失望。我花了20多年的时间在这种技术上不断进步,但是现在这个人告诉我,我的选择错了吗?

嗯,这没错。 PHP给了我令我满意的职业。我住在一所漂亮的房子里,开着一辆很棒的汽车,因为我花了20年的时间才真正做到这一点。

许多“我们讨厌PHP并认为它应该消亡”的人群提出了很多他们认为使PHP成为全面错误选择的事情。我们已经听到很多年了,其中有些是基于远程版本的PHP(我不知道为什么每个人仍然如此专注于PHP 4,我是说真的吗?)。其他事情是毫无根据的和不真实的。这不是“我的语言胜于您的语言”,我坚信每种编程语言都有其用途。将这些东西带入世界的人们(比我聪明得多)通常是有充分理由的。编程语言通常不会错误发生。

答案很简单:因为它在那里。我是自学成才的,没有太多的正规培训方法。除了我偶尔参加的在线课程外,我没有一所著名大学的纸上有邮票的印章,上面写着我可以告诉计算机该怎么做。

我来自设计背景,尽管我从7岁起就一直在修改计算机和代码,但我并没有遵循那种对教育的热情。我什至不知道为什么。我喜欢计算机,也喜欢互联网,但是……我选择了图形设计。我不会涉及所有这一切,因为尽管我有学位,但它实际上并没有在我今天的工作中发挥很大作用。

我来到PHP就像相信大多数PHP程序员一样。因为我们想要一种使网站做得比显示图片和文字段落更多的方法。当我想到如何从数据库中获取内容并将其显示在网页上时,我感到非常兴奋。真是令人震惊!这正是我所需要的,我首先冲刺。

然后,我找到了WordPress。就像在计算机屏幕前的其他所有具备一些基本PHP知识的打n者一样,WordPress改变了一切。太酷了吧?

WordPress得益于像我这样的人。我们所有想要博客但不具备自己知识的年轻人。

您安装了WordPress ...然后添加了一个插件,然后更改了主题...然后对该主题进行了一些小的更改,使其做了其他事情,或者看起来有所不同。然后,您修改了插件。然后,您制作了自己的主题。然后,您对自己进行了思考……我还能做什么?

因此,我被介绍给PHP。我没有选择PHP,而是选择了我。 20年后的今天,我仍在用PHP构建东西。当然,不再使用WordPress,我想我已经成为一名PHP程序员,已经知道如何撰写本文。

PHP如此受欢迎的主要原因之一是它无处不在。它几乎安装在任何地方。天哪,甚至您的普通MacBook都预装了PHP(尽管在以后的MacOS版本中它似乎会有所变化)。

使用go一词来编写PHP也非常容易。您通常不需要做任何特别的事情。创建一个index.php文件,并在其中放入一行PHP,然后将其上传到几乎所有共享的托管帐户中:

这样就完成了。开始使用PHP确实很容易,因为您确实不需要了解如何使PHP正常工作。几乎已经为您完成了。

但是,如果您相信这一点,那么这种“易用性”实际上就是对PHP的抱怨之一。从理论上讲,如果PHP非常简单,那么用PHP编写非常危险的代码也非常容易。

我一直对这个想法有些不安。难道是这样的建议,难于使用的语言就不太可能被用来创建错误的代码吗?我在某处读到,Microsoft针对Windows发行的补丁中有70%是为了解决由于C ++而引入的内存问题(不过,请不要在此引用我)。我怀疑为Microsoft编写C ++的人是业余爱好者,而且我很确定他们知道自己在做什么。是的,Windows比您的普通购物车网站复杂得多,但我认为这种说法是正确的。我不同意PHP易于使用是使它变得危险的原因。 Python被认为是初学者友好的,但是却没有同样的“危险”声誉。用任何语言编写危险代码都很容易。这不是使代码变得危险的语言,而是缺乏知识。

“轻松”并不是阻止初学者学习PHP的理由,而是为这些初学者提供更好的工具,以便对他们编写的代码做出更好的决策的原因。这是帮助他们找到正确的资源来正确学习PHP的原因。我很幸运;尽管我写了相当多的“危险”代码,但我生命中有些位置很好的人(并不总是PHP程序员)可以帮助我找出需要改进的地方。

好吧,那不是真的。 PHP的速度与编写的代码一样快。 PHP是一种脚本语言,因此将其与编译语言进行比较毫无意义,但是由于某些原因,我什至看到人们将PHP与Rust或Go进行了比较。这些只是比较有用的比较。将其与Python或Ruby进行比较可能会更好,但是一种语言的“速度”取决于许多不同的因素。语言本身,是的,但是它的环境,运行的代码,解释器的配置方式等。要说没有上下文的PHP速度很慢,这是很不合理的。

对于某些类型的任务,PHP肯定很慢。例如,如果您正在机器学习领域工作,PHP可能不是您的首选(尽管有些非常有趣的项目显示了希望)。

有时,您会看到两种不同语言之间的基准测试在做同样的事情,例如遍历一百万条记录并进行一些简单的计算。结果通常相隔毫秒。有时这用来表明PHP速度很慢(在某些情况下是快速)。如果您编写的软件在遍历一百万条记录时会花费额外的几毫秒的时间,那将是灾难性的,那么也许您是在问错问题。

是的,我有点同意。如今,我并不是WordPress的最大粉丝,但我也愿意承认,没有WordPress,我们可能不会拥有今天的PHP社区。

但是,由于使用一种软件,判断语言也很糟糕。这就像说C ++是一种不好的语言,因为您不喜欢Microsoft Windows。

PHP绝不是小把戏,而WordPress只是PHP故事的一方面。如果这是您想要的方式,则有很多框架和软件包可供选择。 Laravel被誉为“使PHP再次酷起来”,我不得不承认,到目前为止,该框架是我最喜欢的框架之一,并且对大多数项目而言,对我来说都是一个轻松的选择。

责怪PHP为WordPress带来的困扰确实是不公平的。可以说WordPress反映了PHP的局限性,但是那是很久以前的事,从那时起,该语言就已广泛成熟。

为什么?我真的不知道这是哪里来的。但这是一个很大的。是什么使语言“为企业做好准备”?一种语言比另一种语言更适合企业的情况? Java可能是企业领域中最流行的语言之一,但这不是因为Java本身已为企业准备就绪。这是因为Java EE平台的存在。我不是Java开发人员,因此在这里我会得到纠正,但是据我了解,Java EE是构建企业应用程序的平台。听起来有点像框架,对吧?因此,问题可能应该是“是< my-favourite-php-framework>企业准备好了吗?”

这个问题的答案完全是针对另一个职位。我要说明的一点是,PHP作为一种语言,与其他任何语言一样,都具有“企业级准备”。这完全取决于您的使用方式。

附带说明一下,前段时间我是一个小团队的成员,该团队在南非最重要的金融机构之一的内部网络上构建并部署了事件管理平台(我可能会写一些自己的经历)。该应用程序完全使用PHP和JavaScript编写。随着Covid-19大流行的到来,该系统承受着巨大的压力,但它已经处理了几乎所有问题。我们遇到了一些小问题,但是没有什么不能很快解决的。

这是唯一具有真相的线索,但它比您想象的要复杂。实际上,如果编写了不错的代码,PHP可以很好地扩展。当人们说PHP无法扩展时,他们通常是指用PHP编写的应用程序可能无法处理大量请求(例如数百万)。事情还不是那么简单,我认为很多误解来自WordPress,直到最近,WordPress一直因其具有可伸缩性问题而闻名。

作为证明,试图替代电子邮件的消息传递平台Slack拥有数以百万计的用户,这些用户每天都与使用PHP编写的后端系统相连。如果这不是关于PHP如何扩展的故事,那么我不知道这是什么。许多人都引用Facebook作为一个很好的例子,尽管我相信Facebook可能仍以某种形式使用PHP,但我认为他们可能已经将大部分应用程序从PHP移开了。但是,老实说,Facebook有点特殊。

您不能不谈论基础设施就不能谈论可扩展性。如果您在一个简单的共享主机上托管一个WordPress博客,而您突然得到成千上万的点击量……那可能是一个问题,您的主机将向您发送讨厌的电子邮件,或者至少向您收取更多费用比您预期的要好。

扩展应用程序不仅仅涉及您的语言选择。有很多动态的部分,当PHP首当其冲时,我感到沮丧。在正确的环境中且配置正确的较新版本的PHP每秒处理大量请求的能力已远远超过其能力。 Laravel Vapor是运行在AWS上的Laravel应用程序的第一方无服务器平台,其数量确实令人印象深刻。

我有时认为可伸缩性问题也有点夸张。在用PHP编写代码的20年中,我从未每秒处理“数百万个请求”。差远了。我们大多数人都不会建立下一个Facebook,无论我们多么想梦想这样做。实际上,我们构建的应用程序更具针对性。我们处理的是特定行业,通常是在特定的国家/地区,我们永远不必担心每秒处理数百个以上的请求。对于我们参与的许多项目,这将是巨大的。这并不意味着我们所做的并不重要,而只是意味着我们不需要考虑这种规模。扩展应用程序以处理数百万个请求只是我们日常工作的一部分。

你在跟我开玩笑。我把最令人讨厌的事留在了最后。如果您基于外观的好坏来选择技术堆栈,那么您做错了,您需要认真地重新评估您的选择。

但是,即使如此,我也不是真的。它可能来自在HTML中直接使用PHP的古老实践(这很丑)。问题是:我们真的不再这样做了。实际上,它被严重皱眉了。

我并不是说所谓的“美丽语言”是错误的选择,但这绝对不是您的决定因素。 Java非常丑陋,但却是世界上最受欢迎的语言之一。反对使用PHP是因为它丑陋,这很愚蠢。

PHP可能不是最漂亮的语言,但是我发现编写得当可以很容易理解。 PHP 8带来了一些非常出色的工具,可帮助使您的代码更加“美丽”。

我是真的我喜欢语言和生态系统。我喜欢过去几年的情况如何改善。 PHP 8不仅仅是同一语言的另一版本。在每个主要版本中,我们都会提供更好,更有用的工具。

我喜欢PHP入门容易,但是我也喜欢它很复杂,而且要成为一名专业的PHP程序员,实际上有很多事情要知道。我喜欢Symfony和Laravel,并认为与PHP核心团队一样,背后的人对推动语言向前发展也负有责任。

但是大多数时候我喜欢成为一名程序员。不只是用PHP,而且我喜欢用我碰巧使用的任何语言创建东西。我喜欢这样一个事实,我可以告诉计算机该怎么做,并且我自学了如何做。我欠PHP。没有PHP,我不知道现在该怎么做。也许我会是一个平庸的设计师,讨厌我的工作和生活(对任何读这本书的设计师来说都没有冒犯。我真的有才华的设计师朋友也喜欢他们的工作)。但是相反,我可以使用自己喜欢使用的语言来做自己喜欢做的​​事情。