导读:随着 WordPress 的持续飞速增长和 PHP 7 和 8 的新速度,这种地位在短期内不会改变。

作者:Beau Beauchamp,译者:弯月

本文经授权转自公众号CSDN(ID:CSDNnews)

在流行文化的冲击下,也许很多人都不赞同本文表达的观点,但我毅然决定再一次逆流而上。我认为,虽然 PHP 百般受轻视,但这门编程语言的流行度比以往任何时候都高!

为什么?怎么 PHP 还没死吗?不是有那么多比 PHP 更优秀的编程语言吗?

不,并没有。如果真的有这样的语言的话,它们早就带头干掉 PHP 了。我们需要重新审视什么才是“更好”的编程语言。

为什么 PHP 还没死?如果你表示不解,那可能是因为你并不了解编程、程序员、市场和民主。实际上,这与代码、函数或语法没有任何关系。

01 抨击 PHP 成为了一种时尚

如今,为了在编程的圈子内走红,你就必须抨击与“主流文化”吹捧的编程语言有竞争关系的语言。这与语言本身的功能无关,只是因为文化,就有点像宗教。

程序员是一群固执己见的人,非常傲慢,但我们必须克服这些缺点。我们喜欢抨击我们不喜欢和不使用的编程语言。你会发现有些工程师说 Java 很糟糕,有些说 C# 很糟糕,而有些则说 Go 很糟糕。至于具体是什么语言根本不重要,总会有人批评。

此外,还有一种更深的鄙视,最近这段日子 PHP 和 Python 之间默默地展开了一场较量,似乎学术界正在策划一场阴谋:干掉 PHP,让 Python 取而代之。

如今,你甚至会发现在一些维基百科的页面中,LAMP 技术栈中的 P 居然神奇地变成了 Python。20 年前,在我使用LAMP 的时候,这几个字母指代的可是 Linux、Apache、MySQL 和 PHP,当时的 P 指的可是 PHP,而不是 Python,甚至不是Perl。我并不是说这些定义不能改变。也许是我的疑心太重了?不够包容?还说 Python 占据了 PHP 的位置?

对于我们大多数人来说,大学里学习了 Python,还有其他一些实际工作中可能永远也用不到的小众语言。虽然我们的老师或其他菜鸟会说:“PHP 很糟糕”,但也许他们中的大多数人从未编写过一行 PHP 代码。

事实上,你甚至可能会怀疑是否真的有人从事专业的 PHP 编程工作。普通人对 PHP 的不屑一顾实际上并不合逻辑,而且也不是发自内心的。只不过,与朋友在咖啡馆聊天的时候,我们习惯于一起鄙视某些明星、网红或者 PHP。

此外,还有一些编程纯粹主义者,他们愿意浪费宝贵的时间吹毛求疵,讨论 PHP 如何糟糕。大多数这样的争论都会围绕个人的偏好,或者他们不喜欢的细微差别,为的是宣传自己喜欢的编程语言,并希望这些语言一统天下!

他们的抱怨没完没了:

  • PHP 的类型很弱,而且还有很多糟糕的代码。

    Javascript 和 Node.js 又何尝不是呢?你不是一样在用?

  • PHP 的函数太多了。

    有些人就连这都要抱怨,是因为太方便了吗?

  • 函数名不一致。

当一种语言真正做到民主化,而不是由哪个“专家高手”凭一己之力一手编写而成,就会出现这样的问题。

可见,他们对 PHP 的批评通常都源于个人偏好,或者只是鸡蛋里挑骨头。要是这么说的话,我们也可以针对Python、C#、Java、Go、Javascript 或其他任何语言挑出相同的毛病。作为程序员,我们喜欢抱怨,满腹牢骚。

但作为程序员,我们喜欢抨击 PHP 的真正原因是,我们固有的狂妄自大和赤裸裸地嫉妒。

02 PHP更容易使用

PHP诞生于 90 年代中期,甚至在我们中的一些人出生之前。我从 2000 年初开始使用 PHP,当时的版本正在从 4 向 5 过渡,后来我开始使用 CodeIgniter、ZendFramework,在自己的框架中编写应用。

我认为 PHP 长盛不衰的原因,也是这门语言不会消亡的主要原因是,它不仅嵌入到了各类新旧应用程序中,也嵌入到了新老程序员的脑海中,他们使用 PHP 已经长达几十年了。我们不会离世,我们编写的商业代码也不会消失。

有趣的是,Python 诞生于 1991 年,那时PHP 还没有出现。虽然 Python 的生命更长,但它的采用未能达到 PHP 如今的水平。

为什么?

在我个人看来,与 PHP 相比,Python 使用起来很痛苦。这个问题在 Python 3 中有所缓解,但在 15 年前,Python 还没有各种开箱即用的、“花里胡哨”的函数,远比不上 PHP。你必须手动安装很多功能。

此外,我发现 Pyhon 还有一个问题,而且这个问题一直延续至今,那就是空格。我讨厌使用空格作为分隔符的语法。我希望按照自己喜欢的方式分隔代码,而且不希望编程语言碍手碍脚。无论你再怎么说得天花乱坠,代码是我的,我想怎么写就怎么写,谁也管不着。

Python一直吹嘘自己的空格语法“易于阅读”,但这不过是营销的空话罢了。我个人认为,Python 使用了最糟糕的语法,还不自知。

这种自以为是的语法很容易引入错误。最初,在 IDE 能够所有这些问题之前,我相信没有程序员喜欢这种语法。至少我个人就不喜欢。这也是几十年来该语言的采用率一直很低迷的部分原因。其实就是因为这种语法对用户不够友好。

此外,我认为早年间人们并不知道 Python 的存在。它作为一种脚本语言嵌入到 Linux 发行版中,这就是它的主要用途。没有人会跑出来大喊道:“我可以用 Python 构建网站了!”

事实上,虽然我们可以用 Python 做网站,但优秀的工程师都知道 Python 的强项并不是做网站。除了我个人对语法的偏好之外,Python 在功能上是一门非常强大的语言,特别是它的库可以用在数据科学或其他侧重于数学计算的地方,这些情况下精度是必须满足的要求。

03 PHP是任何人都可以使用的语言

我同意,在过去的 15 年间,Python 推出了许多更新,并超越了 PHP,只不过这些更新晚了十年。

2008年发布的 Python 3 实际上打破了向后兼容性。Python 2 的代码无法与 Python 3 一起运行,你需要做一定的修改。但是,如果有一百万行代码需要更新,那就没戏了,尤其是在企业环境中。

公平地说,PHP 7 和 8 也破坏了一些 PHP5 的代码(没有 PHP 6)。我是ZendFramework 1 社区的一员,该社区帮忙更新了运行在 PHP 7 和 8 之上的框架。幸运的是,在将 ZF1 升级到 PHP 7 和 8 时,我的企业遗留代码几乎没有损坏。所以,大部分 PHP 5.6 代码仍然可以向后兼容。

但也许真正帮助 PHP 一炮而红的事件是,一家成立于 2005 年的名为 Automattic 的小型初创公司。

WordPress刚开始的时候很不起眼,但它不仅改变了开发人员,而且也改变了普通人发布网站的方式。

到目前为止,最好的发布选择是 Drupal、Joomla 或其他一些BBS 软件。但这些软件使用起来都很痛苦,因为编写这些软件的人的思考方式更接近程序员,而不是普通用户。

如果 WordPress 是用 Python 编写的,那么可能 PHP 真的会走下坡路。但我敢说,Python 会阻碍 WordPress 的迅速崛起,甚至完全阻止。

采用以及扩展贡献者的支持将关系到语言或应用程序在开源市场中的生存。而易用性是刺激采用率迅速上涨的关键。

作为一名受过大学教育的软件工程师,无论你如何诋毁 PHP,都无法否认 PHP 不仅受到了专业软件工程师的青睐,而且就连兼职人员、家庭主妇、平面设计师、公司经理、企业家和小学生都能使用计算机编写网页。

可以说 PHP 是信息时代的 BASIC(语言)。

作为一名软件工程师,你的思考方式必然和软件工程师一样,而不是那些只想利用有限的时间和资源为自己的小企业建立一个网站的人。

而 WordPress 和 PHP 改变了这一切。

WordPress本身很容易使用,但功能很有限。普通人可以利用 WordPress 的插件架构,编写很小的 PHP 代码片段,他们不需要重写整个类或成为软件工程师来完成这些工作。

数以百万计的业余程序员通过 WordPress 在网络上与其他人分享他们的成功,并发展了这个平台。

通俗易懂的 PHP 语言让普通人也可以编写有效的代码。简单、没有特殊要求、弱类型、不需要编译,就可以运行。

04 PHP与互联网

15年后的今天,PHP 为 78% 的 Web 提供支持。仅 WordPress 就占所有网站的近 40%,并拥有近 2/3 的 CMS 市场份额!关键是Python 希望占有这些市场的 10%!尽管 Python 纯粹主义者对 PHP 充满仇恨,但 Python 仅占 Web 的不到 1.5%。

有些企业客户的招聘人员曾联系过我,他们希望删除所有的 Python Web 代码,并换成 PHP。你可能会感到很震惊,但其实这种情况应该更多。为什么?因为老实说,Web 不是 Python 的主战场,Python的主要用户是数据科学和其他专家,而且有这方面经验的人才供不应求。

通常公司需要灵活。当需要扩大团队或有人离职时,他们不可能花费数周或数月来寻找新的 Python 人员。而且 Python 工程师也很贵。

对于小型企业来说,寻找 PHP 程序员要容易得多,而且如有必要甚至可以进行培训。关键是你可以找到拥有数十年经验的高级 PHP 架构师,比找相应的 Python 人员要容易得多。

关键是,如果你在一家公司工作,如果没有正当理由就想用 Python 编写网页或中间件,那么就会遭到责备。因为公司会为此背负上 Python 代码,将来他们需要花费巨额资金来删除这些代码,并用正确的工具替换。

应用程序架构师的首要工作是,针对企业的实际情况,选择最有效的技术。不能因为网上非常流行,或者是学校里教了某种语言,你就根据自己的喜好来选择。

我建议完全用 Python 编写 SaaS 应用程序的情况非常少,考虑到 Python 的 Web市场份额,似乎大多数应用程序架构师都会选择正确的语言。他们会在 Python 最擅长的领域选择 Python,并根据 PHP 的最大优势选择 PHP。

05 总结

作为工程师,我们都喜欢使用自己熟悉的语言,而且我们喜欢对自己不熟悉的技术嗤之以鼻。

各个高校都在尝试将 Python 作为通用的商业语言。但实际上,Python 更适合运行服务器、数据科学、处理大型复杂数字,乃至加密货币的挖矿等。

而 PHP 是大众语言,它已成为互联网事实上的语言。

所以,如果你喜欢,可以继续抨击 PHP,继续鄙视它。但无论怎样,PHP 仍然是迄今为止网络上使用最广泛的语言,随着 WordPress 的持续飞速增长和 PHP 7 和 8 的新速度,这种地位在短期内不会改变。

参考链接:

https://beau-beauchamp.medium.com/php-is-killing-python-2be459364284

本文转自公众号“CSDN”,ID:CSDNnews

延伸阅读

PHP 正在干掉 Python相关推荐

  1. python内存泄露memory leak排查记录

    问题描述 A服务,是一个检测MGR集群主节点是否发生变化的服务,使用python语言实现的. 针对每个集群,主线程会创建一个子线程,并由子线程去检测.子线程会频繁的创建和销毁. 上线以后,由于经常会有 ...

  2. hibernate 无法保存timestamp_为什么很多人不愿意用hibernate了?

    点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 上一篇:这300G的Java资料是我师傅当年给我的,免费分享给大家(已修复) 下一篇:昨天分享资料不小心把百度网盘深处 ...

  3. 滑动窗口限流 java_Spring Boot 的接口限流算法优缺点深度分析

    点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 上一篇:这300G的Java资料是我师傅当年给我的,免费分享给大家(已修复) 下一篇:昨天分享资料不小心把百度网盘深处 ...

  4. 最新世界大学排名:计算机专业哪家强?

    公众号关注 "GitHubDaily" 设为 "星标",带你了解圈内新鲜事! 转自学术头条 对于想要申请计算机科学专业学位的学生们来说,有几个全球大学排名是非常 ...

  5. JetBrains 发布新款编程字体,提高编程效率、开源免费可商用!

    上一篇:这300G的Java资料是我师傅当年给我的,免费分享给大家(已修复) 下一篇:昨天分享资料不小心把百度网盘深处的秘密泄露了(已修复) 来源:公众号SegmentFault 作为一名「代码操纵者 ...

  6. 终于放弃了单调的swagger-ui了,选择了这款神器—knife4j

    点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 上一篇:这300G的Java资料是我师傅当年给我的,免费分享给大家(已修复) 下一篇:昨天分享资料不小心把百度网盘深处 ...

  7. 简单的股票行情演示(二) - AKShare

    一.概述 二.环境搭建 三.使用总结 1.API文档 2.数据字典 3.效果截图 4.后台服务 四.相关文章 原文链接:简单的股票行情演示(二) - akshare 一.概述 上一篇文章简单的股票行情 ...

  8. 震惊!世上最全的人工智能知识总结!

    一.数学 数学中的各种分布(Univariate Distribution Relationships) x2检验(chi-square test)或称卡方检验 二.语言基础 C++ vector.l ...

  9. python run之后出现>>> runfile(‘F:xxx.py‘, wdir=‘F:xxx‘) 快速干掉它的办法

    运行结果 F:\Z\Python\install\Anaconda\envs\admin\python.exe "F:\Z\Python\install\pycharm\installPYc ...

最新文章

  1. 人工智能改变未来教育的5大方式!
  2. ida so 不root_十字符病毒,杀不死的小强,一次云服务器沦陷实录
  3. 【SSH网上商城项目实战19】订单信息的级联入库以及页面的缓存问题
  4. 通过Java Hipster升级Spring Security OAuth和JUnit测试
  5. leetcode 872. 叶子相似的树(dfs)
  6. JavaScript 对象和字串之间的转换
  7. 01.php面向对象
  8. [读码时间] 自定义右键菜单
  9. 5.WEB版QQ多人聊天,带离线留言功能
  10. 基于javaweb房屋租赁系统设计与实现
  11. 环洋市场调研-2021年全球Camlock联轴器行业调研及趋势分析报告
  12. 普渡大学科技学院计算机信息技术,普渡大学-学院介绍
  13. LibPcap经常丢包怎么办?
  14. Python常见问题解决办法汇总
  15. LLJ-100HS; LLJ-500HS漏电继电器
  16. 多渠道归因分析(Attribution):传统归因(一)
  17. 手机异步发送短信验证码解决方案-Celery+redis
  18. UML画图文档之汇总
  19. 区块链与社交媒体有着怎样的联系?
  20. alma linux 上配置 ntp 服务器和客户端

热门文章

  1. Qt笔记-对connect中第5个进行多组实验(对信号与槽进一步认识)
  2. 软件设计师习题笔记-重点习题二
  3. C/C++ OpenCV图像的阈值操作
  4. android 菜鸟面单打印_1.0 Android基础入门教程
  5. 有4个节点可以构造出 二叉树_简单4个步骤就可以拍摄出美丽的城市夜景,赶紧试试吧...
  6. u盘启动pxe安装linux,U盘启动安装centos5.5+centos6.3+PXE网络安装CentOS
  7. 前端基础-html-音频标签的介绍
  8. 51单片机之外部引脚及总线接口
  9. (王道408考研操作系统)第五章输入/输出(I/O)管理-第一节4:I/O软件层次结构
  10. Python 安装第三方库,模块和包的安装方法