2010年1月9日星期六

阮一峰的网络日志

阮一峰的网络日志


PHP很烂?我的看法

Posted: 08 Jan 2010 09:28 AM PST

今天,我在玩聚上看到一篇台湾程序员的文章《PHP很烂》

我也想谈谈,我对这个问题的看法。错误肤浅之处,希望大家批评指正。

======================

PHP很烂吗?

作为一种计算机语言,它确实有很多缺点,而且是重大缺点。但是我认为,PHP目前最大的问题,并不在于语言本身,而是它的发展方向出现了偏差。

PHP的开发团队,好像正在致力于将它从"个人工具"升级为"企业工具",导致它的处境很尴尬。说它是个人工具吧,却有很多复杂的高级语言特性;说它是企业工具吧,运行效率却不高。结果到头来,不仅"易学易用"的特色丢掉了,而且由于性能问题,依然很难在大型项目中推广。

在我看来,问题出在PHP 4到PHP 5的那一次升级。PHP 4是一种个人工具,很像shell语言的再包装,属于过程式编程,确实易学易用,是个人网站的最合适开发语言。但是,PHP 5就完全不同了,大大增强了面向对象编程(OOP)功能,到了5.3版本,更是添加了名称空间(namespace),甚至连lambda函数都支持了。看上去,PHP的设计者似乎想把这种语言变成下一个Java。

这样做的结果,就是PHP不再是一种容易学习的语言了。初学者必须像学习Java那样,记住那些繁琐的OOP语法,才能用好PHP 5。更糟的是,由于语言变得复杂,带来解释器的性能下降。我记得看过一篇文章,里面说同样配置的硬件,PHP 5.0比PHP 4.3慢30%,要知道作为一种脚本语言,其实PHP 4的速度就已经很慢了。

这就是目前PHP的问题:作为一种个人工具,它的优势正在丧失;作为一种企业工具,它依然不行。

另一方面,由于语法越来越复杂,而PHP是一种书写很自由的语言,结果就导致很容易写出混乱得可怕的代码。正如XML格式创造者之一的Tim Bray所说:

"我很肯定,你能够用PHP写出干净、易读、可维护的代码。但是显然,你稍一放松就做不到这一点了。"

我觉得,现在可能是PHP代码分叉(fork)的时候了。未来的PHP最好有两个版本:一个版本面向企业级应用,支持高级的OOP功能,着眼代码的可维护性和可协作性;另一个版本面向个人应用,强调易学易用,着眼快速和高效的网站开发。

(完)