SlideShare a Scribd company logo
1 of 30
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 de
execução
API complexa
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
rapidamente
 Sacrifício na habilidade de uma
introspeccção rápida no código
Motivação
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
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...
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.
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.
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.
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
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.
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 alta prioridade rodar todos os códigos
PHP existentes na comunidade.
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).
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.
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.
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.
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.
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
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
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.
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.
The Hack Language
Generics
o Permite parametrizar métodos e classes(i.e um
tipo associado quando uma classe ou metodo é
instanciado)
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.
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).
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

More Related Content

What's hot

Python Módulo Básico - Introdução a linguagem Python
Python Módulo Básico - Introdução a linguagem PythonPython Módulo Básico - Introdução a linguagem Python
Python Módulo Básico - Introdução a linguagem Pythonantonio sérgio nogueira
 
Aula 3 compiladores e interpretadores
Aula 3   compiladores e interpretadoresAula 3   compiladores e interpretadores
Aula 3 compiladores e interpretadoresLCCIMETRO
 
Conceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de ProgramaçãoConceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de ProgramaçãoSidney Roberto
 
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Adriano Teixeira de Souza
 
Explorando O Potencial Das Linguagens De Programação Open Source
Explorando O Potencial Das Linguagens De Programação Open SourceExplorando O Potencial Das Linguagens De Programação Open Source
Explorando O Potencial Das Linguagens De Programação Open SourceRafael Jaques
 
Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)
Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)
Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)Leinylson Fontinele
 
Linguagem de programação
Linguagem de programação Linguagem de programação
Linguagem de programação Marcos Gregorio
 
Comparando python com outras linguagens de programação
Comparando python com outras linguagens de programaçãoComparando python com outras linguagens de programação
Comparando python com outras linguagens de programaçãoValore I/O
 
Introdução a Linguagem de Programação
Introdução a Linguagem de ProgramaçãoIntrodução a Linguagem de Programação
Introdução a Linguagem de ProgramaçãoJessica Ribeiro
 
Aula de C para Linux
Aula de C para LinuxAula de C para Linux
Aula de C para LinuxChris x-MS
 
As escolhas do desenvolvedor
As escolhas do desenvolvedorAs escolhas do desenvolvedor
As escolhas do desenvolvedorWillian Molinari
 
Linguágens de programação
Linguágens de programaçãoLinguágens de programação
Linguágens de programaçãoAlbertoVach
 

What's hot (20)

Python Módulo Básico - Introdução a linguagem Python
Python Módulo Básico - Introdução a linguagem PythonPython Módulo Básico - Introdução a linguagem Python
Python Módulo Básico - Introdução a linguagem Python
 
Aula 3 compiladores e interpretadores
Aula 3   compiladores e interpretadoresAula 3   compiladores e interpretadores
Aula 3 compiladores e interpretadores
 
Como tornar-se um programador Python melhor
Como tornar-se um programador Python melhorComo tornar-se um programador Python melhor
Como tornar-se um programador Python melhor
 
Conceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de ProgramaçãoConceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de Programação
 
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
 
Explorando O Potencial Das Linguagens De Programação Open Source
Explorando O Potencial Das Linguagens De Programação Open SourceExplorando O Potencial Das Linguagens De Programação Open Source
Explorando O Potencial Das Linguagens De Programação Open Source
 
Canivete suíço do Python
Canivete suíço do PythonCanivete suíço do Python
Canivete suíço do Python
 
Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)
Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)
Introdução à Computação Aula 09 - Algoritmos (Linguagens de Programação)
 
Paradigmas de Linguagem
Paradigmas de LinguagemParadigmas de Linguagem
Paradigmas de Linguagem
 
Linguagem de programação
Linguagem de programação Linguagem de programação
Linguagem de programação
 
Lp m2(parte1)
Lp m2(parte1)Lp m2(parte1)
Lp m2(parte1)
 
Desenvolvimento web e PHP
Desenvolvimento web e PHPDesenvolvimento web e PHP
Desenvolvimento web e PHP
 
Linguagem da programação
Linguagem da programaçãoLinguagem da programação
Linguagem da programação
 
Comparando python com outras linguagens de programação
Comparando python com outras linguagens de programaçãoComparando python com outras linguagens de programação
Comparando python com outras linguagens de programação
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
Introdução a Linguagem de Programação
Introdução a Linguagem de ProgramaçãoIntrodução a Linguagem de Programação
Introdução a Linguagem de Programação
 
Aula de C para Linux
Aula de C para LinuxAula de C para Linux
Aula de C para Linux
 
Linguagens de programação
Linguagens de programaçãoLinguagens de programação
Linguagens de programação
 
As escolhas do desenvolvedor
As escolhas do desenvolvedorAs escolhas do desenvolvedor
As escolhas do desenvolvedor
 
Linguágens de programação
Linguágens de programaçãoLinguágens de programação
Linguágens de programação
 

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

Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPDaniel Brandão
 
Ferramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHPFerramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHPAdler Medrado
 
python_para_desenvolvedores.pdf
python_para_desenvolvedores.pdfpython_para_desenvolvedores.pdf
python_para_desenvolvedores.pdfProfIvanSaboia
 
Curso de php do básico ao avançado
Curso de php do básico ao avançadoCurso de php do básico ao avançado
Curso de php do básico ao avançadoThiago Carlos
 
Apresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHPApresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHPLorranna Machado
 
5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução
5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução
5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introduçãoAgrupamento de Escolas da Batalha
 
WebVibe Barueri 2011 - "PHP por quê ?"
WebVibe Barueri 2011 - "PHP por quê ?"WebVibe Barueri 2011 - "PHP por quê ?"
WebVibe Barueri 2011 - "PHP por quê ?"Hélio Costa e Silva
 
Artigo de php
Artigo de phpArtigo de php
Artigo de phprobson
 
Aula 01 introdução ao php
Aula 01   introdução ao phpAula 01   introdução ao php
Aula 01 introdução ao phpAdriano Castro
 
PHP para aplicações Web de grande porte
PHP para aplicações Web  de grande portePHP para aplicações Web  de grande porte
PHP para aplicações Web de grande porteFelipe Ribeiro
 
Como contribuir-com-open-source-php conference-2016
Como contribuir-com-open-source-php conference-2016Como contribuir-com-open-source-php conference-2016
Como contribuir-com-open-source-php conference-2016Marcos Paulo
 
Desenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetosDesenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetosLucas Vegi
 
Automação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com PythonAutomação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com PythonFabio Spanhol
 
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHPLabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHPCarlos Santos
 

Similar to Facebook's Hack programming language / Linguagem de programação Hack do Facebook (20)

Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHP
 
Pho Aula 02
Pho Aula 02Pho Aula 02
Pho Aula 02
 
Ferramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHPFerramentas Livres Para Desenvolvimento com PHP
Ferramentas Livres Para Desenvolvimento com PHP
 
python_para_desenvolvedores.pdf
python_para_desenvolvedores.pdfpython_para_desenvolvedores.pdf
python_para_desenvolvedores.pdf
 
Curso de php do básico ao avançado
Curso de php do básico ao avançadoCurso de php do básico ao avançado
Curso de php do básico ao avançado
 
Comparativo do uso de linguagens de programação e geradores de código no dese...
Comparativo do uso de linguagens de programação e geradores de código no dese...Comparativo do uso de linguagens de programação e geradores de código no dese...
Comparativo do uso de linguagens de programação e geradores de código no dese...
 
Linguagem PHP
Linguagem PHPLinguagem PHP
Linguagem PHP
 
Guia php
Guia phpGuia php
Guia php
 
Apresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHPApresentação da Linguagem de Programação PHP
Apresentação da Linguagem de Programação PHP
 
5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução
5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução
5 – Desenvolvimento de Páginas Web Dinâmicas PHP: introdução
 
WebVibe Barueri 2011 - "PHP por quê ?"
WebVibe Barueri 2011 - "PHP por quê ?"WebVibe Barueri 2011 - "PHP por quê ?"
WebVibe Barueri 2011 - "PHP por quê ?"
 
Php enterprise
Php enterprisePhp enterprise
Php enterprise
 
Artigo de php
Artigo de phpArtigo de php
Artigo de php
 
Aula 01 introdução ao php
Aula 01   introdução ao phpAula 01   introdução ao php
Aula 01 introdução ao php
 
PHP para aplicações Web de grande porte
PHP para aplicações Web  de grande portePHP para aplicações Web  de grande porte
PHP para aplicações Web de grande porte
 
Como contribuir-com-open-source-php conference-2016
Como contribuir-com-open-source-php conference-2016Como contribuir-com-open-source-php conference-2016
Como contribuir-com-open-source-php conference-2016
 
Desenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetosDesenvolvimento web: PHP orientado a objetos
Desenvolvimento web: PHP orientado a objetos
 
Manual PHP
Manual PHPManual PHP
Manual PHP
 
Automação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com PythonAutomação de Aplicativos: Scripting com Python
Automação de Aplicativos: Scripting com Python
 
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHPLabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
LabMM4 (T10 - 12/13) - Tecnologias server-side - PHP
 

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

  • 2. Sumário ● Motivação ● PHP ● HHVM ● The Hack Language ● Tutorial prático
  • 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
  • 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.
  • 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

Editor's Notes

  1. Contexto do Facebook -> Milhares de engenheiros programando ao mesmo tempo -> qualquer contratempo pode ser problemático
  2. Desenvolvedor entende a semântica, mas gasta bastante tempo com nomes de métodos na documentação
  3. Desenvolvedor entende a semântica, mas gasta bastante tempo com nomes de métodos na documentação
  4. Desenvolvedor entende a semântica, mas gasta bastante tempo com nomes de métodos na documentação
  5. Desenvolvedor entende a semântica, mas gasta bastante tempo com nomes de métodos na documentação