Hack
Desarrollador(es)
Facebook
https://hacklang.org
Información general
Apareció en 2014
Diseñado por Marcos de la Cruz, David Carvajal, Alok Menghrajani, Drew Paroski, and others[1]
Sistema de tipos Tipado estático, Tipado dinámico, Tipado débil
Influido por PHP, Java, C#
Sistema operativo Multiplataforma
Licencia Licencia MIT[2]

Hack es un lenguaje de programación de alto nivel para la Máquina Virtual HipHop (HHVM), creado por Facebook como una extensión del lenguaje PHP. La implementación del lenguaje es de código abierto, licenciado bajo la licencia MIT.[2][3][4]​ Fue introducido en marzo del 2014.

Hack permite a los programadores utilizar tanto tipado dinámico y tipados estáticos. Este tipo de sistema de tipos se le llama tipificación gradual, y también se aplica en otros lenguajes de programación como ActionScript.[5]​ Hacks permite tipeos que se especifican para argumentos de la función, los valores de retorno de funciones y propiedades de la clase, sin embargo, los tipos de variables locales no se pueden especificar.[3][6][7]

Historia

editar

Los ingenieros de Facebook Bryan O'Sullivan, Julien Verlaguet y Alok Menghrajani[8]​ han pasado los últimos años creando un lenguaje de programación diferente a cualquier otro, que permite crear sitios web complejos y a gran velocidad, sin dejar de asegurar que el código funciona de manera precisa.

Características

editar

Hack interactúa perfectamente con PHP, que es un lenguaje de scripting de código abierto, de uso general ampliamente utilizado, que está especialmente diseñado para el desarrollo de páginas web y puede ser integrado en páginas HTML. La mayoría de los scripts PHP también son válidos en Hack, sin embargo, funciones y construcciones del lenguaje PHP de uso menos frecuente no están soportados en Hack.[9]

Hack extiende la determinación de tipos (type hinting) disponible en PHP 5 a través de la introducción de tipados estáticos, mediante la adición de algunos nuevos (por ejemplo, para los tipos escalares como enteros o cadenas de texto), así como mediante la ampliación del uso de pistas de tipado (por ejemplo, para propiedades de clase o valores de retorno de funciones). Sin embargo, los tipados de variables locales no se pueden especificar .[6][7]​ Dado que Hack utiliza un sistema de tipificación gradual, en el modo predeterminado, escribir anotaciones no es obligatorio, incluso en lugares que no se pueden deducir; el sistema de tipos asumirá que el autor esta en lo correcto y admitirá el código.[10]​ Sin embargo, está disponible un modo "estricto" , donde este tipo de anotaciones son requeridas.[11]

Sintaxis y semántica

editar

La estructura de un archivo básico de script Hack es similar a un script PHP con algunos cambios. Un archivo Hack comienza con <?hh en lugar de <?php de un script de PHP:

<?hh
echo 'Hola Mundo';

El script anterior, similar a PHP, será ejecutado y la siguiente salida se envía al navegador:

Hola Mundo

Un punto importante a destacar es que a diferencia de PHP, Hack y el código HTML no se mezclan. Normalmente se pueden mezclar PHP y HTML código juntos en el mismo archivo, así:

<html>
    <head>
        <title>Prueba de PHP</title>
    </head>
    <body>
        <!-- php y html no se mezclan -->
        <?php echo '<p>Hola Mundo</p>'; ?> 
    </body>
</html>

Funciones

editar

Hack permite que se especifiquen los tipos de datos para los valores de retorno de las funciones y para sus argumentos. Las funciones en Hack, por lo tanto, se declaran con tipos, como se muestra en el siguiente código:

<?hh
// Las funciones en Hack se declaran con tipos.
function negar(bool $x): bool {
    return !$x;
}

Referencias

editar
  1. «Where Credit Belongs for Hack». Bryan O'Sullivan. 28 de marzo de 2014. Consultado el 2 de febrero de 2015. 
  2. a b «facebook/hhvm: hhvm / hphp / hack / LICENSE». github.com. Facebook. 20 de marzo de 2014. Consultado el 11 de agosto de 2014. 
  3. a b Josh Lockhart (3 de abril de 2014). «Facebook’s Hack, HHVM, and the future of PHP». O'Reilly Media. Consultado el 2 de agosto de 2014. 
  4. Cade Metz (20 de marzo de 2014). «Facebook Introduces 'Hack,' the Programming Language of the Future». Wired. Consultado el 15 de abril de 2014. 
  5. Aseem Rastogi; Avik Chaudhuri; Basil Hosmer (January 2012). «The Ins and Outs of Gradual Type Inference» (PDF). Association for Computing Machinery (ACM). Consultado el 23 de septiembre de 2014. 
  6. a b «Hack Manual: Hack and HHVM – Type Annotations». docs.hhvm.com. Consultado el 25 de marzo de 2014. 
  7. a b «Hack Manual: Hack and HHVM – Type Inference». docs.hhvm.com. Archivado desde el original el 26 de marzo de 2014. Consultado el 25 de marzo de 2014. 
  8. «Hack: a new programming language for HHVM». code.facebook.com. Facebook. Consultado el 23 de marzo de 2014. 
  9. «Hack Manual: Hack and HHVM – Unsupported PHP Features in Hack». docs.hhvm.com. Consultado el 2 de abril de 2014. 
  10. «Hack Manual: Partial Mode». docs.hhvm.com. Consultado el 2 de febrero de 2015. 
  11. «Hack Manual: Strict Mode». docs.hhvm.com. Consultado el 2 de febrero de 2015. 

Véase también

editar

Enlaces externos

editar

📚 Artikel Terkait di Wikipedia

Paradigma de programación

(ALGOritmic Language) - enfocado a ser un lenguaje apropiado para definir algoritmos, también puede servir de lenguaje matemático. PL/I (Programing Language One)

Perl

sitios web sobre Perl en el Open Directory Project Datos: Q42478 Multimedia: Perl (programming language) / Q42478 Libros y manuales: Programación en Perl

Lenguaje de programación

«Functional Programming HOWTO — Python 3.5.3rc1 documentation». docs.python.org. Consultado el 13 de enero de 2017.  «Overview - D Programming Language». dlang

Historia de los lenguajes de programación

of Programming Languages, Addison Wesley, 1996. History and evolution of programming languages. Graph of programming language history Datos: Q1068652

HHVM

2014-08-02 de mdy.  Julien Verlaguet (April 2014). «Hack: a new programming language for HHVM». code.facebook.com. Facebook. Consultado el 2014-03-23

Java (lenguaje de programación)

«Programming Language Español». 2020. Archivado desde el original el 16 de enero de 2025. Consultado el 16 de enero de 2026/5.  «TIOBE Programming Community

Redis

podcast Extensive Redis tutorial with real use-cases by Simon WIllison PHP programming examples for Redis Symfony2 Bundle to work with Redis and Queues Datos:

Lenguaje Z

27 de abril de 2010.  Jonathan Jacky (1997). The Way of Z: Practical Programming with Formal Methods. Cambridge University Press. ISBN 0-521-55976-6.