b'\n_START_ARTICLE_\nHack (linguagem de programa\xc3\xa7\xc3\xa3o)\n_START_SECTION_\nHist\xc3\xb3ria\n_START_PARAGRAPH_\nA linguagem foi introduzida em 20 de mar\xc3\xa7o de 2014. Antes do an\xc3\xbancio p\xc3\xbablico da nova linguagem de programa\xc3\xa7\xc3\xa3o, o Facebook j\xc3\xa1 havia implementado e testado a linguagem em uma grande parte de seu website._NEWLINE_Hack permite que programadores usem tipagem est\xc3\xa1tica e tipagem din\xc3\xa2mica. Este sistema de tipos \xc3\xa9 chamado de tipagem gradual, que tamb\xc3\xa9m \xc3\xa9 implementado em outras linguagens como ActionScript. O sistema de tipos do Hack permite que tipos possam ser especificados para argumentos de fun\xc3\xa7\xc3\xb5es, valores de retorno de fun\xc3\xa7\xc3\xb5es, e propriedades de classes; entretanto, tipos de vari\xc3\xa1veis locais n\xc3\xa3o podem ser definidos.\n_START_SECTION_\nCaracter\xc3\xadsticas\n_START_PARAGRAPH_\nHack interopera sem problemas com o PHP, uma linguagem de script de c\xc3\xb3digo aberto, de prop\xc3\xb3sito geral, largamente utilizada, especialmente adaptada para desenvolvimento web e que pode ser embutida de HTML. A maioria dos scripts PHP v\xc3\xa1lidos tamb\xc3\xa9m funcionam em Hack; entretanto, muitas das funcionalidades e construtores de linguagem pouco utilizados do PHP n\xc3\xa3o s\xc3\xa3o suportados em Hack._NEWLINE_Hack estende a indu\xc3\xa7\xc3\xa3o de tipo, dispon\xc3\xadvel no PHP 5, introduzindo a tipagem est\xc3\xa1tica, adicionando novos tipos (para tipos escalares como inteiros e strings, por exemplo) e estendendo o uso da indu\xc3\xa7\xc3\xa3o de tipos (para propriedades de classe ou valores de retorno de fun\xc3\xa7\xc3\xa3o, por exemplo). Entretanto, tipos de vari\xc3\xa1veis locais n\xc3\xa3o podem ser especificados. Uma vez que Hack usa um sistema de tipos gradual, no modo padr\xc3\xa3o, a indica\xc3\xa7\xc3\xa3o do tipo n\xc3\xa3o \xc3\xa9 obrigat\xc3\xb3ria, mesmo nos locais onde elas n\xc3\xa3o podem ser inferidas; o sistema de tipos assumir\xc3\xa1 que o autor est\xc3\xa1 correto e aceitar\xc3\xa1 o c\xc3\xb3digo. Entretanto, um modo "estrito" est\xc3\xa1 dispon\xc3\xadvel, no qual a indica\xc3\xa7\xc3\xa3o de tipo \xc3\xa9 obrigat\xc3\xb3ria.\n_START_SECTION_\nSintaxe\n_START_PARAGRAPH_\nA estrutura b\xc3\xa1sica de um arquivo de script Hack \xc3\xa9 similar \xc3\xa0 de um script PHP com poucas mudan\xc3\xa7as. Um arquivo Hack inicia com <?hh em oposi\xc3\xa7\xc3\xa3o \xc3\xa0 <?php para scripts PHP:_NEWLINE_<?hh echo \'Ol\xc3\xa1 Mundo\';_NEWLINE_O script acima, similar ao PHP, ser\xc3\xa1 executado e a seguinte sa\xc3\xadda ser\xc3\xa1 enviada ao navegador:_NEWLINE_Ol\xc3\xa1 Mundo_NEWLINE_Um importante ponto a se perceber \xc3\xa9 que, diferente do PHP, c\xc3\xb3digo Hack e HTML n\xc3\xa3o podem se misturar. Normalmente voc\xc3\xaa pode misturar c\xc3\xb3digo PHP e HTML em um mesmo arquivo, por exemplo:_NEWLINE_<html>    <head>        <title>Teste PHP</title></head>    <body>        <!-- Hack e HTML n\xc3\xa3o se misturam -->        <?php echo \'Ol\xc3\xa1 Mundo\'; ?></body></html>_NEWLINE_Este tipo de c\xc3\xb3digo n\xc3\xa3o \xc3\xa9 suportado pelo Hack; neste caso \xc3\xa9 necess\xc3\xa1rio usar XHP ou um motor de template.\n_START_SECTION_\nFun\xc3\xa7\xc3\xb5es\n_START_PARAGRAPH_\nHack permite que tipos possam ser especificados para argumentos de fun\xc3\xa7\xc3\xb5es e valores de retorno de fun\xc3\xa7\xc3\xb5es. Em Hack estes tipos s\xc3\xa3o indicados da seguinte forma:_NEWLINE_<?hh// Fun\xc3\xa7\xc3\xb5es Hack possuem indica\xc3\xa7\xc3\xa3o de tipo function negar(bool $x): bool {_NEWLINE_    return !$x;}'