Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
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...
Nächste SlideShare
Wird geladen in …5
×

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

0 Aufrufe

Veröffentlicht am

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.

Veröffentlicht in: Software
  • download Link : http://gg.gg/2w90n
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • Download free facebook hacks here setup 100% Working : http://www.mediafire.com/download/061lqafi8u36i3l/
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • Gehören Sie zu den Ersten, denen das gefällt!

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

×