O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
Zephir 
Linguagem 
de 
Programação 
de 
alto 
nível 
para 
criar 
extensões 
para 
PHP 
@lgavinho
http://zephir-lang.com/ 
0.4.2 alpha 
Zend 
Engine 
/ 
PHP 
/ 
Intermediate 
@lgavinho
Zephir 
= 
Phalcon 
2 
• Reduzir 
o 
tempo 
de 
desenvolvimento 
• Fazer 
código 
menos 
propenso 
a 
erros 
de 
codificaç...
Começando... 
Instalar 
dependências 
$ 
sudo 
apt-­‐get 
update 
$ 
sudo 
apt-­‐get 
install 
git 
gcc 
make 
re2c 
php5 ...
Zephir 
namespace 
Test; 
/** 
* 
MyTest 
(test/mytest.zep) 
*/ 
class 
MyTest 
{ 
public 
funcEon 
someMethod() 
{ 
/* 
V...
Algumas 
caracterísEcas 
com 
foco 
no 
Programador 
• Orientada 
a 
objetos 
• Tipos 
estáEcos 
e 
dinâmicos 
• Análise 
...
Type 
hints 
Type 
hint 
informa 
ao 
compilador 
qual 
classe 
está 
relacionado 
a 
uma 
variável 
dinâmica 
permiEndo 
...
Operador 
Fetch 
<?php 
if 
(isset($myArray[$key])) 
{ 
$value 
= 
$myArray[$key]; 
echo 
$value; 
} 
if 
fetch 
value, 
m...
Atalhos 
para 
geYer/seYer 
namespace 
App; 
class 
MyClass 
{ 
protected 
myProperty 
{ 
set, 
get, 
toString 
}; 
protec...
Return 
type 
hints 
Definir 
Epos 
dos 
retornos 
dos 
métodos. 
Tipos 
escalares, 
classes 
e 
namespace 
App; 
class 
M...
Algumas 
comparações 
com 
PHP 
ZEPHIR 
-­‐ 
3 
X 
MAIS 
RÁPIDO 
@lgavinho
Geração 
de 
código 
naEvo 
@lgavinho
Branch 
predicEon 
hints 
PermiEr 
oEmizar 
o 
processamento 
informando 
que 
uma 
condição 
raramente 
irá 
acontecer. 
...
Outras 
caracterísEcas 
• Wrapper 
para 
funções 
customizadas 
oEmizadas 
em 
C 
• Arquivo 
de 
configuração: 
– 6 
param...
Zephir 
não 
vai 
ser 
• Próxima 
linguagem 
de 
programação 
revolucionária. 
• SubsEtuição 
de 
PHP 
ou 
C 
(ou 
qualque...
Pontos 
fracos 
• Tempo 
de 
compilação 
pode 
baixar 
produEvidade 
de 
desenvolvimento 
– Solução 
Zephir 
RunEme 
• Deb...
Então… 
• É 
muito 
rápido. 
É 
simples. 
• OEmizar 
algoritmos 
de 
alta 
demanda 
na 
aplicação. 
• Ganhar 
dinheiro 
de...
Próximos SlideShares
Carregando em…5
×

Painel HHVM, Zephir, PHPNG

586 visualizações

Publicada em

Painel: HHVM x Zephir x PHPNG - com Anderson Casimiro, Levi Ferreira e Luiz Gustavo Gavinho no InterCon PHP 2014.

Confira outras apresentações em: http://interconphp.imasters.com.br/

O InterCon PHP aconteceu no dia 19 de Julho de 2014 no Hotel Intercontinental São Paulo

Publicada em: Educação
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Painel HHVM, Zephir, PHPNG

  1. 1. Zephir Linguagem de Programação de alto nível para criar extensões para PHP @lgavinho
  2. 2. http://zephir-lang.com/ 0.4.2 alpha Zend Engine / PHP / Intermediate @lgavinho
  3. 3. Zephir = Phalcon 2 • Reduzir o tempo de desenvolvimento • Fazer código menos propenso a erros de codificação • PermiEr que mais membros da comunidade possam se envolver • PermiEr que mais usuários do Phalcon possam ler e entender como uma funcionalidade é implementada • PermiEr aos desenvolvedores Erar mais proveito da estrutura e uma total compreensão de como ele funciona • Apresentar potencial de refatoração e oEmizações sem afetar a estabilidade • Adaptar facilmente o código para novas versões do PHP • PermiEr contribuidores para implementar componentes adicionais @lgavinho
  4. 4. Começando... Instalar dependências $ sudo apt-­‐get update $ sudo apt-­‐get install git gcc make re2c php5 php5-­‐json php5-­‐ dev libpcre3-­‐dev Instalar Json-­‐ C (compilar) $ git clone hYps://github.com/json-­‐c/json-­‐c.git $ cd json-­‐c $ sh autogen.sh $ ./configure $ make && sudo make install Instalar Zephir (compilar) $ git clone hYps://github.com/ phalcon/zephir $ cd zephir $ ./install -­‐c hYp://blog.zephir-­‐lang.com/post/73772370742/installing-­‐tesEng-­‐zephir-­‐on-­‐vagrant @lgavinho
  5. 5. Zephir namespace Test; /** * MyTest (test/mytest.zep) */ class MyTest { public funcEon someMethod() { /* Variables must be declared */ var myArray; int i = 0, length; /* Create an array */ let myArray = ["hello", 0, 100.25, false, null]; /* Count the array into a 'int' variable */ let length = count(myArray); /* Print value types */ while i < length { echo typeof myArray[i], "n"; let i++; } return myArray; } } • Proteção de código-­‐ fonte • Compilação possibilita idenEficar erros mais cedo • Baixa curva de aprendizado. Muito parecida com PHP. @lgavinho Exemplo de código em Zephir
  6. 6. Algumas caracterísEcas com foco no Programador • Orientada a objetos • Tipos estáEcos e dinâmicos • Análise estáEca de código • Organização em namespace • Parametros Read-­‐Only (const) • Type hints • Operador Fetch • Atalhos para geYer/seYer • Return Type hints @lgavinho
  7. 7. Type hints Type hint informa ao compilador qual classe está relacionado a uma variável dinâmica permiEndo que o compilador possarealizar mais verificações de compilação. // Tell the compiler that "o" // is an instance of class MyClass let o = <MyClass> this-­‐>_myObject; o-­‐>myMethod(); @lgavinho
  8. 8. Operador Fetch <?php if (isset($myArray[$key])) { $value = $myArray[$key]; echo $value; } if fetch value, myArray[key] { echo value; } zephir @lgavinho
  9. 9. Atalhos para geYer/seYer namespace App; class MyClass { protected myProperty { set, get, toString }; protected someProperty = 10 { set, get }; } @lgavinho
  10. 10. Return type hints Definir Epos dos retornos dos métodos. Tipos escalares, classes e namespace App; class MyClass { public funcEon getSomeData(a) -­‐> string|bool { if a == false { return false; } return "error"; } } void (sem retorno). @lgavinho
  11. 11. Algumas comparações com PHP ZEPHIR -­‐ 3 X MAIS RÁPIDO @lgavinho
  12. 12. Geração de código naEvo @lgavinho
  13. 13. Branch predicEon hints PermiEr oEmizar o processamento informando que uma condição raramente irá acontecer. let allPaths = []; for path in this-­‐>_paths { if unlikely path-­‐>isAllowed() == false { throw new AppExcepEon("error!!"); } else { let allPaths[] = path; } } @lgavinho
  14. 14. Outras caracterísEcas • Wrapper para funções customizadas oEmizadas em C • Arquivo de configuração: – 6 parametros de oEmizações – saída no phpinfo() @lgavinho
  15. 15. Zephir não vai ser • Próxima linguagem de programação revolucionária. • SubsEtuição de PHP ou C (ou qualquer outra linguagem) • Ser a linguagem mais elegante e coerente disponível • Cobrir todos os recursos possíveis (atual ou futura) fornecido pelo PHP ou C • Implementar todos os recursos exatamente como no PHP ou C • Apoiar cada possível paradigma de programação • Fazer todos felizes @lgavinho
  16. 16. Pontos fracos • Tempo de compilação pode baixar produEvidade de desenvolvimento – Solução Zephir RunEme • Debug • Menos agilidade na atualização em produção (live). Requer restart do webserver. • Muito novo. @lgavinho
  17. 17. Então… • É muito rápido. É simples. • OEmizar algoritmos de alta demanda na aplicação. • Ganhar dinheiro desenvolvendo extensões permiEndo proteger seu código-­‐fonte. • Usar componentes em C facilmente no PHP. • E é muito rápido. @lgavinho

×