作者: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的新速度,这种地位短期内不会有所改变。