Facebook Hack 语言 简介

Facebook Hack 语言 简介

 
 

1. Hack 是什么?

Hack 是一种基于HHVM(HipHop VM 是Facebook推出的用来执行PHP代码的虚拟机,它是一个PHP的JIT编译器,同时具有产生快速代码和即时编译的优点。)的新型编程语言,可以实现与PHP的无缝互操作。Hack通过静态编辑确保了PHP的快速开发周期,与此同时又添加其它主流语言的很多通用功能,使其相比于PHP更具优势。

 

Hack通过检索本地服务器的文件系统表提供即时的类型校验,校验耗时通常小于200毫秒,因此它很容易集成到你的开发流程中而不引入明显的延时。

 

下面是Hack语言一些非常重要的特性:

  • Type Annotations (类型注释): 可以是PHP代码显式类型参数,类成员变量和返回值:
    复制代码
    1 <?hh
    
    2 class MyClass {
    
    3   const int MyConst = 0;
    
    4   private string $x = '';
    
    5   public function increment(int $x): int {
    
    6     $y = $x + 1;
    
    7     return $y;
    
    8   }
    
    9 }
    复制代码
  • Generic(泛型):允许类和方法参数化(例如,当类实例化或方法调用时的一个类型关联),同静态类型语言如C和Java一样:
    复制代码
     1 <?hh
    
     2 class Box<T> {
    
     3   protected T $data;
    
     4 
    
     5   public function __construct(T $data) {
    
     6     $this->data = $data;
    
     7   }
    
     8 
    
     9   public function getData(): T {
    
    10     return $this->data;
    
    11   }
    
    12 }
    复制代码
  • Nullable Types(可空类型): Hack 通过使用符号“?”实现对可空类型的支持,这就引入了一种更安全的方式来处理空值,尤其对值不能取null的原始类型非常有用,例如bool 和int(用法:?bool 和 ?int),可空操作符可以用于任何类型或类
  • Collections: 通过提供一流的,内置的参数化类型,如Vecctor(一个有序的,基于索引的列表),Map(一个有序的字典),Set(一个无重值列表), 和Pari(基于索引的只有两个元素的集合)来增强使用PHP 数组的体验。
  • Lambadas 提供和PHP closures相类似的功能,但它通过隐式的封闭的函数体捕获变量并且更加简洁
    复制代码
    <?hh
    
    function foo(): (function(string): string) {
    
      $x = 'bar';
    
      return $y ==> $x . $y;
    
    }
    
    function test(): void {
    
      $fn = foo();
    
      echo $fn('baz'); // barbaz
    
    }
    复制代码

    Other significant features of Hack include ShapesType AliasingAsync support, and much more.

Hack其他一些重要特性包括Shapes, Type Aliasing, Async support等。

更多详细信息请查阅:http://hacklang.org/

 

HHWM简介:

HHWM(HipHop VM) 是Facebook推出的用来执行PHP代码的虚拟机,它是一个PHP的JIT(Just-In- Time)编译器,同时具有产生快速代码和即时编译的优点。

 

HHWM能做什么?

几乎可以做任何事情,HHWM主要专注于服务器端脚本,这样你就可以收集表单数据,生成动态页面内容,或者发送和接收的cookies。除此,HHVM可以做更多的事情。

HHVM脚本主要应用于两大领域:

  • 服务器端脚本。这是HHVM最传统,也是最主要的目标领域。你需要三样东西来完成这项工作。
    • HHVM解析器
    • 一个web服务器
    • 一个web浏览器

你需要运行一个连接HHVM安装的web服务器,你可以通过一个web浏览器访问Hack程序的输出,通过服务器查看Hack页面。所有的这些都可以在你的家用电脑上运行。

  • 命令行脚本。你可以编写一个HHVM命令行脚本,并且不依赖任何服务器或浏览器来运行,唯一需要的是HHVM解析器。这种方法是定期执行脚本或者测试新的库和功能的最佳选择。这些脚本也可以用于简单的文本处理任务。

HHVM完全支持各种Linux操作系统的变种,包括Ubuntu,CentOS的,Debian等等,HHVM也可以安装在Mac OS X, 只在解释模式下运行(无JIT, 正在开发). Windows的支持正在积极开发。对于当今绝大多数web 服务器, HHVM也都有很好的支持,这包括使用FastCGI协议的各种web服务器,如:Apache, lighttpd 和nginx.

使用HHVM,你可以自由的选在一个操作系统和一个web服务器。此外,你还可以使用过程编程或面向对象编程(OOP),或它们两者的混合物的选择。当然,你可以选择使用Hack或PHP作为编程语言。

使用HHVM,你可以不再受限于HTML的输出能力。HHVM的能力不仅局限于此,它还包括输出图片,PDF文件,甚至动态Flash(使用libswf和Ming),当然你也可以非常简便的输出任何文本,例如XHTML和任意XML文件. HHVM可自动生成这些文件,并将其保存到文件系统,而不是直接输出,形成一种动态内容的服务器端的缓存。

 

HHVM一个最强大,最显著特征就是广泛的数据库支持,可以使用一个特定的数据库扩展来,或使用一个像PDO样的抽象层,或者通过ODBC扩展链接到任何支持开放式数据库链接标准的数据库,编写一个启用数据库功能的网页会是难以置信的简单(例如, mysql)。其他数据库可以利用cURL 或者 sockets.

HHVM也可以通过使用如LDAP, IMAP, HTTP等的协议来提供对其他服务交互的支持。你也可以开放一个Raw Network Sockets ,使用任何其他协议进行交互。HHVM支持在几乎所有的Web编程语言见的WDDX复杂数据的交换。

 

HHVM具有卓有成效的文本处理功能,包括 perl 兼容的正规表达式(PCRE),以及解析和操作XML文档的多种扩展和工具。HHVM以libxml2为基础标准化了所有XML的扩展,于此同时也扩展了XML功能集,加入了SimpleXML, XMLReader 和XMLWriter的支持。

 

本文不足以列出HHVM所有的功能和优势。你可以通过阅读Hack 功能参考手册(后续补上)来进一步了解本页提到的扩展。

 
分类:  Facebook Hack

 

你可能感兴趣的:(HHVM 和 Hack 学习,Facebook Hack教程,HHVM 和 Hack 手册)