Hack Language
Rafael Anastácio
Davi Catunda
Diego Bretas
Sumário
● Motivação
● PHP
● HHVM
● The Hack Language
● Tutorial prático
Motivação
Motivação
Motivação
● Erros que podem ser percebidos
somente em termo de execução
● API complexas
Erros detectados somente em tempo ...
Motivação
● Linguagem nova -> Desenvolvedores mais
produtivos
o Iteração rápida
o Preservar PHP
o Detecção de erro
Motivação
● Linguagem dinâmicamente tipadas
o Rápido desenvolvimento
 Sacrifício na habilidade de detectar erros
rapidame...
Motivação
Motivação
● Linguagem de programação para HHVM
● Interopera perfeitamente com PHP
● Concilia
o o rápido desenvolvimento do...
Checagem de tipo
instantânea
Problema
o Durante o desenvolvimento, um programador PHP
pode facilmente alternar entre o cód...
Checagem de tipo
instantânea
Problema
o Uma checagem de tipos tradicional
normalmente rompe com a rotina de feedback
devid...
Checagem de tipo
instantânea
Solução
o A solução arquitetural do Facebook foi projetar um
type checker num servidor local ...
Checagem de tipo
instantânea
Resultado
o O type checker roda em menos que 200
millisegundos e raramente mais que 1 segundo...
HHVM
O que é HHVM?
o Uma máquina virtual projetada para executar
programas escritos em Hack e PHP.
o Usa a abordagem de co...
HHVM
O que é HHVM?
o HHVM roda muito dos código PHPs utilizados no
mundo. Desenvolvedores e hosts estão
adotando o HHVM.
o...
HHVM
Fonte: http://hhvm.com/frameworks/
HHVM
O que é HHVM
o O time do HHVM, juntamente com a cooperação
de membros da comunidade, tornou um objetivo
claro e de al...
HHVM
O Compilador JIT
o O HHVM não interpreta diretamente ou compila
código PHP em C++. Hack e PHP são compilados
para um ...
HHVM
O Compilador JIT
o Tal abordagem permite inúmeras otimizações
que não seria possível para código binário gerado
estat...
Migração de código
o Alguns benefícios advindos de segurança de
tipagem e de refatoração do Hack são mais
perceptíveis qua...
Migração de código
o O transições que envolvem adição de anotações
de tipos e uso de novos recursos de linguagens
podem se...
Migração de código
Automatização
o Historicamente, a aceitação do Hack foi grande o
suficiente para muitos migrarem seus c...
Web Development
Que linguagem/framework utilizar
o C/C++
 performance
o Java
 write once, run everywhere
o Ruby On Rails...
The Hack Language
Suporte
o Tem suas raízes no PHP, mas alguns funções
obsoletas ou incompatíveis com tipagem estática
for...
The Hack Language
Tipagem estática (principal)
o Foi adicionado informação de tipo a assinatura de funções e
membros de cl...
The Hack Language
Anotações de tipo
o Permite explicitar no código em PHP tipos nos
parametros, variáveis de membros de cl...
The Hack Language
Generics
o Permite parametrizar métodos e classes(i.e um
tipo associado quando uma classe ou metodo é
in...
The Hack Language
Tipos Anuláveis
o Podemos usar o operador ? para introduzir um
modo mais seguro de lidar com nulos sendo...
The Hack Language
Coleções
o Melhora a experiência de trabalhar com arrays em
PHP, provendo classes, já parametrizadas
 V...
The Hack Language
Lambdas
o Oferecem funcionalidade similar as funções
anonimas do PHP, mas eles capturam
implicitamente v...
Próximos SlideShares
Carregando em…5
×

Facebook's Hack programming language / Linguagem de programação Hack do Facebook

1.182 visualizações

Publicada em

Just an overview of the new Facebook's programming language.
(It's written in PT-BR)
/
Apenas uma visão geral da nova linguagem de programação do Facebook.

Publicada em: Software
2 comentários
0 gostaram
Estatísticas
Notas
  • download Link : http://gg.gg/2w90n
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • Download free facebook hacks here setup 100% Working : http://www.mediafire.com/download/061lqafi8u36i3l/
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.182
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
29
Comentários
2
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • Contexto do Facebook -> Milhares de engenheiros programando ao mesmo tempo -> qualquer contratempo pode ser problemático
  • Desenvolvedor entende a semântica, mas gasta bastante tempo com nomes de métodos na documentação
  • Desenvolvedor entende a semântica, mas gasta bastante tempo com nomes de métodos na documentação
  • Desenvolvedor entende a semântica, mas gasta bastante tempo com nomes de métodos na documentação
  • Desenvolvedor entende a semântica, mas gasta bastante tempo com nomes de métodos na documentação
  • Facebook's Hack programming language / Linguagem de programação Hack do Facebook

    1. 1. Hack Language Rafael Anastácio Davi Catunda Diego Bretas
    2. 2. Sumário ● Motivação ● PHP ● HHVM ● The Hack Language ● Tutorial prático
    3. 3. Motivação
    4. 4. Motivação
    5. 5. Motivação ● Erros que podem ser percebidos somente em termo de execução ● API complexas Erros detectados somente em tempo de execução API complexa
    6. 6. Motivação ● Linguagem nova -> Desenvolvedores mais produtivos o Iteração rápida o Preservar PHP o Detecção de erro
    7. 7. Motivação ● Linguagem dinâmicamente tipadas o Rápido desenvolvimento  Sacrifício na habilidade de detectar erros rapidamente  Sacrifício na habilidade de uma introspeccção rápida no código
    8. 8. Motivação
    9. 9. Motivação ● Linguagem de programação para HHVM ● Interopera perfeitamente com PHP ● Concilia o o rápido desenvolvimento do PHP o disciplina provida pela tipagem estática o Adiciona ferramentas encontradas em outras linguagens modernas
    10. 10. Checagem de tipo instantânea Problema o Durante o desenvolvimento, um programador PHP pode facilmente alternar entre o código fonte e seu resultado no navegador. o Pode-se "iterar" nesse processo quantas vezes eles quiserem até atingirem o grau de perfeição almejado do código...
    11. 11. Checagem de tipo instantânea Problema o Uma checagem de tipos tradicional normalmente rompe com a rotina de feedback devido ao fato de a análise de código ser demorada. o Para não atrasar o fluxo de trabalho do PHP, o Facebook projetou uma abordagem nova que reconcilia feedback instantâneo com segurança quanto a tipagem.
    12. 12. Checagem de tipo instantânea Solução o A solução arquitetural do Facebook foi projetar um type checker num servidor local que observa o sistema de arquivos onde o código a ser analisado se encontra. o O servidor mantém toda informação sobre o código em memória e automaticamente atualiza suas informações quando ocorrem mudanças.
    13. 13. Checagem de tipo instantânea Resultado o O type checker roda em menos que 200 millisegundos e raramente mais que 1 segundo. o Conseguentemente tornou-se possível a rotina de checagem sem atraso perceptível.
    14. 14. HHVM O que é HHVM? o Uma máquina virtual projetada para executar programas escritos em Hack e PHP. o Usa a abordagem de compilação just-in-time (JIT) para obter uma performance maior e, ao mesmo tempo, prover a flexibilidade oriunda do PHP
    15. 15. HHVM O que é HHVM? o HHVM roda muito dos código PHPs utilizados no mundo. Desenvolvedores e hosts estão adotando o HHVM. o Ainda existem pequenas incompatibilidades, porém a solução proposta pelo Facebook roda bem os top 20 frameworks do Github.
    16. 16. HHVM Fonte: http://hhvm.com/frameworks/
    17. 17. HHVM O que é HHVM o O time do HHVM, juntamente com a cooperação de membros da comunidade, tornou um objetivo claro e de alta prioridade rodar todos os códigos PHP existentes na comunidade.
    18. 18. HHVM O Compilador JIT o O HHVM não interpreta diretamente ou compila código PHP em C++. Hack e PHP são compilados para um código portável (bytecode) intermediário. o Tal código é traduzido para código de máquina de 64 bits dinamicamente em tempo de execução por um compilador just-in-time (JIT).
    19. 19. HHVM O Compilador JIT o Tal abordagem permite inúmeras otimizações que não seria possível para código binário gerado estaticamente. o Consequentemente torna possível maior performance dos programas Hack e PHP.
    20. 20. Migração de código o Alguns benefícios advindos de segurança de tipagem e de refatoração do Hack são mais perceptíveis quando todo o código está na linguagem Hack (e menos código em PHP). o Como a transição para uma nova linguagem requer tempo, a linguagem Hack pode interoperar diretamente com arquivos PHP de uma aplicação enquanto os novos arquivos são introduzidos aos poucos.
    21. 21. Migração de código o O transições que envolvem adição de anotações de tipos e uso de novos recursos de linguagens podem ser feito conforme necessidade para um arquivo de código. o No mesmo arquivo de código podem existir:  Funções com assinaturas contendo tipos  Funções com assinaturas sem tipos. o Se a função não possui tipos em sua assinatura, a tipagem é conferida dinamicamente.
    22. 22. Migração de código Automatização o Historicamente, a aceitação do Hack foi grande o suficiente para muitos migrarem seus códigos voluntariamente. o Criaram assim, uma ferramenta de automatização para migração de código para auxiliar no processo.  Liberado como parte do Hack.
    23. 23. Web Development Que linguagem/framework utilizar o C/C++  performance o Java  write once, run everywhere o Ruby On Rails  Simple and easy to write o Python Django  More with less o PHP(Yii, Zend, CodeIgnator) ou Hack
    24. 24. The Hack Language Suporte o Tem suas raízes no PHP, mas alguns funções obsoletas ou incompatíveis com tipagem estática foram removidas, (e.g “variáveis variáveis”) e outras adicionadas
    25. 25. The Hack Language Tipagem estática (principal) o Foi adicionado informação de tipo a assinatura de funções e membros de classe, já o algoritmo de checagem (o “type checker”) infere o resto. o A checagem de tipo é incremental, de tal forma que um arquivo pode ser convertido para Hack e o resto pode continuar sendo dinamicamente tipado. o Tecnicamente Hack é uma linguagem dinamicamente tipada que funciona com tipagem estática.
    26. 26. The Hack Language Anotações de tipo o Permite explicitar no código em PHP tipos nos parametros, variáveis de membros de classes e valores de retorno.
    27. 27. The Hack Language Generics o Permite parametrizar métodos e classes(i.e um tipo associado quando uma classe ou metodo é instanciado)
    28. 28. The Hack Language Tipos Anuláveis o Podemos usar o operador ? para introduzir um modo mais seguro de lidar com nulos sendo muito util para tipos primitivos (bool, int .. etc) bastando fazer ?bool e ?int. O operador pode ser usado em qualquer tipo ou classe.
    29. 29. The Hack Language Coleções o Melhora a experiência de trabalhar com arrays em PHP, provendo classes, já parametrizadas  Vector (lista com ordenação e indexada)  Map (um dicionário ordenado)  Set (uma lista de valores unicos)  Pair (uma coleção indexada composta de exatamente 2 elementos) Collections enhance the experience of working with PHP arrays, by providing first class, built-in parameterized types such as Vector (an ordered, index-based list), Map (an ordered dictionary), Set (a list of unique values), and Pair (an index-based collection of exactly two elements).
    30. 30. The Hack Language Lambdas o Oferecem funcionalidade similar as funções anonimas do PHP, mas eles capturam implicitamente variaveis do corpo destas funções e sao menos verbosas

    ×