开发者社区> 问答> 正文

【教程免费下载】Hack与HHVM权威指南

前言  


在Facebook公司的大部分发展历程中,每隔几个月就会举办“黑客马拉松(hackathons)”活动,活动的目的在于鼓励工程师们碰撞出好的想法,而这些好的想法并不是和他们的日常工作相关的,他们自由组队,然后在一两天的时间内做出一些非常有意思的事情。
在2007年11月的一次“黑客马拉松”活动上,诞生了一个非常有意思的实验:一个工具能够将PHP程序转化为C++程序,然后还能够用C++编译器进行编译。想法是C++程序将会比PHP原生的程序运行起来快很多,因为它可以得益于多年以来对C++编译器的大量优化工作。
对于Facebook来说,这种可能性是非常有趣的,因为公司增加了大量新的用户,而支持更多新的用户需要耗费大量的CPU运算周期。所以当你耗尽所有可用的CPU运算周期后,除非你耗费大量财力购买更多的CPU,用来支持日益增多的用户所带来的CPU运算能力的需求,否则你必须寻找一个方法来降低每个用户的CPU消耗。由于Facebook整个网站的前端都是用PHP语言编写的,所以任何使PHP代码耗费更少CPU运算周期的新技术都受到欢迎。
在接下来的7年时间里,这个项目的发展远远超出了最开始在“黑客马拉松”中的起点。PHP到C++的转换器称为HPHPc, 在2009年的时候它成为支撑Fackbook网页业务唯一的服务器端引擎。在2010年年初,它以“HipHop for PHP”的名字开源了。然后从2010年起,一个全新的方法用来执行——即时编译为机器代码,并没有C++牵扯其中——脱胎换骨于HPHPc的代码库,并最终取代它。这个即时的编辑器称为“HipHop虚拟机”,简称为 HHVM,并且在2013年的早期彻底取代了Facebook的网站服务器集群。早期的PHP到C++的转换器消失了,它没有在任何地方进行部署,同时它的代码都被删除了。
而Hack的起源是完全分开的,其根源在于试图在PHP中使用静态分析以自动探测潜在的安全漏洞的一个项目。很快,事实证明,PHP的本质使得它在非常有用的静态分析方面很难有所进展。于是“严格模式(strictmode)”的想法就诞生了。对PHP进行修改,增加一些新的特性,比如引用、删除和添加一个补充的复杂类型系统。PHP代码的作者可以自由选择是否使用严格模式,在保持完整的互操作性同时,获得更加强大的代码检查能力。
Hack的方向从那时开始就作为基于PHP的类型系统掩盖了其本质。它在构建Hack编码的道路上获得了很多有重大影响的新特性,比如异步函数。它添加了很多包括集合在内的新特性,使得类型系统更加强大。本质上来说,它是一门和PHP不同的新语言,它已经在编程语言方面取得了自己的新位置。
以上就是Hack的发展历程,目前Hack是一门现代化的动态编程语言,它拥有鲁棒的静态类型检查能力,在HHVM上执行。HHVM是一个和PHP无缝兼容且具有互操作性的实时编译运行时引擎。
什么是Hack和HHVM
Hack和HHVM是紧密联系在一起的,所以对于这些术语到底指代的是什么会有一些混乱。
Hack是一门编程语言。它基于PHP,继承了PHP中的很多语法,并且完全可以和PHP进行互操作。然而,很可能有人会认为Hack只是在PHP的基础上略加了装饰修改。Hack最核心的特色是鲁棒的静态类型检查,这已经足够把Hack作为一门编程语言和PHP区分开了。对于现在已经从事已有PHP代码库开发方面工作的开发者来说,这是非常有益的。在这种情形下,将会给这些开发者很多的启迪,当然,对于新项目的底层开发也是一个非常不错的选择。
除了静态类型检查外,Hack还拥有PHP没有的很多项新特性,本书将对这些新特性进行阐述:异步函数、XHP等。出于解决一些粗糙边界问题的目的,Hack也故意缺失了对一些PHP特性的支持。
HHVM是一个执行引擎,它同时支持PHP和Hack。它让两种语言可以互操作:PHP书写的代码能够调用Hack代码,反之亦然。当执行PHP的时候,它的目标在于对PHP.net提供的PHP标准解释器进行替换。本书中有些章节的内容是关于HHVM的:如何配置并部署它,如何使用它调试和配置代码。
最后,我们要介绍的就是从HHVM中分离出来的Hack类型检查器:这是一个能够分析Hack代码(而不是PHP代码)然后报告类型错误的程序。在它能够接受的代码方面,类型检查器目前要比HHVM严格一些。当然,在未来的发行版本中,HHVM应该比类型检查器更加严格。目前,除了你在命令行里面启动它的命令“hh_client”外,类型检查器还没有个定型的名字,我更倾向于叫它“Hack类型检查器”(Hack typechecker)或者就叫做“类型检查器”(typechecker)。
到目前为止,HHVM是运行Hack的唯一执行引擎,这也是有时它们会混为一谈的原因。




出版在【华章出版社】 作者: Owen Yamauchi





展开
收起
玄学酱 2017-06-23 14:58:26 3456 0
1 条回答
写回答
取消 提交回答
  • 很不错!!!

    -------------------------

    很不错!!!

    -------------------------

    很不错!!!

    -------------------------

    2018-02-01 15:12:53
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
《阿里巴巴Java开发手册》英文版免费下载 立即下载
阿里巴巴Java开发手册PDF1.2.0版(非最新版) 立即下载
阿里巴巴Java开发手册PDF1.1.0版(非最新版) 立即下载

相关实验场景

更多