Hack es un lenguaje de programación para la máquina virtual HipHop (HHVM), creado por Facebook como un dialecto de PHP . La implementación del lenguaje es de código abierto , con licencia MIT License . [2] [3] [4]
Diseñada por | Julien Verlaguet, Alok Menghrajani, Drew Paroski y otros [1] |
---|---|
Desarrollador | |
Apareció por primera vez | 2014 |
Disciplina de mecanografía | Estático , dinámico , débil , gradual |
SO | Multiplataforma |
Licencia | Licencia MIT [2] |
Sitio web | hacklang |
Influenciado por | |
PHP , OCaml , Java , C # , Scala , Haskell |
Hack permite a los programadores utilizar tanto la escritura dinámica como la estática . Este tipo de sistema de tipos se denomina escritura gradual , que también se implementa en otros lenguajes de programación como ActionScript . [5] sistema de tipos de Hack permite tipos que se especifican para la función argumentos , función de los valores de retorno , y propiedades de la clase ; sin embargo, los tipos de variables locales siempre se infieren y no se pueden especificar. [3] [6]
Historia
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 batalla" en una gran parte de su sitio web.
Características
Hack está diseñado para interoperar sin problemas con PHP, que es un lenguaje de programación de código abierto ampliamente utilizado que se centra en el desarrollo web y se puede incrustar en HTML . La mayoría de los scripts PHP válidos también son válidos en Hack; sin embargo, Hack no admite numerosas funciones de PHP y construcciones de lenguaje que se utilizan con menos frecuencia. [8]
Hack amplía la sugerencia de tipo disponible en PHP 5 mediante la introducción de la escritura estática, agregando nuevas sugerencias de tipo (por ejemplo, para tipos escalares como integer o string), 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 usa un sistema de escritura gradual, en el modo predeterminado, las anotaciones de tipo 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, está disponible un modo "estricto" que requiere tales anotaciones y, por lo tanto, aplica un código completamente sólido. [10] [11]
Sintaxis y semántica
La estructura de archivo básica de un script Hack es similar a un script PHP con algunos cambios. Un archivo Hack no incluye la etiqueta de marcado de apertura y prohíbe el uso de declaraciones de nivel superior. [12] El código debe colocarse en una función de punto de entrada. Estos se ejecutan automáticamente si se encuentran en el archivo de nivel superior, pero no si el archivo se incluye a través
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, los proyectos con múltiples puntos de entrada no pueden llamar a ambos main
:
<< __EntryPoint >> function main () : void { echo '¡Hola, mundo!' ; }
Se ejecutará el script anterior, similar a PHP, y se enviará la siguiente salida al navegador:
Hola , mundo !
A diferencia de PHP, el código Hack y HTML no se mezclan; ya sea XHP u otro motor de la plantilla tiene que ser utilizado. [8]
Funciones
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 se anotan con tipos como los siguientes:
// Las funciones de pirateo están anotadas con tipos. function negate ( bool $ x ) : bool { return ! $ x ; }
Ver también
- Máquina virtual Parrot
- Falangero
Referencias
- ↑ Bryan O'Sullivan (28 de marzo de 2014). "Donde el crédito pertenece a Hack" . Consultado el 6 de febrero de 2019 .
- ^ a b "facebook / hhvm: hhvm / hphp / hack / LICENCIA" . github.com . Facebook . 04/11/2018 . Consultado el 6 de febrero de 2019 .
- ^ a b Josh Lockhart (3 de abril de 2014). "Hack de Facebook, HHVM y el futuro de PHP" . O'Reilly Media . Consultado el 6 de febrero de 2019 .
- ^ Cade Metz (20 de marzo de 2014). "Facebook presenta 'Hack', el lenguaje de programación del futuro" . Cableado . Consultado el 6 de febrero de 2019 .
- ^ Aseem Rastogi; Avik Chaudhuri; Basil Hosmer (enero de 2012). "Los entresijos de la inferencia de tipo gradual" (PDF) . Asociación de Maquinaria de Computación (ACM) . Consultado el 6 de febrero de 2019 .
- ^ a b "Hack Manual: Hack y HHVM - Tipo de anotaciones" . docs.hhvm.com . Consultado el 6 de febrero de 2019 .
- ^ Verlaguet, Julien; Menghrajani, Alok (20 de marzo de 2014). "Hack: un nuevo lenguaje de programación para HHVM" . Facebook . Consultado el 6 de febrero de 2019 .
- ^ a b "Inconsistencias: Introducción" . docs.hhvm.com . Consultado el 4 de abril de 2019 .
- ^ "Hack Manual: modo parcial" . docs.hhvm.com . Consultado el 6 de febrero de 2019 .
- ^ "Hack Manual: modo estricto" . docs.hhvm.com . Consultado el 6 de febrero de 2019 .
- ^ eqdd2f-ysffv22dldfwfvvmffdd'ldlldwq; 'w`wdvrpev [vc [
- ^ Emmott, Fred (11 de febrero de 2019). "HHVM 4.0.0" . hhvm.com . Consultado el 2 de mayo de 2019 .
enlaces externos
- Página web oficial y referencia de idioma
- Preguntas y respuestas de Facebook: Hack lleva la escritura estática al mundo PHP
- Un tutorial sobre la conversión de un proyecto PHP existente a Hack
- KPHP: una semántica formal ejecutable para PHP