Hack es un lenguaje de programación para la Máquina Virtual HipHop (HHVM), creado por Meta (anteriormente Facebook) como un dialecto de PHP . La implementación del lenguaje es software libre y de código abierto , con licencia MIT . [ 2 ] [ 3 ] [ 4 ]
Hack permite el uso tanto de tipado dinámico como estático . Este tipo de sistema de tipos se denomina tipado gradual , que 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 funciones , valores de retorno de funciones y propiedades de clases ; sin embargo, los tipos de las variables locales siempre se infieren y no se pueden especificar. [ 3 ] [ 6 ]
Historia
Hack se presentó el 20 de marzo de 2014. [ 7 ] Antes del anuncio del nuevo lenguaje, Facebook ya había implementado el código y lo había probado en una gran parte de su sitio web.
Características
Hack está diseñado para interactuar sin problemas con PHP, un lenguaje de scripting de código abierto ampliamente utilizado, enfocado en el desarrollo web y que puede integrarse en HTML . La mayoría de los scripts PHP válidos también lo son en Hack; sin embargo, muchas características y construcciones del lenguaje PHP menos utilizadas no son compatibles con Hack. [ 8 ]
Hack amplía la sugerencia de tipos disponible en PHP 5 mediante la introducción del tipado estático, añadiendo nuevas sugerencias de tipos (por ejemplo, para tipos escalares como entero o cadena), así como ampliando el uso de sugerencias de tipos (por ejemplo, para propiedades de clase o valores de retorno de funciones). Sin embargo, no se pueden especificar los tipos de las variables locales. [ 6 ] Dado que Hack utiliza un sistema de tipado gradual, en el modo predeterminado, las anotaciones de tipo no son obligatorias incluso en los 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 dichas anotaciones y, por lo tanto, impone un código completamente correcto. [ 10 ]
Sintaxis y semántica
La estructura básica de archivos de un script de Hack es similar a la de un script de PHP con algunos cambios. Un archivo de Hack no incluye la <?phpetiqueta 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. Estas se ejecutan automáticamente si están en el archivo de nivel superior, pero no si el archivo se incluye a través de include, require, o el autocargador. 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 llamarse ambos main:
<< __EntryPoint >> function main () : void { echo '¡Hola, mundo!' ; }El script anterior, similar a PHP, se ejecutará y la siguiente salida se enviará al navegador:
¡Hola Mundo!A diferencia de PHP, el código Hack y HTML no se mezclan; se debe usar XHP u otro motor de plantillas . [ 8 ]
Funciones
Al igual que PHP 7, Hack permite especificar tipos para los argumentos y los valores de retorno de las funciones. Por lo tanto, las funciones en Hack se anotan con tipos como los siguientes:
// Las funciones de hackeo están anotadas con tipos. function negate ( bool $x ) : bool { return ! $x ; }Véase también
Referencias
- ↑ O'Sullivan, Bryan (28 de marzo de 2014). "Donde el crédito pertenece a Hack" . Archivado del original el 1 de marzo de 2021. Recuperado el 6 de febrero de 2019 .
- 1 2 "facebook/hhvm: hhvm, hphp, hack, Licencia" . GitHub.com . Meta Platforms . 11 de abril de 2018. Archivado del original el 7 de enero de 2019. Consultado el 6 de febrero de 2019 .
- 1 2 Lockhart, Josh (2014-04-03). "Facebook's Hack, HHVM y el futuro de PHP" . O'Reilly Media . Archivado del original el 2019-01-07 . Recuperado el 2019-02-06 .
- ↑ Cade Metz (2014-03-20). "Facebook presenta 'Hack', el lenguaje de programación del futuro" . Wired . Archivado del original el 28 de marzo de 2014. 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) . Association for Computing Machinery (ACM). Archivado (PDF) del original el 12 de agosto de 2017. Consultado el 6 de febrero de 2019 .
- 1 2 "Manual de Hack: Hack y HHVM – Anotaciones de tipo" . docs.hhvm.com . Archivado del original el 2 de agosto de 2018. Consultado el 6 de febrero de 2019 .
- ↑ Verlaguet, Julien; Menghrajani, GANDHI (2014-03-20). "Hack: un nuevo lenguaje de programación para HHVM" . Facebook . Archivado del original el 9 de febrero de 2019. Recuperado el 6 de febrero de 2019 .
- 1 2 "Inconsistencias: Introducción" . docs.hhvm.com . Archivado del original el 4 de abril de 2019. Consultado el 4 de abril de 2019 .
- ↑ "Manual de hackeo: Modo parcial" . docs.hhvm.com . Archivado del original el 19/11/2018 . Consultado el 06/02/2019 .
- ↑ "Manual de hackeo: Modo estricto" . docs.hhvm.com . Archivado del original el 19/11/2018 . Consultado el 06/02/2019 .
- ↑ Emmott, Fred (11 de febrero de 2019). "HHVM 4.0.0" . hhvm.com . Archivado del original el 14 de mayo de 2021. Consultado el 2 de mayo de 2019 .
Enlaces externos
- Software de 2014
- Lenguajes de programación de tipado dinámico
- Software programado en PHP
- Lenguajes de programación compilados a código de bytes
- Lenguajes de programación creados en 2014
- Lenguajes de scripting
- Lenguajes de programación de tipado estático