Facebook今年发布了一种新的编程语言Hack,无论从什么角度分析,这种语言都类似于时下流行的PHP。其大量的功能,比如静态类型等等和PHP开发人员长期要求的保持一致。抛开语法这些,其实Hack并不是PHP。Hack运行在Facebook的虚拟机(HHVM)上,而其竞争对手则运行在传统的PHP Zend引擎上。
为什么Facebook要建立Hack?
首先Facebook的内部代码是用PHP编写的,同时Facebook可以让很多新的开发人员能够使用PHP,因为语言是容易学习和使用的。当然,Facebook的PHP代码可能转换为C衍生物被推到之前的生产环境中。问题的关键是Facebook强烈的依赖于PHP语言,以吸引新的人才和提高开发人员的效率。
严格的类型
不幸的是,PHP不可能在Facebook的规模下执行。因为PHP是一种松散类型的语言,很多关于类型的错误可能在运行的时候不会被发现。这就意味着Facebook在早起必须编写很多执行类型错误检查的测试,或者花更多的时间来重新构建发布后的运行错误。为了解决这样一个问题,Facebook添加严格的类型来对运行时的返回类型实施攻击。严格的类型抹杀了很多相关单元测试的必要性,同时也激励开发人员在早期开发过程中捕获与类型相关的错误。
瞬时类型检查
为了使开发的过程中捕获错误更加得心应手,Facebook的HHVM引擎包含了一个类型的检查服务器,这个服务器在本地运行时监控Hack代码。开发人员的代码编辑器和IDE在代码开发过程中可以使用这个类型检查服务器来立即报告语法或类型的相关错误。
现有的PHP代码呢?
大多数现有的PHP代码将运行在Facebook的HHVM引擎,这是必要的,因为Facebook的现有代码库主要是PHP代码。Hack代码存在一些异常,毕竟其没有和传统的PHP等效,比如一些语言特性(如变量)和Zend扩展仍然不被支持。随着时间的推移,HHVM也会尽快实现与Zend引擎的奇偶化校验。
此外,Facebook创建的Hack语言与传统的PHP代码进行逐步的迁徙。
这是否意味着PHP“死”了?
如果Hack是那么好,这是否意味着PHP的日子已经屈指可数了?答案当然是:NO!传统的PHP Zend是由专门的机构管理审核通过的,任何新的功能必须由机构的成员审核投票通过之后才能公布,这样的投票时100%公正和公开的。
但Hack是非常不错的,Hack有非常多属于自己独特的功能,所以永远不可能成为传统的PHP语言。Facebook的HHVM引擎比Zend引擎更好的性能,而且它具有更多的内部开发人员,致力于不断使HHVM引擎变得更好。
这也并不意味着PHP的Zend引擎将消失,Zend和HHVM引擎能够而且将会并存。竞争是一件好事,我希望这两个Zend和HHVM会从彼此的优势中获益。
是Facebook负责吗?
Hack是Facebook的产物,这主要是源于Facebook的工程师。虽然现在公众都希望它能公布,但是Hack和HHVM很大程度上仍然依赖与Facebook的持续投资和参与。
未来
由于Hack和HHVM的优越性,我想从某种程度想来说,Hack是PHP的未来。