PHP 正在“杀死”Python

最近,我突然发现自己好像又在逆潮流而动。可能我的想法与很多朋友不同,我认为 PHP 这个编程语言界的“混蛋”比以往任何时候都更受欢迎。

最近,我突然发现自己好像又在逆潮流而动。可能我的想法与很多朋友不同,我认为 PHP 这个编程语言界的“混蛋”比以往任何时候都更受欢迎。

或许你会质疑——PHP 不是已经完蛋了吗?市面上已经出现了很多“更好”的编程语言,不是吗?

答案显然是否定的,否则 PHP 早就消失在人们的视野当中、还被踩上一万只脚。要找到背后的根源,我们恐怕先要弄清楚所谓“更好”的语言究竟是什么意思。

如果大家还不理解 PHP 为什么仍然活蹦乱跳,那我们可能得从编程、程序员、市场以及技术大众化等问题说起。是的,真正的原因在这里,而非代码、函数或者语法。

曾几何时,骂 PHP 代表一种潮流

要想在如今的编码工程领域选定队伍、站稳阵营,大家首先得把除领导指定语言之外的一切竞争性编程语言先痛骂一遍。这跟功能特性无关,而是业务文化的直接体现。换言之,这样的情景常让人想起入教仪式。

程序员们是一群固执己见的家伙,包括我在内,我们都很嚣张、喜欢抨击一切自己不用或者不喜欢的语言。大家肯定都听到过工程师说“Java 太烂了,C#就是坨垃圾、啥也不是。”这里具体在说什么语言并不重要,只要能博大家一笑就行。

但肆意痛斥的背后还隐藏着一种更深层次的不屑,这一点在最近的 PHP 与 Python 之争中体现得尤其明显。在很多学术人士看来,这就像是一场血腥的改朝换代、似乎有人想干掉 PHP 并用 Python 彻底取而代之。

不信大家可以上维基百科查一查,其中 LAMP 堆栈词条中的“P”代表的是 Python。有意思吧,20 年前我刚接触 LAMP 的时候,这个“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 的真正原因,在于我们固有的傲慢态度与不断膨胀的嫉妒心混合到了一起。

PHP 确实更容易使用

PHP 诞生于上世纪九十年代中期,岁数甚至比很多少壮派程序员还大。我是从 2000 年初开始接触 PHP 的,当时它刚刚从版本 4 过渡到版本 5。后来,我开始在自己编写的 CodeIgniter ZendFramework 框架中编写应用程序。

在我看来,PHP 之所以能够保持长青、多年过去仍无衰老迹象,主要原因就是它被嵌入到了全球各地的新旧应用程序当中、也被嵌入不分老少的开发者头脑当中。有些人用过几年,也有些人用了几十年,PHP 都在他们心中留下了深刻印象。开发者不会消失、编写出的商业代码也没有消失,所以 PHP 依旧健在。而且有趣的是,Python 其实诞生于 1991 年,比 PHP 还要早。而且虽然生命周期更长,但 Python 一直没能达到 PHP 目前的高度。

为什么会这样?

从个人观点出发,我觉得跟 PHP 相比,Python 使用起来要更麻烦。这个问题在 Python 3 中有所改善,但退回 15 年前,Python 还没有 PHP 中开箱即用的那些“花哨功能”(函数)。很多功能必须手动安装,否则就没得用。

而且长期贯穿 Python 语言的另一个老大难问题,就是其中的间隔语法。我真的非常讨厌这种由代码间的空格数决定分隔关系的语法。我喜欢按自己喜欢的方式分隔代码,而且完全受不了编程语言本身在这里动脑筋。大家可以随意批评我的这种习惯,但这是我自己的代码、是我亲手写的,想要按自己的风格来有错吗?如果连这点权利都不给,我诅咒自以为是的杠精们天天查 bug。

Python 一直吹嘘这种间隔语法“易于阅读”,这明显是营销屁话。我话搁在这里——Python 用的这套语法,堪称编程语言界最自以为是、最糟糕的语法。

正是这种令人难以理解的自以为是,让程序员们饱受折磨;在编程早期、还没有 IDE 能帮我们纠正语法错误的年代,根本就不会有多少程序员愿意正眼瞧瞧 Python。反正我自己是不想。更确切地说,这也是 Python 语言在诞生的前十年一直拿不下可观市场份额的一大原因。没错,这种设计压根没有用户友好性可言。

另外,Python 语言的存在感也不强。它是作为脚本语言被嵌入到 Linux 发行版中的,这也是它最主要的用途所在。没有人会欢呼“耶,Python 来了,我们可以用它构建网站了!”

当然,Python 也可以用来做网站,但优秀的工程师都能感受到它的特性并不适合 Web 开发场景。除了个人在语法层面的偏好之外,我承认 Python 是一种功能极为强大的语言,特别适合处理数据科学或者其他着重高精度数学运算的任务。

人人都能上手 PHP

过去 15 年以来,Python 确实迎来了脱胎换骨般的更新,所以在不少层面上已经超越了 PHP。但 Python 仍有两个沉重的包袱没能丢掉:第一,大部分更新的出现都晚了十年。

Python 3 发布于 2008 年,它的出现破坏了向下兼容性。除非额外修改,否则 Python 2 代码无法与 Python 3 一同运行。但企业环境下动不动就有几十、上百万条老版本代码,谁愿意去费这个劲?

公平地讲,PHP 7 和 8 也破坏了部分 PHP 5(并没有 PHP 6 这个版本)代码。我曾是 ZendFramework 社区的一员,社区一直帮助更新框架以支持旧代码的 PHP 7 和 8 上运行。好消息是,在将 ZendFramework 升级至 PHP 7 和 8 时,我们的遗留代码几乎没受到任何影响。因此,大部分 PHP 5.6 的代码都得到了良好的向下兼容效果。

而真正让 PHP 成为业界长青树的分水岭事件,也许是一家名为 Automattic 的小型初创企业在 2005 年的悄然建立。

如果 WordPress 是用 Python 编写的,我敢保证 PHP 绝对没有今天这么得意。但我也敢说,Python 会阻碍、甚至扼杀掉 WordPress 获得如今这样广泛成功的可能性。

一种语言或者应用程序要想在开源市场上持续生存,贡献者的使用与扩展可谓至关重要。而谁更易于上手,谁就能在行业内吸引到更多贡献者的支持。

作为受到科班培训的软件工程师,一切针对 PHP 的辱骂我都可以尝试去理解,但我想提醒大家一点——使用 PHP 的并不只是有着正规文凭的工程师,还有兼职人员、家庭主妇、平面设计师、公司经理、企业家甚至是小学生。没错,成千上万的小学生正在自己第一台计算机用 PHP 编写网页。

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

而作为软件工程师,很多批评者已经习惯了工程师的思维方式,却忘记这世上还有无数只想为小公司建个网站、时间跟资源都很有限的 PHP 用户。

WordPress 和 PHP 向他们敞开了热情的怀抱。是的,WordPress 本身确实易于使用,但还不够全面。而补充这个短板的正是 WordPress 插件架构(「架构」这个词在这可能不太准确,但大家能理解就行),允许普通人用 PHP 编写一小段代码来实现相应变更。用不着重写整个类、也不用考什么软件工程师认证,只需要一小段代码。

这数以百万计的业余程序员们就这样迈出了自己的编程之路,并在网络上与他人分享自己的心得、最终建立起硕大无朋的 PHP 技术社区。

易于理解的 PHP 让普通人也能有效编写代码,它简单、没脾气、类型松散、不涉及编译,可以说是任劳任怨。

PHP 支撑着整个万维网

快进到 15 年后,如今 PHP 支撑着 78%的 Web 系统。单是 WordPress 就在全部网站中占比近 40%,并拥有近三分之二的 CMS 份额!更重要的是,“声名卓著”的 Python 在这块蛋糕上仅占 10%!虽然作为竞争对手的 Python 死忠们对 PHP 充满仇恨,但 Python 支持的 Web 占比还不足 1.5%。

气不气?其实没什么可气的。

对,理当如此。

有企业客户的招聘人员联系过我,表示打算删掉所有 Python Web 代码并替换成 PHP。这事听着挺神奇,但其实经常发生。为什么?因为有一说一,Python 并不怎么适合 Web 应用。熟悉 Python 的开发者往往是数据科学及其他领域的专家,而且有经验的人才在市场上可谓供不应求。让他们搞 Web 开发,就挺没必要的。

企业则希望在 Web 上灵活一点。当他们需要扩张或者削减团队规模,也不想花几周甚至几个月慢慢找寻熟悉 Python 的人才。这类工程师很贵的,企业不大负担得起。

但适应不同业务规模的 PHP 程序员在劳动力市场上则是保质保量,甚至可以根据需要快速培训。更重要的是,就算想找一位经验丰富、拥有数十年经验的高级 PHP 架构师,难度也远低于在 Python 领域找个同等水平的。

而且公司管理层也会教 Python 铁粉们做人。你想在没有硬性理由的前提下用 Python 写 Web 或者中间件?人家根本没那么多预算,而且要求随时方便撤换成其他工具,这些都是 Python 不擅长的。

要成为一名合格的应用程序架构师,首先就是学会用最有效的技术为业务或者企业提供“规模适度”的支持:我们的个人偏好不重要、技术时不时髦不重要,最重要的是多、快、好、省。

所以我发现适合完全用 Python 编写的 SaaS 应用程序其实很少。考虑到 Python 在 Web 领域可怜的市场份额,似乎大多数应用程序架构师都跟我有着相同的判断。他们只在最适合的地方使用 Python,并在更多其他适合的地方使用 PHP。

总结

作为工程师,我们都喜欢用自己熟悉的东西,也习惯了对自己不了解的东西大加贬低。别不敢承认,咱们程序员就这毛病。

高校一直努力把 Python 定位成一种通用型商业语言——但它并不是。Python 更适合作为一种高端语言,专门用于运行服务器、数据科学、处理大规模复杂数据,甚至是处理加密货币采矿。这些才是它的专长。

而 PHP 则属于大众语言,也已经成为万维网上的客观标准。

所以如果愿意,各位也可以继续对 PHP 恶语相向,没关系。但归根结底,它仍是目前 Web 上使用范围最广的语言;而且随着 WordPress 的持续增长以及 PHP 7 和 8 的持续升级,这种领导地位短期内也绝不会被动摇。

作者简介:

Beau Beauchamp 是一名企业级 UI/UX 全栈 web 应用架构师和高级开发者,拥有 20 多年开发可扩展应用的经验。

原文链接:

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

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/86599.html

(0)

相关推荐

  • 苹果官网定购13promax,这速度,真是煎熬!哎,被苹果系统绑架了

    不得不承认,苹果的视频拍摄是众多旗舰机里面最好的。华为P40pro用了不到一年,准备放弃了,视频拍摄真不咋地。

    科技 2021年11月14日
  • 《黄帝内经·灵枢·本藏》

    黄帝问于岐伯曰:人之血气精神者,所以奉生而周于性命者也;经脉者,所以行血气而营阴阳、濡筋骨,利关节者也;卫气者,所以温分肉,充皮肤,肥腠理,司开阖者也;志意者,所以御精神,收魂魄,适寒温,和喜怒者也。是故血和则经脉流行,营复阴阳,筋骨劲强,关节清利矣;卫气和则分肉解利,皮肤调柔,腠理致密矣;志意和则精神专直,魂魄不散,悔怒不起,五脏不受邪矣;寒温和则六腑化谷,风痹不作,经脉通利,肢节得安矣,此人之常平也。五脏者,所以藏精神血气魂魄者也;六腑者,所以化水谷而行津液者也。此人之所以具受于天也,无愚智贤不肖,无以相倚也。然有其独尽天寿,而无邪僻之病,百年不衰,虽犯风雨卒寒大暑,犹有弗能害也;有其不离屏蔽室内,无怵惕之恐,然犹不免于病,何也?愿闻其故。   岐伯对曰:窘乎哉问也。五脏者,所以参天地,副阴阳,而运四时,化五节者也;五脏者,固有小大、高下、坚脆、端正、偏倾者,六腑亦有小大、长短、厚薄、结直、缓急。凡此二十五者,各不同,或善或恶,或吉或凶,请言其方。   心小则安,邪弗能伤,易伤以忧;心大则忧,不能伤,易伤于邪。心高则满于肺中,悗而善忘,难开以言;心下,则藏外,易伤于寒,易恐以言。心坚,则藏安守固;心脆则善病消瘅热中。心端正,则和利难伤;心偏倾则操持不一,无守司也。   肺小,则少饮,不病喘喝;肺大则多饮,善病胸痹、喉痹、逆气。肺高,则上气,肩息咳;肺下则居贲迫肺,善胁下痛。肺坚则不病,咳上气;肺脆,则苦病消痹易伤。肺端正,则和利难伤;肺偏倾,则胸偏痛也。   肝小则脏安,无胁下之病;肝大则逼胃迫咽,迫咽则苦膈中,且胁下痛。肝高,则上支贲切,胁挽为息贲;肝下则逼胃胁下空,胁下空则易受邪。肝坚则藏安难伤;肝脆则善病消痹,易伤。肝端正,则和利难伤;肝偏倾,则胁下痛也。   脾小,则脏安,难伤于邪也;脾大,则苦凑(月少)而痛,不能疾行。脾高,则(月少)引季胁而痛;脾下则下归于大肠,下加于大肠,则脏苦受邪。脾坚,则脏安难伤;脾脆,则善病消痹易伤。脾端正,则和利难伤;脾偏倾,则善满善胀也。   肾小,则脏安难伤;肾大,则善病腰痛,不可以俛仰,易伤以邪。肾高,则苦背膂痛,不可以俛仰;肾下则腰尻痛,不可以俛仰,为狐疝。肾坚,则不病腰背痛;肾脆,则善病消瘅,易伤。肾端正,则和利难伤;肾偏倾,则苦腰尻痛也。凡此二十五变者,人之所苦常病。   黄帝曰:何以知其然也?岐伯曰:赤色小理者,心小;麤理者,心大。无(骨曷)(骨亏)者,心高;(骨曷)(骨亏)小、短、举者,心下。(骨曷)(骨亏)长者,心下坚;(骨曷)(骨亏)弱小以薄者,心脆。(骨曷)(骨亏)直下不举者,心端正;(骨曷)(骨亏)倚一方者,心偏倾也。   白色小理者,肺小;麤理者,肺大。巨肩反膺陷喉者,肺高;合腋张胁者,肺下。好肩背厚者,肺坚;肩背薄者,肺脆。背膺厚者,肺端正;胁偏疏者,肺偏倾也。   青色小理者,肝小;麤理者,肝大。广胸反骹者,肝高;合胁兔骹者,肝下。胸胁好者,肝坚;胁骨弱者,肝脆。膺腹好相得者,肝端正;胁骨偏举者,肝偏倾也。   黄色小理者,脾小;麤理者,脾大。揭唇者,脾高;唇下纵者,脾下。唇坚者,脾坚;唇大而不坚者,脾脆。唇上下好者,脾端正;唇偏举者,脾偏倾也。   黑色小理者,肾小;麤理者,肾大。高耳者,肾高;耳后陷者,肾下。耳坚者,肾坚;耳薄而不坚者,肾脆。耳好前居牙车者,肾端正;耳偏高者,肾偏倾也。凡此诸变者,持则安,减则病也。   帝曰:善。然非余之所问也,愿闻人之有不可病者,至尽天寿,虽有深扰大恐,怵惕之志,犹不能减也,甚寒大热,不能伤也;其有不离屏蔽室内,又无怵惕之恐,然不免于病者,何也?愿闻其故。岐伯曰:五脏六腑,邪之舍也,请言其故。五脏皆小者,少病,苦憔心,大愁扰;五脏皆大者,缓于事,难使以扰。五脏皆高者,好高举措;五脏皆下者,好出人下。五脏皆坚者,无病;五脏皆脆者,不离于病。五脏皆端正者,和利得人心;五脏皆偏倾者,邪心而善盗,不可以为人平,反复言语也。   黄帝曰:愿闻六腑之应。岐伯答曰:肺合大肠,大肠者,皮其应;心合小肠,小肠者,脉其应;肝合胆,胆者,筋其应;脾合胃,胃者,肉其应;肾合三焦膀胱,三焦膀胱者,腠理毫毛其应。   黄帝曰:应之奈何?岐伯曰:肺应皮。皮厚者,大肠厚,皮薄者,大肠薄;皮缓,腹里大者,大肠大而长;皮急者,大肠急而短;皮滑者,大肠直;皮肉不相离者,大肠结。   心应脉,皮厚者,脉厚,脉厚者,小肠厚;皮薄者,脉薄,脉薄者,小肠薄;皮缓者,脉缓,脉缓者,小肠大而长;皮薄而脉冲小者,小肠小而短。诸阳经脉皆多纡屈者,小肠结。   脾应肉,肉(月囷)坚大者,胃厚;肉(月囷)幺者,胃薄。肉(月囷)小而幺者,胃不坚;肉(月囷)不称身者,胃下,胃下者,下管约不利。肉(月囷)不坚者,胃缓;肉(月囷)无小里累者,胃急。肉(月囷)多少里累者,胃结,胃结者,上管约不利也。   肝应爪,爪厚色黄者,胆厚;爪薄色红者,胆薄;爪坚色青者,胆急;爪濡色赤者,胆缓;爪直色白无约者,胆直;爪恶色黑多纹者,胆结也。   肾应骨,密理厚皮者,三焦膀胱厚;麤理薄皮者,三焦膀胱薄。疏腠理者,三焦膀胱缓;皮急而无毫毛者,三焦膀胱急。毫毛美而麤者,三焦膀胱直,稀毫毛者,三焦膀胱结也。   黄帝曰:厚薄美恶,皆有形,愿闻其所病。岐伯答曰:视其外应,以知其内藏,则知所病矣。

    生活 2021年10月8日
  • 全园|继往开来,锐意进取。——瀛海三幼园——瀛海三幼

    为进一步加强教师职业规范,提高办园质量,2021年11月17日上午,瀛海三幼开展每月一次全园会,进行上月总结与下月工作的部署,让老师们了解幼儿园的工作方向,本次会议有五项议程,由我园保教副主任赵然老师主持。

    生活 2021年11月19日
  • 不解除教师的“六重枷锁”,孩子如何获得“六大解放”?

    陶行知先生所呼吁对儿童的“六大解放”,已经深入人心——

    生活 2021年10月21日