前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP 在杀死 Python!

PHP 在杀死 Python!

作者头像
云头条
发布2022-03-18 18:29:42
4920
发布2022-03-18 18:29:42
举报
文章被收录于专栏:云头条云头条

作者:Beau Beauchamp是一位企业UI/UX全栈Web应用程序架构师兼高级开发者,20多年来,为美国一些大企业在云端开发过可扩展的应用程序,包括迪士尼、AAA、Enterprise、斯普林特和戴尔。

为何PHP比以往任何时候更受欢迎,又更遭讨厌?

我再次发现自己不走寻常路,进行一番大多数读者不想听到的现状核实:PHP这个编程语言界的“混蛋”比以往任何时候更受欢迎。

为什么?为什么PHP还没有翘辫子?IT领域有太多“更好”的编程语言,不是吗?

其实,好的编程语言并不多。不然,它们老早就抢过PHP的风头了。我们需要重新审视“更好”的语言究竟意味着什么。

如果你直挠头皮,搞不明白PHP为什么没有完蛋、甚至还没有奄奄一息,可能是由于你也许不明白编程、程序员、市场以及大众化等方面的几个问题,这些实际上与代码、函数或语法毫无关系。

炮轰PHP是一股潮流

要想在如今技术界的编程圈扬名立万,你得炮轰自己所学的某种编程语言之外的一切竞争性编程语言。这与功能无关,而是与文化有关。实际上,这更像是宗教信仰。

程序员是一群固执己见的家伙,这群人很自大,目空一切,动不动炮轰自己不喜欢或不使用的语言。工程师随口就说“Java太烂了。C#就是狗屎。Go糟透了”,这种事多了去。其实,受抨击的是哪种语言不重要。哪种编程语言不被谁喷过?

但似乎存在一种更深层的鄙视,这年头PHP与Python之间甚至爆发了一场口水战;学术界似乎在酝酿某个阴谋:他们想干掉PHP,用Python取而代之。

即使现在仍能在维基百科上找到LAMP堆栈居然包括Python的文章。20年前我接触LAMP时可不是这样。那时候,PHP是LAMP这个首字母缩写词中的“P”。不是Python,连Perl都不是。我倒不是说定义不能变。也许我是个阴谋论者?不兼容并蓄?还是说,Python阵营“从文化上盗用”我们的首字母缩写词?

对于我们大多数人来说,我们在学校里学Python,捎带学我们在实际情形下可能永远不会用的另几种小众语言。专家或其他菜鸟告诉我们“PHP很烂!”哪怕他们当中大多数人从来没有写过一行像样的PHP代码。

事实上,一想到有人专门吃编写PHP代码这碗活,你完全很意外,就像有人涌到反基督教者的脚下膜拜一样意外。

你鄙视PHP其实与其说合乎逻辑,不如说出自内心,或随大流。跟朋友们坐在星巴克喝拿铁咖啡,顺便吐槽一下特朗普、Nickelback乐队和PHP,算是一种“时尚”。

此外还有编程纯粹主义者,他们浪费了宝贵的时间来挑剔为何PHP那么烂。这些理由大多数围绕着个人偏好或他们不喜欢的某些细枝末节,于是吹嘘自己青睐的编程信仰或语言将会一统天下。

抱怨永远不会消停:PHP是松散类型的语言,容易带来糟糕的代码。(JavaScript和Node.js也是松散类型的语言,可你仍在使用这些语言)。PHP有太多的函数。(是的,有人就喜欢这点,函数使用方便,功能强大。)函数名称不一致。(是的,当一种语言真正实现大众化,而不是由试图攻读计算机学博士的某个人编写时,就会出现这种情况。)

这里的关键点在于,抨击PHP的声音通常囿于个人偏好或细枝末节。如果我们真愿意,完全可以同样对Python、C#、Java、Go或JavaScript等其他语言吹毛求疵。作为程序员,我们爱抱怨,生性使然。

但程序员们喜欢抨击PHP的真正原因是,我们天生傲慢自大,还有那几乎不加掩饰的嫉妒。

PHP确实更容易使用

PHP自上世纪90年代中期就问世了,我们中的一些程序员甚至还没生下来。我从2000年初开始使用PHP,当时PHP刚从版本4演进到版本5,后来我开始用CodeIgniter和自己开发的框架ZendFramework编写应用程序。

我提到PHP历史久远的原因是,这是这种语言不会消失的主要原因:它不仅嵌入到全球各地的新旧应用程序中,还嵌入到老老少少开发者的头脑中,他们使用PHP不是短短几年,而是整整几十年。既然我们短期内不会消失,我们编写的商业代码也不会消失。

有意思的是,Python其实自1991年就问世了,比PHP还要久远。但是尽管有一条更长的发展跑道,Python还是未能达到PHP现今的高度。

为什么会这样?

我个人认为,与PHP相比,Python用起来很麻烦。这个问题因Python 3而有所改善,但早在15年前,Python还没有PHP开箱即用的所有“花哨功能”。许多这些功能你得手动安装才行。

无论过去还是现在,我发现Python的另一个问题是Python使用空格缩进的语法(spaced syntax)。我很讨厌空格缩进决定分隔符语法的代码。我喜欢按自己喜欢的方式缩进代码,不希望我所用的编程语言在这方面碍手碍脚。反正,这是我自己的代码,想按自己的风格来编写,别人如何评价悉听尊便。

Python一直吹嘘这种空格语法“易于阅读”,但这完全是营销噱头。Python使用的是最糟糕的最固执己见的语法。

正是这种很固执己见的语法很容易带来错误;我猜想,开发人员根本不喜欢使用Python。反正我不喜欢使用。更确切地说,这可能是Python语言在十年前采用率低下的一个原因。对用户友好性差强人意。

我还认为人们根本不知道Python存在。它作为一种脚本语言被嵌入到Linux发行版中,这也是它最主要的用途。没人高喊:“哦,我现在可以用Python构建网站了!”

实际上,虽然Python可以用来开发网站,但优秀的工程师并不认为Python最适合用于开发Web。抛开我在语法方面的个人偏好不说,我承认Python是一种功能很强大的语言,尤其是Python库适合数据科学或注重精度的其他运算密集型用途。

PHP是谁都能使用的语言

鉴于过去15年来,Python迎来了许多更新版,我确实认为Python今天本该超越PHP,但Python有两大软肋:第一,开发那些更新版晚了十年。

2008年发布的Python 3实际上破坏了向后兼容性。除非你修改代码,否则Python 2代码无法与Python 3一同运行。但如果你有几百万行代码需要更新,谁愿意大刀阔斧的改动,尤其是在企业环境下?

公平地讲,PHP 7和8也破坏了部分PHP 5代码(未破坏PHP 6代码)。ZendFramework 社区帮助更新该框架,以便可以在PHP 7和8 上运行,我是这个社区的成员。幸好,将 ZF1升级到PHP 7和8后,我的企业遗留代码几乎没有破坏。因此,大部分PHP 5.6代码仍然高度向后兼容。

而真正帮助PHP一跃成为明星的最重大的分水岭事件也许是Automattic这家小型初创公司在2005年成立。

WordPress以开源起家,当时不起眼,但不仅改变了开发人员在网上发布内容的方式,还改变了普通人在网上发布内容的方式。

而那时候用来发布内容的最佳选择是Drupal、Joomla或另外某个BBS软件。但它们用起来都很麻烦,因为编写它们的人的思维方式类似程序员,而不是实际的最终用户。

要是WordPress是用Python编写的,那么PHP很可能走下坡路。但我敢说,Python就算不会完全阻止,至少也会遏制WordPress像后来那样一炮走红。

一种语言或应用程序想在开源市场存活下来,用户的采用和贡献者的支持至关重要。而没有什么比易于使用这个因素更能迅速促进采用了。

如果是科班出身的软件工程师,无论怎样贬损PHP都不为过,但使用PHP的不是只有正规文凭的软件工程师,还有兼职人员、家庭主妇、平面设计师、公司经理、企业家甚至小学生,小学生用自己的第一台计算机编写网页。这样的人有千千万万。

可以说,PHP就是信息时代的BASIC语言。

而作为软件工程师,你的思维方式类似软件工程师,而不是类似就想为小公司建个网站,而时间和资源有限的人。

WordPress和PHP改变了这一切。

是的,WordPress本身易于使用,但并非一应俱全。正是WordPress的插件架构(我在这里使用“架构”这个词很宽泛),让普通人可以用PHP编写一小段代码来实现变更,而不必重写整个类,也不必成为软件工程师才能完成工作。

这数以百万计的业余程序员随后在网上与他人分享成功经验,并帮助这个平台壮大起来。

易于理解的PHP语言让普通人可以编写管用的代码。它很简单,并非固执己见,类型松散,无需编译,确实管用。

RHP支撑着Web

快进15年后的今天,PHP支撑着Web中78%的系统。单单是WordPress就占网站总量的近40%,在CMS市场更是占有近三分之二的份额!别忘了,Python希望在这些市场占有10%的份额!尽管Python纯粹主义者们无比讨厌PHP,但Python支撑的系统在整个Web中所占的比例还不足1.5%。

而理应是这样子。

企业客户的招聘人员联系过我,这些客户想扔掉所有的Python Web代码,统统换成PHP。这可能让你震惊,但时常发生。为什么?因为老实讲,Web并不是最适合Python代码的地方。Python用户往往是数据科学及其他领域的专家。而经验丰富的人在市场上很抢手。

许多公司常常需要灵活性。当公司需要扩大团队或有人离职时,它们没有时间花几周甚至几个月物色新的Python 人才。Python工程师的要价也很高。

对大小企业而言,PHP程序员在人才市场上好找得多;如果需要,甚至很容易培训。关键是,找到经验丰富、有数十年经验的高级PHP架构师比找到同类的Python架构师容易得多。

还要,如果你供职一家公司,用Python编写Web或中间件,但又没有真正充分的理由来这么做,你肯定挨批。你在给这家公司添加代码,以后丢弃这些代码并用合适的工具加以更换要花大笔钱。

应用程序架构师的首要任务是,使用对具体使用场景而言最高效的技术,对公司或企业“精简减负”;而不是就因为它是网上搜来的最新“时潮技术”,或者它是你在学样里学会的编程语言,任由你的个人偏好拖累了公司。

我建议完全用Python编写的SaaS应用程序的这种场景很少见;考虑到Python在Web上的市场份额,似乎大多数应用程序架构师也这么做。他们只在各自适合的地方使用Python和PHP。

结语

作为工程师,我们都喜欢使用熟悉的技术,喜欢鄙视不熟悉的技术。我们都是这副德性。

许多大学试图把Python定位于一种通用型商业语言,但它其实不是。最好把Python定位于一种高端语言,用于运行服务器、支持数据科学、处理大规模复杂数据,甚至挖掘加密货币,这些才是它擅长的领域。

而PHP属于大众语言,已成为Web的一种事实上的标准语言。

所以诸位尽管炮轰PHP、认为它是最差劲的语言。但到头,PHP仍是Web上使用最广泛的语言;而且随着WordPress继续大行其道以及PHP 7和8的新速度,这种地位短期内不会有所改变。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云头条 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档