SlideShare ist ein Scribd-Unternehmen logo
1 von 75
Downloaden Sie, um offline zu lesen
PHP NÃO é coisa   Felipe Ribeiro
                  http://feliperibeiro.com
    de moleque!   felipernb@gmail.com
Felipe Ribeiro
•Graduando (concluinte) em Ciência da Computação na
 UFCG
•Zend Certified Engineer
•Desenvolvedor Web há 7 anos, atualmente trabalhando
 para a startup Shoprizer.com
•Experiência em grids computacionais e sistemas
 distribuídos
•Membro fundador do grupo PHP-PB
•Contribuidor do PHP no Google Summer of
 Code 2009
Text


Enquanto .NET e Java
brigam, fazendo muito
             barulho...
PHP se
mantém como
 a tecnologia
 número 1 da
        Web.
Mesmo assim, alguns
  dizem que PHP é
 “coisa de moleque”
E por que o
  PHP carrega
essa má fama?
Por causa dos
    profissionais
desqualificados...
dos mitos...
E pela falta de
propaganda...
Esse cenário pode
mudar, só depende
da comunidade
Qualificação de profissionais
•PHP é fácil de aprender e sua flexibilidade permite que
 seja utilizado das mais diversas maneiras (boas ou
 ruins)

•Programadores Java normalmente precisam de uma
 formação mais sólida (orientação a objeto, padrões de
 projeto, eficiência de algoritmos, estruturas de dados, e
 etc.)

•BONS programadores PHP também
 precisam!!!
Marketing
•PHP não é produto de nenhum big player do mercado
 enterprise

•Mas já despertou o interesse de:

  •IBM
  •Oracle
  •Yahoo!
  •Microsoft
  •entre outros...
Marketing
•PHP está presente em mais de 25 milhões de sites

•Com tudo isso, pra que propaganda? A propaganda
 somos nós e tudo o que nós fazemos!
E que tal
esclarecermos
  os mitos?
PHP é uma linguagem
Mito #1 para Web, e por
   isso é muito limitada
Nunca
subestime a
       Web!
Nunca
           subestime a
                  Web!

É a plataforma
dominante da
nossa geração
Cloud
computing         SaaS



                Web
            Services
Algoritmos de alta
    complexidade
Algoritmos de alta
          complexidade
Indexação e busca
Recomendação de produtos
(Amazon) e músicas (Last.fm)
 Folksonomia e ranking
 (Delicious e Flickr)
Teoria dos Grafos (redes
sociais)
Além das
infraestruturas
sofisticadas
Além das
infraestruturas
sofisticadas
 Sistemas distribuídos
 Balanceamento de carga
 Escalar horizontalmente
Sistemas Web não são
mais tão simples quanto
eram há 10 anos
Mito #2 Códigos
 PHP são sujos
"PHP is not about purity in CS principles or
   architecture; it is about solving the ugly web
 problem with an admittedly ugly, but extremely
  functional and convenient solution. If you are
looking for purity, you are in the wrong boat. Get
    out now before you get hit by a wet cat!" -
                   Rasmus Lerdorf
interface Printer {
   void print(Message message);
}
                                                          class SystemOutPrinter implements Printer {
class Message {
                                                              public void print(Message message) {
    private String message;
                                                                  System.out.println(message);
    public Message(String message) {
                                                              }
       this.message = message;
    }
                                                          }
    public void print(Printer printer) {
                                                          public class HelloWorld {
       printer.print(this);
    }
                                                             public static void main(String[] args) {
                                                                Message message = new Message("Hello,
    public String toString() {
                                                          World!");
       return message;
                                                                AbstractPrinterFactory factory =
    }
                                                          AbstractPrinterFactory.getFactory();
}


                                                                                              m
                                                                Printer printer = factory.getPrinter();



                                                                                             e
                                                                message.print(printer);
abstract class AbstractPrinterFactory {
                                                             }



                                                                      ld
    public static AbstractPrinterFactory getFactory() {


                                                                    r
                                                          }
       return new SystemOutPrinterFactory();


                                                                  o !
    }

    public abstract Printer getPrinter();
                                                                 W A acia
                                                               lo AV rocr
}

class SystemOutPrinterFactory extends

                                                            e l J u
                                                          H
AbstractPrinterFactory {

    public Printer getPrinter() {
                                                                   ab
    }
       return new SystemOutPrinter();
                                                                             e su
}
Quem determina a
qualidade do código é
o programador!
Mito #3 PHP só serve
       para sistemas
           pequenos
T!
                                                                                           E                 os

                                                                                 .N
                                                                                                       a   d
                                                                                                  ic
                                                                                            rí st
                                                                               é        c te oft


                                                               so
                                                                                      ra ros
                                                                                  e ca ic

                                                            Is
                                                                                ad os M
                                                                          b ilid ut
                                                                        ta rod
                                                                  a   es p
                                                              E
P.S.: O orkut foi reescrito em Java, mas esse shot é dos velhos tempos de .NET
Então PHP escala?
Então PHP escala?

        Linguagens de
     programação não
              escalam
Arquiteturas
escalam
Ea
   arquitetura
share-nothing
      do PHP
   simplifica a
escalabilidade
Mito #4 PHP não
  implementa OO
     “de verdade”
    OOP
• PHP5 trouxe:


  • Níveis de visibilidade




                   OOP
  • Exceptions


  • Interfaces


  • Type hinting


  • SPL - Standard PHP Library
• Frameworks MVC


  • Zend Framework




                    OOP
  • Symfony


  • CakePHP


  • Code Igniter


  • Prado, etc...
Mito #5 Não existem
              pacotes
    reutilizáveis e de
   qualidade em PHP
PEAR
Mito #6 Existem poucas
      ferramentas para
   desenvolvimento em
                  PHP
PHPSpec
Mito #7 PHP é inseguro
Free/Open/NetBSD
são seguros?

   MS Windows® é
          seguro?
São todos escritos
principalmente em
        C
A linguagem de
programação não é
             o fator
   determinante na
  segurança de um
            sistema
Mito #8 PHP não está
pronto para aplicações
          “enterprise”
XML
SOAP
REST
E o que podemos
esperar para o futuro?
PHP 5.3
•Namespaces

  Definição                          Uso
                         // diretamente
 namespace YahooNews;
                         $foo = new YahooNewsDir;
 class Dir {
     ...
                         // importando o namespace
 }
                         use YahooNews;
                         $foo = new NewsDir;

                         // renomeando a classe
                         use YahooNewsDir as YND;
                         $foo = new YND;
PHP 5.3
•Lambdas e closures


        $lambda = function () { 
            echo "Hello World!n";
        };
        $lambda();
PHP 5.3
•Lambdas e closures
      function getSomador($x) {
          return function ($y) use ($x) {
              return $x + $y;
          };
      }
      $somador = getSomador(10);

      echo $somador(5); //15
      echo $somador(32); //42
PHP 5.3
•SPL Datastructures

 •LinkedList / DoubleLinkedList
 •Stack
 •Queue / Priority Queue
 •Heap
PHP 5.3
•PHAR - PHP Archive

•Garbage collection

•Late static binding

•Outros refatoramentos e debugs
PHP 6 = PHP 5.3 +
Unicode
Felipe Ribeiro
 felipernb@gmail.com
http://feliperibeiro.com
Referências
•PHP for Grown-ups
 Andrei Zmievski - http://gravitonic.com/talks

•Myths Defused
 Derick Rethans - http://talks.php.net/show/myths-
 ffm2008

•Programming Collective Inteligence - Toby Segaran -
 O’Reilly



                                       http://www.flickr.com/photos/nullalux/2261949240
http://elephpantgettingsome.files.wordpress.com/2008/02/elephpant1web.jpg
http://jjanaya.100webspace.net/wp-content/uploads/2008/08/king-kong-vs-godzilla.jpg
http://www.flickr.com/photos/bobbyuggles/232446009
http://www.flickr.com/photos/emagic/56206868
http://www.flickr.com/photos/andycastro/835453399/
http://www.flickr.com/photos/enigmatic/2901093490/
http://www.flickr.com/photos/kky/704056791/
http://www.flickr.com/photos/mscolly/145052885
http://flickr.com/photos/ripizzo/2310929170/
http://flickr.com/photos/zach_manchester/2302683790/
http://www.flickr.com/photos/docman/6107473
http://www.flickr.com/photos/mamabarns/747588843
http://flickr.com/photos/willpate/63814657/
http://flickr.com/photos/estherase/128983854/
http://www.flickr.com/photos/j_m_c/3406217735/
http://www.flickr.com/photos/oberazzi/318947873
http://www.flickr.com/photos/jaredchapman/482538719
http://www.flickr.com/photos/skeet-skeet/222026728/
http://www.flickr.com/photos/practicalowl/392894653/

Weitere ähnliche Inhalte

Was ist angesagt?

Python: Iteraveis, geradores etc
Python: Iteraveis, geradores etcPython: Iteraveis, geradores etc
Python: Iteraveis, geradores etc
Luciano Ramalho
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em python
Alvaro Oliveira
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução Básica
Christian Perone
 
Super Logo Comandos Para Movimentar A Tartaruga
Super Logo   Comandos Para Movimentar A TartarugaSuper Logo   Comandos Para Movimentar A Tartaruga
Super Logo Comandos Para Movimentar A Tartaruga
Victor Martins
 
Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)
Luciano Ramalho
 
Introdução à linguagem de programação Python
Introdução à linguagem de programação PythonIntrodução à linguagem de programação Python
Introdução à linguagem de programação Python
Carlos Schults
 
Python Pythononcampus Uva 060609
Python Pythononcampus Uva 060609Python Pythononcampus Uva 060609
Python Pythononcampus Uva 060609
gsroma
 
Apresentação python fábio jr alves
Apresentação python   fábio jr alvesApresentação python   fábio jr alves
Apresentação python fábio jr alves
Grupython Ufla
 

Was ist angesagt? (20)

M2ti - Python Brasil
M2ti - Python BrasilM2ti - Python Brasil
M2ti - Python Brasil
 
Iteraveis e geradores em Python
Iteraveis e geradores em PythonIteraveis e geradores em Python
Iteraveis e geradores em Python
 
Python: Iteraveis, geradores etc
Python: Iteraveis, geradores etcPython: Iteraveis, geradores etc
Python: Iteraveis, geradores etc
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em python
 
Introdução à Programação em Python
Introdução à Programação em PythonIntrodução à Programação em Python
Introdução à Programação em Python
 
Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)
 
Programando com Python
Programando com PythonProgramando com Python
Programando com Python
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução Básica
 
Super Logo Comandos Para Movimentar A Tartaruga
Super Logo   Comandos Para Movimentar A TartarugaSuper Logo   Comandos Para Movimentar A Tartaruga
Super Logo Comandos Para Movimentar A Tartaruga
 
Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)
 
Introdução a Linguagem de Programação Python
Introdução a Linguagem de Programação PythonIntrodução a Linguagem de Programação Python
Introdução a Linguagem de Programação Python
 
Iteraveis e geradores
Iteraveis e geradoresIteraveis e geradores
Iteraveis e geradores
 
Introdução à linguagem de programação Python
Introdução à linguagem de programação PythonIntrodução à linguagem de programação Python
Introdução à linguagem de programação Python
 
Estruturas
EstruturasEstruturas
Estruturas
 
Aula c++ estruturas de dados
Aula c++   estruturas de dadosAula c++   estruturas de dados
Aula c++ estruturas de dados
 
Python Pythononcampus Uva 060609
Python Pythononcampus Uva 060609Python Pythononcampus Uva 060609
Python Pythononcampus Uva 060609
 
Python: programação divertida novamente
Python: programação divertida novamentePython: programação divertida novamente
Python: programação divertida novamente
 
Apresentação python fábio jr alves
Apresentação python   fábio jr alvesApresentação python   fábio jr alves
Apresentação python fábio jr alves
 
Por que Python? - PythonBrasil[5] - 2009
Por que Python? - PythonBrasil[5] - 2009Por que Python? - PythonBrasil[5] - 2009
Por que Python? - PythonBrasil[5] - 2009
 
Recursividade
RecursividadeRecursividade
Recursividade
 

Ähnlich wie PHP não é coisa de moleque

Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
apolllorj
 
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
Kratos879
 

Ähnlich wie PHP não é coisa de moleque (20)

PHP não é coisa de moleque
PHP não é coisa de molequePHP não é coisa de moleque
PHP não é coisa de moleque
 
Comandos de Controle de Programa em C
Comandos de Controle de Programa em CComandos de Controle de Programa em C
Comandos de Controle de Programa em C
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao c
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao c
 
Algoritomos aula 3 rafael
Algoritomos aula 3 rafaelAlgoritomos aula 3 rafael
Algoritomos aula 3 rafael
 
Introdução à Linguagem de Programação C
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação C
 
Ud2
Ud2Ud2
Ud2
 
Linguagem C - Controle de Programa
Linguagem C - Controle de ProgramaLinguagem C - Controle de Programa
Linguagem C - Controle de Programa
 
Introdução à Linguagem C
Introdução à Linguagem CIntrodução à Linguagem C
Introdução à Linguagem C
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Sap – stablility and abstract principle
Sap – stablility and abstract principleSap – stablility and abstract principle
Sap – stablility and abstract principle
 
Curso Completo de Linguagem de Programação C
Curso Completo de Linguagem de Programação CCurso Completo de Linguagem de Programação C
Curso Completo de Linguagem de Programação C
 
Calourada2010
Calourada2010Calourada2010
Calourada2010
 
Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2
 
Aula09 traducaosin110
Aula09 traducaosin110Aula09 traducaosin110
Aula09 traducaosin110
 
Introdução a linguagem c karen lowhany
Introdução a linguagem c   karen lowhanyIntrodução a linguagem c   karen lowhany
Introdução a linguagem c karen lowhany
 
Aula 12 funcoes - Programação 1
Aula 12 funcoes - Programação 1Aula 12 funcoes - Programação 1
Aula 12 funcoes - Programação 1
 
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
Apostila C++ Básico - UNIVERSIDADE ESTADUAL PAULISTA “JÚLIO DE MESQUITA FILHO”
 
Apostila c++ básico
Apostila c++ básicoApostila c++ básico
Apostila c++ básico
 
Apostila c++ básico (1)
Apostila c++ básico (1)Apostila c++ básico (1)
Apostila c++ básico (1)
 

Kürzlich hochgeladen

Kürzlich hochgeladen (9)

ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

PHP não é coisa de moleque