Harman Patil (Editor)

Hack (programming language)

Updated on
Edit
Like
Comment
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit
Developer
  
Facebook

Typing discipline
  
static, dynamic, weak

License
  
BSD License

First appeared
  
2014

OS
  
Cross-platform

Hack (programming language) programmingguideinwpcontentuploads201403hac

Designed by
  
Julien Verlaguet, Alok Menghrajani, Drew Paroski, and others

Deep dive facebook s programming language hack julien verlaguet keynote


Hack is a programming language for the HipHop Virtual Machine (HHVM), created by Facebook as a dialect of PHP. The language implementation is open-source, licensed under the BSD License.

Contents

Hack allows programmers to use both dynamic typing and static typing. This kind of a type system is called gradual typing, which is also implemented in other programming languages such as ActionScript. Hack's type system allows types to be specified for function arguments, function return values, and class properties; however, types of local variables are always inferred and cannot be specified.

Essential programming language for ethical hacker


History

Hack was introduced on March 20, 2014. Before the announcement of the new programming language, Facebook had already implemented the code and "battle tested" it on a large portion of its web site.

Features

Hack is designed to interoperate seamlessly with PHP, which is a widely used open-source general-purpose scripting language that was designed for web development and can be embedded into HTML. A majority of valid PHP scripts are also valid in Hack; however, numerous less frequently used PHP features and language constructs are not supported in Hack.

Hack extends the type hinting available in PHP 5 through the introduction of static typing, by adding new type hints (for example, for scalar types such as integer or string), as well as by extending the use of type hints (for example, for class properties or function return values). However, types of local variables cannot be specified. Since Hack uses a gradual typing system, in the default mode, type annotations are not mandatory even in places they cannot be inferred; the type system will assume the author is correct and admit the code. However, a "strict" mode is available which requires such annotations, and thus enforces fully sound code.

Syntax and semantics

The basic file structure of a Hack script is similar to a PHP script with a few changes. A Hack file starts with <?hh as opposed to <?php for a PHP script:

The above script, similar to PHP, will be executed and the following output is sent to the browser:

An important point to note is that unlike PHP, Hack and HTML code do not mix. Normally you can mix PHP and HTML code together in the same file, like this:

This type of code is not supported by Hack; either XHP or another template engine needs to be used.

Functions

Hack allows types to be specified for function arguments and function return values. Functions in Hack are thus annotated with types like the following:

References

Hack (programming language) Wikipedia