Hack (linguagem de programação)

Origem: Wikipédia, a enciclopédia livre.
 Nota: Para outros significados de Hack, veja Hack (desambiguação).
Hack
Surgido em 2014
Criado por Julien Verlaguet, Alok Menghrajani, Drew Paroski, e outros[1]
Estilo de tipagem estática, dinâmica, fraca
Influenciada por PHP, Java, C#, .torini
Licença: Licença BSD
Página oficial hacklang.org

Hack[2] é uma linguagem de programação para o HipHop Virtual Machine (HHVM),[3] criado pelo Facebook. A linguagem é um software de código aberto sob a licença BSD.[4][5]

História[editar | editar código-fonte]

A linguagem foi introduzida em 20 de março de 2014.[6] Antes do anúncio público da nova linguagem de programação, o Facebook já havia implementado e testado a linguagem em uma grande parte de seu website.

Hack permite que programadores usem tipagem estática e tipagem dinâmica. Este sistema de tipos é chamado de tipagem gradual, que também é implementado em outras linguagens como ActionScript. O sistema de tipos do Hack permite que tipos possam ser especificados para argumentos de funções, valores de retorno de funções, e propriedades de classes; entretanto, tipos de variáveis locais não podem ser definidos.

Características[editar | editar código-fonte]

Hack interopera sem problemas com o PHP, uma linguagem de script de código aberto, de propósito geral, largamente utilizada, especialmente adaptada para desenvolvimento web e que pode ser embutida de HTML. A maioria dos scripts PHP válidos também funcionam em Hack; entretanto, muitas das funcionalidades e construtores de linguagem pouco utilizados do PHP não são suportados em Hack.[7]

Hack estende a indução de tipo, disponível no PHP 5, introduzindo a tipagem estática, adicionando novos tipos (para tipos escalares como inteiros e strings, por exemplo) e estendendo o uso da indução de tipos (para propriedades de classe ou valores de retorno de função, por exemplo). Entretanto, tipos de variáveis locais não podem ser especificados. Uma vez que Hack usa um sistema de tipos gradual, no modo padrão, a indicação do tipo não é obrigatória, mesmo nos locais onde elas não podem ser inferidas; o sistema de tipos assumirá que o autor está correto e aceitará o código. Entretanto, um modo "estrito" está disponível, no qual a indicação de tipo é obrigatória.[8]

Sintaxe[editar | editar código-fonte]

A estrutura básica de um arquivo de script Hack é similar à de um script PHP com poucas mudanças. Um arquivo Hack inicia com <?hh em oposição à <?php para scripts PHP:

<?hh echo 'Olá Mundo';

O script acima, similar ao PHP, será executado e a seguinte saída será enviada ao navegador:

Olá Mundo

Um importante ponto a se perceber é que, diferente do PHP, código Hack e HTML não podem se misturar. Normalmente você pode misturar código PHP e HTML em um mesmo arquivo, por exemplo:

<html>
    <head>
        <title>Teste PHP</title>
</head>
    <body>
        <!-- Hack e HTML não se misturam -->
        <?php echo '

Olá Mundo

'; ?>
</body>
</html>

Este tipo de código não é suportado pelo Hack; neste caso é necessário usar XHP ou um motor de template.

Funções[editar | editar código-fonte]

Hack permite que tipos possam ser especificados para argumentos de funções e valores de retorno de funções. Em Hack estes tipos são indicados da seguinte forma:

<?hh
// Funções Hack possuem indicação de tipo
function negar(bool $x): bool {
    return !$x;
}

Ver também[editar | editar código-fonte]

Referências

  1. Bryan O'Sullivan (28 de março de 2014). «Where Credit Belongs h Hack» (em inglês). Consultado em 22 de fevereiro de 2015 
  2. «Hack» (em inglês). Facebook. Consultado em 9 de dezembro de 2014 
  3. «A virtual machine designed for executing programs written in Hack and PHP» (em inglês). GitHub. Consultado em 9 de dezembro de 2014 
  4. «Facebook's Hack, HHVM, and the future of PHP» (em inglês). O'Reilly Media. Consultado em 9 de dezembro de 2014 
  5. «Facebook Introduces 'Hack,' the Programming Language of the Future» (em inglês). Wired. Consultado em 9 de dezembro de 2014 
  6. «Hack: a new programming language for HHVM». code.facebook.com (em inglês). Facebook. Consultado em 22 de fevereiro de 2015 
  7. «Hack Manual (Hack and HHVM: Unsupported PHP Features in Hack)». p. docs.hhvm.com. Consultado em 22 de fevereiro de 2015 
  8. «Hack Manual (Strict Mode)». p. docs.hhvm.com. Consultado em 22 de fevereiro de 2015