犹记得,据 2001 年 7 月的 PHP 官方文档描述,“PHP 是有史以来最好的语言,没有之一。它快速,非常强大,而且免费。"不过,随着时间的迭代,不少开发者发现所谓世界上最好的语言 PHP,虽然能极大地提升性能,但是其功能不够完善最终导致 PHP 开始走上了下坡路,对此,你怎么看???
以下为译文:
自Wordpress、Drupal、CakePHP、Laravel、Symfony及许多其他的Web应用程序走上舞台以来,人们发现语言程序的创建如此简单,似乎也让语言出现了某种类似二次复兴的迹象。虚拟主机Web hosting再加上PHP + MySQL + Apache堆栈,就像野火一般迅速蔓延,突然每个人都在十分钟里建起了自己的网站:博客、购物车、相册等等,应有尽有。
PHP的支持者们乐于致力改善这门语言,最终他们成功了——迟钝的老版本逐渐被替换掉,PHP 7在性能和功能方面都更优,PHP 8甚至还支持JIT引擎。
但我认为,之后PHP会慢慢消失,甚至完全被淘汰。根据官宣,PHP 8的唯一主要功能就是JIT引擎——在CPU受限的场景中能提高性能,但也仅此而已,其他更新微不足道,不会对我们现有或未来的应用程序产生任何影响。
性能不会成为致命的问题,但功能缺乏才是问题。
暂时的胜利,最终的失败
在PHP5暴露问题(慢、依赖混乱、功能缺乏)的同时,Ruby、Python、Node.JS和Go都开始受到大众关注。Go出现得比较晚,但无论如何,我们可以看到这些语言的用途:
- Websockets
- 非阻塞IO
- Promises实现(即“在我执行其他任务时,完成此项任务”)
- 更佳的数据流
- 本地服务器部署
- 桌面/移动应用的用法
- 更干净的配置(如php.ini)
- 软件包管理(后由Composer修复)
这些新功能除了composer,全都不包括在PHP的核心功能中,甚至宣传和计划中都不涵盖。基本上,官方是让PHP社区自行决断要自己做这些功能,还是干脆放弃了事。
你可能会说,这些功能并非各个项目必需的,其可用性要取决于具体情况,这话没错,但要实现上述功能,我们必须要选择是用非官方的程序包,还是自己做一个。
举个例子,我们看一下WebSockets:必须在Ratchet、Swoole、Amp和React中作出选择。这意味着,针对关键性功能,作为开发人员,我们不但要确保遵守程序包的相关文档,保证程序包的可维护性,还要关注PHP的版本更新情况,才能保证不出问题。我可以想象,PHP8出现时,要在新版本上稳定下来,需要花费数周乃至数月的时间。
Swoole的案例是可以再讨论的。目前开发者可能不太热衷于使用这个麻烦缠身的软件,尤其是考虑到语言障碍的问题,但如果想要进一步研究的话,可以点击这里查看开源代码。
虽然近来,人们的关注点有些偏移向语言本身添加某些helper和命令,但这些helper方法的混乱也是多年来未曾解决的问题:ucfirst(), strtolower(), str_replace()…我们为什么不能在使用统一命名上达成一致?为什么直到今日,仍然没有人能从数组中提取一些键?
回到重点,不要误会我反对使用第三方程序包,但我希望负责PHP本身的人员比随机的公司拥有更多的可维护性。
而且别让我用台式机或者移动应用程序。PHP是一种面向Web的语言,大多数开发者都默认这一点,但即便Node.JS被逐出了市场,PHP也不会有希望成为相应生态系统中的替代品。
具体到Node.JS的案例中,很大可能JavaScript编写的部分服务器代码模块是可以重用在之前的移动或桌面应用中的。对公司所有者而言,这意味着公司不必再雇佣另一个有其他语言经验的开发者了,除非收益大过成本。
恐怕这就是我们将要面临的局面:
- 应用一开始用PHP代码库开发;
- 管理者索要新功能;
- 某个其他语言会填充PHP不提供的功能区;
- 最终开发者要使用两个生态系统。
同样,每种语言都有其特色和要警惕的问题,但我始终认为,一种语言要有功用性,能够让使用者完成自己的任务,而不是让人吃亏——如果不是为了PHP社区的利益,很难设想PHP会达成以上要求。
**
**
未来严峻
事实上,PHP8出现时会使用JIT编译器,但PHP背后没有核心开发者。而且Rogue Weave公司也更倾向于Zend Server,而非持续推动PHP核心Zend引擎的开发。这些功能可能永远无法实现,而且在这些问题列入考量时,Node.JS和Go等语言也已经拥有了更广阔的生态系统。
据我了解,JIT编译器应当允许开发者使用纯PHP而不是C++来创建扩展套件,这样性能损耗较低,可能会让语言功能发展得更快些,但创建者所提供的支持和/或可维护性也是语言持续的保证,否则难说软件包维护者是否会像Predis那样选择退出。
以上内容基本上瞎扯淡,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要戳这里PHP进阶架构师>>>实战视频、大厂面试文档免费获取
PHP 确实简单,这也是大家追求的,我们希望它简单,简单有何不可?
或许有些人会寄希望通过一些复杂的东西来体现自己的优越感,这也并无不可。只是我个人不认可这种态度,我认为什么简单就用什么呗,什么好使就使它了,瞎折腾啥啊。
准备的一些面试题,免费分享:
[落魄程序员:面试12家公司,收获9个offer,2021准备跳槽的PHPER们得注意了!!
zhuanlan.zhihu.com](zhuanlan.zhihu.com/p/340637391)
以前公司里面有个分享,有同事说他费了好大劲去完成了某项工作,但我认为这项工作可以在 Nginx 上通过简单的配置去实现,为什么偏偏要花那么多的精力去做。当然,最后他告诉我说他不知道 Nginx 上可以这么做。很多时候,有些人习惯于自己去解决一些问题,这是好事,独立嘛;但一定要努力扩充自己的视野,因为你花了那么大的精力最后可能会发现“窝草,还有这种操作,我特么撒币呢”--人家几分钟搞定了。对于你来说可能损失不会很大,但对于一个集体、组织来说,损失就大了。你在团队里很重要,你的精力很重要,你花那么多时间做出的工作,可能别人用其他方法很快就能做出来。
回过头来,你说 PHP简单,拉低了程序员的水平?
PHP学习/开发/运维成本低,难道不应该是一种优势么?
你怎么不说HTML拉低了UI开发者的水平?
你怎么不说Windows拉低了计算机使用人员的水平?
你怎么不说Android/iOS手机拉低了智能设备使用者的水平?
你怎么不说自动挡拉低了司机的驾驶水平?
对PHP的偏见,完全显露无疑嘛.
PHP统一数组,共享一套数组操作函数,明显是个优势.
PHP不内置多线程编程支持,明显是为了让PHP容器(PHP-FPM/Apache等)运行更加稳健.你要在命令行程序里用PHP多线程也完全可以呀,不是有pthreads扩展么?
还有处理完请求释放资源是PHP Web容器的特点和优势,你完全可以自己用PHP写运行在命令下的常驻服务呀,WorkerMan不就是这么一个应用么?
还有Swoole应用也是如此,你不用,就别说没有.还是说你不会用?不会用?不会?
为此我创建了一个PHP/Web/高级交流群,点击进入-->进阶资料