想要构筑一个大型系统,如果你不像Facebook那么有钱、任性还能折腾,如果你的团队规模有限,如果你想要节约成本,如果你想要降低人员流动带来的影响,如果你要减小HR的压力,如果你希望员工可以在工作告一段落后可以在不同的项目/团队间进行转岗,那么尽量让团队使用少的技术/语言是一个很好的选择,PHP会是这个不二之选吗?
我们来看看号称“一直”使用PHP做为“主要”开发语言的Facebook这些年都折腾出了什么:
- HipHop 将PHP代码转换为C++代码,之后由C++编译器进行编译,代码不再运行在PHP虚拟机上。2010年Facebook性能问题开始凸显时,已经拥有数百万行的PHP代码,上千名PHP工程师,如果改用其他语言(非不想实不能!)根本不现实,所以成立了一个小组花费18个月开发了HipHop,这种事情显然不是什么公司都能干的。
- HHVM : 准备替代HipHop的PHP虚拟机技术,为了纪念早先的PHP代码转换工具HipHop ,命名为HipHop Virtual Machine
- Hack: 可以在HHVM虚拟机上运行的PHP改进语言,实现了一些静态语言特性
- Cassandra: 分布式存储系统 Java 已开源
- Scribe: 日志系统 C/C++ 已开源
- Haystack/F4: 高性能图片存储与检索系统 C/C++ 闭源
- Thrift: Facebook为了PHP可以调用后端服务开发的跨语言RPC框架,事实上只有Java版本的实现最完整,PHP使用的是C++的版本做了个简单的API引入功能有限,想要进行扩展难免要使用C++进行开发,Thrift编译器为C++实现 已开源
Facebook使用的其他不是自己开发的开源技术就不多说了,至少如果需要在Hadoop下用MapReduce进行大数据统计处理,就不要指望可以用PHP了。
在有了“HipHop虚拟机”以后,Facebook能以大多数开发者永远都想象不到的速度运行PHP代码。但是,仍旧有人质疑为何这家公司要这么走极端。长期开发者、编程权威人士大卫·波拉克(David Pollack)就不认同Facebook坚持使用PHP语言的作法。“PHP语言用来构建一个应急网站是最好的。对我来说,Facebook能利用这种语言构建像Facebook网站那样强大而灵活的网站确实令人印象深刻,但我不认为PHP是构建一个网站的最好方法,这就像是住在新泽西州的人非要把这个州称作‘花园州’一样。”
就连亚当斯也承认,虽然他曾宣称动态语言能让开发者更具生产力,但这种说法在某些情况下也值得商榷。埃文斯也承认,虽然PHP这样的语言或许能在短期内提高生产力,但从长期来看则会带来更多困难。
当然,Facebook之所以还在坚持使用PHP语言,在很大程度上是因为用另一种语言来重新编写整个网站的代码是一项更加庞大的任务。Facebook将此称为“遗留问题”(The Legacy Problem)。“到最后,总有一天网站的规模会大到不重写不行的地步。”帕洛斯基说道。