见世界

PHP不是最好的语言

写这篇文章的原因

公司项目多人少,新项目需要外包,找到上海比较好的上市公司操作。我们希望使用PHP作为后台语言进行开发。而对方公司JAVA积累比较丰富,希望使用JAVA开发并提出了JAVA优于PHP的一些特点。语言之争毫无意义——主观判断,太多细节取舍,太多立场之争,永远不应该在公众场合展开讨论,浪费时间。作为甲方我们完全支持他们选择最擅长的实施方案。

但我需要给我的上级平衡的信息,以避免我这次的妥协使他在今后的架构选型中有错误的定势——于我而言,这是有必要的防微杜渐。

正文

对PHP的疑问:

  1. java在数据库访问方面要比PHP强一些,例如:用Java开发的Web应用从MySQL数据库转到Oracle数据库只需要做很少的修改。而PHP则需要做大量的修改工作。
  2. java是面向对象的设计php是面向过程的
  3. PHP只能实现简单的分布式两层或三层的架构,而JAVA在这方面就比较强大,可以实现多层的网络架构。
  4. java在性能上要比php强,java系统易维护、可复用性较好

来自PHP的解答:

  1. pdo作为php内置的数据库中间层,支持mysql到oracle的无缝迁移,只需很少的修改。
  2. php支持多种编程思想包括oo,而oo也逐渐不再是一个必选项。我一向认为oo旨在提供一种降低复杂度的机制,以期按部就班的模仿现实世界。它可以令年薪10万的coder完成原本年薪20万coder才能完成的工作,是工程界的伟大创造。oo与非oo侧重点不同,没有优劣之分。我个人私下觉得写oo代码缺乏乐趣。
  3. 对术语『层』的定义不是很确定,我揣测他的意思稍微解释一下:跟java这种全能语言不同,PHP是web开发语言,当我们谈及『PHP架构』我们谈的是LNMP,是整个『PHP系』的开源世界。这个世界里的工具非常多,并且facebook,新浪这种大公司顶在前面,可以相信,好的机制、有效模型会不断被引入,以保证每个场景都有对应方案。
  4. 编译型语言执行效率应该比解释型语言强,这个毋庸置疑。易维护性我不了解java,不敢妄言。可复用性,由于composer的存在,加上PSR*规范的推行,应该还好。

额外的,PHP还有以下特点:

  1. 有处理超大型项目的案例

    Digg,Flick,Wikipedia,Facebook,Yahoo,新浪微博……这些项目中都有PHP的影子,它们的存在说明高负载高并发的大型项目在PHP架构下有解。规模在此以内的项目不需要有负载能力的担心。开源世界的生态保证了这些解 能够甚至易于 使用。

  2. 有不错的开发效率

    Ruby的风行一时提醒了人们一件事:相较于硬件资源,开发资源资源同样宝贵。实现速度也是选型考量之一。

  3. 有特定的适用场景

    爆炸性增长的项目,它的技术选型常常会经历螺旋上升的过程,比如淘宝。淘宝从 一套PHP商城代码oracle商用方案 再到 自研架构组件,每次都是在遇到瓶颈后更换技术方案。这一方面说明,技术方案的选择应该是业务驱动的;另一方面则暗示了,技术方案应该适配项目规模,合适的才是最好的。BTW:今天的PHP早已不是淘宝当年遇见的PHP了。

  4. 处在青壮年时期,乐于成长和改变

    在web编程领域,假如JAVA对PHP有碾压级的优势,那么人们的选择会趋同,PHP会逐渐消失。也许PHP最终会进入这样的阶段,但至少目前看来还很有活力:有人试图提高开发效率(laravel, cakephp), 有人试图提高执行效率(hhvm, phalcon, yaf, php7), 有人引入最新流行的开发泛型(匿名函数,swoole框架)……PHP不完美,但PHP保持活力保持成长,这是生命力的体现。

有生之年,我会乐于看到PHP死去,因为原因一定是,我们有了公认的更好的选择。