Your SlideShare is downloading. ×
Facebook's Hack programming language / Linguagem de programação Hack do Facebook
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

544

Published on

Just an overview of the new Facebook's programming language. …

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.

Published in: Software
2 Comments
0 Likes
Statistics
Notes
  • download Link : http://gg.gg/2w90n
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Download free facebook hacks here setup 100% Working : http://www.mediafire.com/download/061lqafi8u36i3l/
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

No Downloads
Views
Total Views
544
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
25
Comments
2
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for 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
  • Transcript

    • 1. Hack Language Rafael Anastácio Davi Catunda Diego Bretas
    • 2. Sumário ● Motivação ● PHP ● HHVM ● The Hack Language ● Tutorial prático
    • 3. Motivação
    • 4. Motivação
    • 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. Motivação ● Linguagem nova -> Desenvolvedores mais produtivos o Iteração rápida o Preservar PHP o Detecção de erro
    • 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. Motivação
    • 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. 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. 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. 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. 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. 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. 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. HHVM Fonte: http://hhvm.com/frameworks/
    • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. The Hack Language Generics o Permite parametrizar métodos e classes(i.e um tipo associado quando uma classe ou metodo é instanciado)
    • 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. 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. 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

    ×