Hack es un lenguaje de programación para HipHop Virtual Machine (HHVM), creado por Meta (anteriormente Facebook) como un dialecto de PHP . La implementación del lenguaje es de código abierto , con licencia MIT . [2] [3] [4]
Hack permite a los programadores utilizar tanto escritura dinámica como estática . Este tipo de sistema de tipos se denomina tipificación gradual , y también se implementa en otros lenguajes de programación como ActionScript . [5] El sistema de tipos de Hack permite especificar tipos para argumentos de función , valores de retorno de función y propiedades de clase ; sin embargo, los tipos de variables locales siempre se infieren y no se pueden especificar. [3] [6]
Hack se introdujo el 20 de marzo de 2014. [7] Antes del anuncio del nuevo lenguaje de programación, Facebook ya había implementado el código y lo había probado en una gran parte de su sitio web.
Hack está diseñado para interoperar perfectamente con PHP, que es un lenguaje de programación de código abierto ampliamente utilizado que se centra en el desarrollo web y puede integrarse en HTML . La mayoría de los scripts PHP válidos también lo son en Hack; sin embargo, Hack no admite numerosas funciones PHP y construcciones de lenguaje utilizadas con menos frecuencia. [8]
Hack extiende las sugerencias de tipo disponibles en PHP 5 mediante la introducción de escritura estática, agregando nuevas sugerencias de tipo (por ejemplo, para tipos escalares como enteros o cadenas), así como extendiendo el uso de sugerencias de tipo (por ejemplo, para propiedades de clase o valores de retorno de función). Sin embargo, no se pueden especificar tipos de variables locales. [6] Dado que Hack utiliza un sistema de escritura gradual, en el modo predeterminado, las anotaciones de escritura no son obligatorias incluso en lugares donde no se pueden inferir; el sistema de tipos asumirá que el autor es correcto y admitirá el código. [9] Sin embargo, hay disponible un modo "estricto" que requiere tales anotaciones y, por lo tanto, aplica un código totalmente sólido. [10]
La estructura de archivos básica de un script Hack es similar a un script PHP con algunos cambios. Un archivo Hack no incluye la <?php
etiqueta de marcado de apertura y prohíbe el uso de declaraciones de nivel superior. [11] El código debe colocarse en una función de punto de entrada. Estos se ejecutan automáticamente si están en el archivo de nivel superior, pero no si el archivo se incluye mediante include
, require
o el cargador automático. Al igual que otras funciones en Hack, los nombres de las funciones deben ser únicos dentro de un proyecto, es decir, no se pueden llamar a proyectos con múltiples puntos de entrada a ambos main
:
<< __EntryPoint >> función principal () : void { echo '¡Hola mundo!' ; }
Se ejecutará el script anterior, similar a PHP, y se enviará el siguiente resultado al navegador:
¡Hola Mundo!
A diferencia de PHP, el código Hack y HTML no se mezclan; Es necesario utilizar XHP u otro motor de plantilla . [8]
Al igual que PHP 7, Hack permite especificar tipos para argumentos de función y valores de retorno de función. Por lo tanto, las funciones en Hack están anotadas con tipos como los siguientes:
// Las funciones de hack están anotadas con tipos. función negar ( bool $x ) : bool { retorno ! $x ; }