why_php

博主: Simon Lin 创建于: Jul 3, 2018 更新于: Jul 3, 2018
分类: tech
标签: tech language

php到底是一个怎样的存在

程序员届有个著名的梗:php是世界上最好的语言。只要在论坛里说上这一句,论坛里可以炒翻天。我也一直在纠结,php到底是怎样的一种存在,为什么会引起这么多的争论?昨天在微信群里,我也抛了这样一个php的问题,php的优劣到底在哪?在这里,对讨论做一个简单的总结。

php的优势是什么?

很多人会回复我,
快具体体现在:
1.学习成本,前些年大量的软件培训机构,都会教授php,因为学习成本很低。有人提到,在php5以前,php的语法非常的简单,上手很快。
2.部署成本,解释形语言,和其他相关开源组件一起构成了著名的LAMP(Linux+Apache+Mysql+PHP)。代码更新不需要重启等等
3.开发成本,各种框架多,组件多,连起来就可以跑。
4.业务逻辑与界面可以混在一起,在初期只为快的时候,可以满足各种捷径的写法。例如在页面上加逻辑代码,在逻辑代码里直接调用数据库。

php的劣势是什么?

最大的劣势:后期

后期是指当系统复杂度高了以后,高并发,高稳定性需求,开发的方便性,代码的可读性等等。

当系统庞大了之后,对系统有这更高的要求。php对于并发的处理受到很多的诟病,虽然有一些开源的解决方案,但没有完美终极版。
php的自由性有利于快速扩大影响力,但限制了自身发展的高度,例如弱类型,js也渐渐发展出ts的现在,慢慢的成为一种落后的象征。代码写的随意自由,怎么写都可以,在别的程序员眼里就不是这么回事了,代码的易读性收到各种挑战。例如函数的输入输出变量定义成数组,数组里的每个值都有不同的作用,就需要对各个进行注释说明,而不能直接方便的从代码获得。

有人指出,php好不好维护,后期好不好关键看人,如果维护的人水平很高,php也可以变的很优雅。不过,这却不是一个工程化的做法,把代码的质量归咎于开发水准。工程化做法更讲究程序,制度,例如单元测试,代码规范,各种写法的规范(前后分离,MVC模式等)。不是说php写不来MVC模式,因为太自由,我可以在V里写上数据库调用。当一份代码被10个以上的人维护时,难保有我这样偷懒的程序员,这就需要工程化的做法。可一旦工程化,php的自由的优势就大大丧失了,和java等的开发效率上的优势就不存在了,而高并发,高稳定又没有优势,我想这就是大系统很少用php的原因,甚至很多系统做大了之后,都会从php改成java的原因。

当然,还有一个因素也是说人,程序员数量与素质。php程序员大量出自自学或者培训机构,去培训机构的学员一般都没有正规的计算机教育背景,很多甚至连大专都不是,学习背景上相对弱,当处理复杂问题时,会更困难些。其二,php在国内的程序员数量还是远远不及java的,从公司研发团队招聘的角度,找java的会容易很多,这也是大团队不愿意用php的重要原因。有点类似于C#,即使你语言再好,开发再方便,没有程序员的基础,说什么都白搭。这是一个程序员社群环境的因素。

小结

不可否认,php已经是一个成功的语言了,我觉得不必要非要让它变的和java一样,不需要非争什么第一。我就是我,我有我存在的价值和意义就好。


打赏 支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者