Zephir	
  
Linguagem	
  de	
  Programação	
  de	
  alto	
  
nível	
  para	
  criar	
  extensões	
  para	
  PHP	
  
@lgavin...
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	
  p...
Começando...	
  
Instalar	
  
dependências	
  
Instalar	
  Json-­‐
C	
  (compilar)	
  
Instalar	
  
Zephir	
  
(compilar)	...
Zephir	
  
namespace	
  Test;	
  
	
  
/**	
  
	
  *	
  MyTest	
  (test/mytest.zep)	
  
	
  */	
  
class	
  MyTest	
  
{	
...
Algumas	
  caracterísEcas	
  	
  
com	
  foco	
  no	
  Programador	
  
•  Orientada	
  a	
  objetos	
  
•  Tipos	
  estáEc...
Type	
  hints	
  
//	
  Tell	
  the	
  compiler	
  that	
  "o"	
  
//	
  is	
  an	
  instance	
  of	
  class	
  MyClass	
 ...
<?php	
  
	
  
if	
  (isset($myArray[$key]))	
  {	
  
	
  	
  	
  	
  $value	
  =	
  $myArray[$key];	
  
	
  	
  	
  	
  e...
Atalhos	
  para	
  geYer/seYer	
  
namespace	
  App;	
  
	
  
class	
  MyClass	
  
{	
  
	
  	
  	
  	
  protected	
  myPr...
Return	
  type	
  hints	
  
namespace	
  App;	
  
	
  
class	
  MyClass	
  
{	
  
	
  	
  	
  	
  public	
  funcEon	
  get...
ZEPHIR	
  -­‐	
  3	
  X	
  MAIS	
  RÁPIDO	
  
Algumas	
  comparações	
  com	
  PHP	
  
@lgavinho	
  
Geração	
  de	
  código	
  naEvo	
  
@lgavinho	
  
Branch	
  predicEon	
  hints	
  
let	
  allPaths	
  =	
  [];	
  
for	
  path	
  in	
  this-­‐>_paths	
  {	
  
	
  	
  	
  ...
Outras	
  caracterísEcas	
  
•  Wrapper	
  para	
  funções	
  customizadas	
  
oEmizadas	
  em	
  C	
  
•  Arquivo	
  de	
...
Zephir	
  não	
  vai	
  ser	
  
•  Próxima	
  linguagem	
  de	
  programação	
  revolucionária.	
  
•  SubsEtuição	
  de	
...
Pontos	
  fracos	
  
•  Tempo	
  de	
  compilação	
  pode	
  baixar	
  
produEvidade	
  de	
  desenvolvimento	
  
– Soluçã...
Então…	
  
•  É	
  muito	
  rápido.	
  É	
  simples.	
  
•  OEmizar	
  algoritmos	
  de	
  alta	
  demanda	
  na	
  
aplic...
Próximos SlideShares
Carregando em…5
×

Zephir

621 visualizações

Publicada em

Uma visão geral de Zephir.

Publicada em: Software
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
621
No SlideShare
0
A partir de incorporações
0
Número de incorporações
138
Ações
Compartilhamentos
0
Downloads
3
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Zephir

  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   Instalar  Json-­‐ C  (compilar)   Instalar   Zephir   (compilar)   $  sudo  apt-­‐get  update   $  sudo  apt-­‐get  install  git  gcc  make  re2c  php5  php5-­‐json  php5-­‐ dev  libpcre3-­‐dev   $  git  clone  hYps://github.com/json-­‐c/json-­‐c.git   $  cd  json-­‐c   $  sh  autogen.sh   $  ./configure   $  make  &&  sudo  make  install   $  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.   Exemplo  de  código  em  Zephir  @lgavinho  
  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   //  Tell  the  compiler  that  "o"   //  is  an  instance  of  class  MyClass   let  o  =  <MyClass>  this-­‐>_myObject;   o-­‐>myMethod();   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.   @lgavinho  
  8. 8. <?php     if  (isset($myArray[$key]))  {          $value  =  $myArray[$key];          echo  $value;   }   Operador  Fetch   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   namespace  App;     class  MyClass   {          public  funcEon  getSomeData(a)  -­‐>  string|bool          {                  if  a  ==  false  {                          return  false;                  }                  return  "error";          }     }   Definir  Epos  dos  retornos  dos  métodos.  Tipos   escalares,  classes  e  void  (sem  retorno).   @lgavinho  
  11. 11. ZEPHIR  -­‐  3  X  MAIS  RÁPIDO   Algumas  comparações  com  PHP   @lgavinho  
  12. 12. Geração  de  código  naEvo   @lgavinho  
  13. 13. Branch  predicEon  hints   let  allPaths  =  [];   for  path  in  this-­‐>_paths  {          if  unlikely  path-­‐>isAllowed()  ==  false  {                  throw  new  AppExcepEon("error!!");          }  else  {                  let  allPaths[]  =  path;          }   }   PermiEr  oEmizar  o  processamento  informando   que  uma  condição  raramente  irá  acontecer.   @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  

×