Facebook has just released [ Introduced ] a new programming language called 'HACK', designed to build complex websites and other software quickly and without many flaws and also the main motive of decreasing resource conservation. The company has already migrated almost all of its PHP-based social networking site to HACK over the last year, but it has nothing to do with Hacking.
Facebook :-
Today we're releasing Hack, a programming language we developed for HHVM that interoperates seamlessly with PHP. Hack reconciles the fast development cycle of PHP with the discipline provided by static typing, while adding many features commonly found in other modern programming languages.
We have deployed Hack at Facebook and it has been a great success. Over the last year, we have migrated nearly our entire PHP codebase to Hack, thanks to both organic adoption and a number of homegrown refactoring tools.
We're also proud to release an open source version of Hack to the public at http://hacklang.org/ as part of our HHVM runtime platform, which will now support both Hack and PHP.
Download Link:- http://docs.hhvm.com/manual/en/install.php
Official site :- http://hacklang.org/
Thus, Hack was born! Facebook Team decides to develop a new programming language that could combine elements of static-type programming languages such as C or C++ with dynamic-type languages like PHP, now called "HACK Programming Language".
"Hack has deep roots in PHP. In fact, most PHP files are already valid Hack files." Facebook said, "We have also added many new features that we believe will help make developers more productive."
HACK is a new version of PHP, requires Facebook’s HHVM (Hip Hop Virtual Machine) which is designed to execute programs written in Hack and PHP. The top 20 open source frameworks on Github run on HHVM.
by Facebook's - { hack } official site :-
The following are some of the important language features of Hack. For more information, see the full documentation, or follow through the quick interactive tutorial.
<?hh
- Type Annotations allow for PHP code to be explicitly typed on parameters, class member variables and return values:
class MyClass {
const int MyConst = 0;
private string $x = '';
public function increment(int $x): int {
$y = $x + 1;
return $y;
}
}
<?hh
- Generics allow classes and methods to be parameterized (i.e., a type associated when a class is instantiated or a method is called) in the same vein as statically type languages like C# and Java):
class Box<T> {
protected T $data;
public function __construct(T $data) {
$this->data = $data;
}
public function getData(): T {
return $this->data;
}
}
- Nullable Types are supported by Hack through use of the
?
operator. This introduces a safer way to deal with nulls and is very useful for primitive types that don’t generally allow null as one of their values, such asbool
andint
(using?bool
and?int
respectively). The operator can be used on any type or class.
- Collections enhance the experience of working with PHP arrays, by providing first class, built-in parameterized types such as
Vector
(an ordered, index-based list),Map
(an ordered dictionary),Set
(a list of unique values), andPair
(an index-based collection of exactly two elements).<?hh
- Lambdas offer similar functionality to PHP closures, but they capture variables from the enclosing function body implicitly and are less verbose:
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 Shapes, Type Aliasing, Async support, andmuch more.