Conhecendo Python e
Por que ele importa?
            Marcel Pinheiro Caraciolo
                     X Encontro do PUG-PE




                                            1
Quem é o palestrante ?
• Marcel Pinheiro Caraciolo - @marcelcaraciolo
 •     Atualmente:       Diretor de Pesquisa e Desenvolvimento (P&D) da Orygens

 •                        Mestrando em ciência da computação pela UFPE

 •     Engenheiro da Computação pela POLI/UPE. (2008)

       Experiência com computação móvel e inteligente:

         •    Blog Mobidéia: (http://www.mobideia.com) - Mobile

         •    Blog A.I. in motion (http://aimotion.blogspot.com) - I.A.

         •    Experiência com Python há mais de 2 anos. (Contribuições em
              frameworks I.A / mobile na comunidade open-source).

     Membro e Moderador do Grupo de Usuários de Python de Pernambuco (PUG-PE)

                                                                       X Encontro do PUG-PE




                                                                                              2
O que é python ?


     ‘Cobra’ em inglês ?

        Sim, também!



                           X Encontro do PUG-PE




                                                  3
O que é python ?
Linguagem criada por Guido van Rossum em 1991
           !
             !"#$%&'$!()*"+,
Nome inspirado no seriado Monty Python
            !   -"+)($!()*"+.

            !   /0)1$2#"3&)454313'$6'7)&3"7$
                348'9$:;<=>$9147$%&'$?@?AA$'$
                B151C

            !   D'E4F404313'$3'$GH34E"

            !   IJG40$12#'+34813"

            !   I1G409'+)'$'>)'+7K5'0$
                6?@?AAL$B151C

            !   M2'+$N"&#G'

            !   -13&#1L$3'73'$<OO<$6<P$         X Encontro do PUG-PE
                1+"7C

                                                                       4
O que é python ?




                   X Encontro do PUG-PE




                                          5
O que é python ?

É fácil




                    X Encontro do PUG-PE




                                           5
Python é simples e legível
Semelhança ao pseudo-código




                              X Encontro do PUG-PE




                                                     6
Hello World Classíco
... ‘hello world’ - Python vs { Java, C, PHP e Pascal }




                                                  X Encontro do PUG-PE




                                                                         7
Hello World Classíco
.... Em Python ....




                      print “Hello World”




                                            X Encontro do PUG-PE




                                                                   8
O que é python ?

É fácil




                    X Encontro do PUG-PE




                                           9
O que é python ?

É fácil

          É poderoso




                       X Encontro do PUG-PE




                                              9
Canivete suíço
Tipagem dinâmica

Biblioteca padrão completa

Multi-paradigma

Multi-plataforma

Facilmente extensível

Free Software (GPL)

                             X Encontro do PUG-PE




                                                    10
...E já vem com acessórios
import urllib2
from BeautifulSoup import BeautifulSoup

url = "http://www.google.com"

request = urllib2.Request(url)
response = urllib2.urlopen(request)
document = response.read()
soup = BeautifulSoup(document)
#normaliza o documento para que o mesmo seja acessível via objetos

links = soup.findAll('a')
# retorna uma lista com todos os links do documento

for link in links:
    print link['href']


                                                        X Encontro do PUG-PE




                                                                               11
...E já vem com acessórios
Persistência de Objetos

Banco de Dados

Geração de Pdfs

Protocolos de Rede

Criptografia

etc.

                          X Encontro do PUG-PE




                                                 12
O que é python ?

É fácil

          É poderoso




                       X Encontro do PUG-PE




                                              13
O que é python ?

É fácil

          É poderoso


                    É divertido

                       X Encontro do PUG-PE




                                              13
Fácil e poderoso!

lista = ['laranja', 'banana', 'uva']
lista.sort()
 
for item in lista:
    print item.capitalize()




                                       X Encontro do PUG-PE




                                                              14
Hun, sei o que é Python!


    ...E agora como eu começo ?




                            X Encontro do PUG-PE




                                                   15
E como eu começo ?!
Interpretador Python disponível para diversas plataformas.




              http://www.python.org/download

                  http://www.python.org/
                                            X Encontro do PUG-PE




                                                                   16
E como eu começo ?!




                  X Encontro do PUG-PE


                                         17
E como eu começo ?!




  Diversos editores com suporte para
     desenvolvimento em Python
                            X Encontro do PUG-PE


                                                   18
E como eu começo ?!




  Diversos editores com suporte para
     desenvolvimento em Python
                            X Encontro do PUG-PE


                                                   18
... e por que Python ?




                         X Encontro do PUG-PE


                                                19
... e por que Python ?


       8 motivos !




                         X Encontro do PUG-PE


                                                19
... e por que Python ?


       1. Python é fácil e divertido




                                X Encontro do PUG-PE


                                                       20
Python é legal!
Com alguns comandos e eu posso copiar, ler e escrever
                    arquivos!

list_of_infiles = [‘file1.txt’, ‘file2.txt’, ‘file3.txt’]
for file in list_of_infiles:
    file = open(file, ‘r’).read().replace(‘;’,’t’)
    out = open(‘fileOut.txt’,‘a’).write(file)
    out.close()
    file.close()




                                                        X Encontro do PUG-PE


                                                                               21
... e por que Python ?



         2. Python é poderoso




                           X Encontro do PUG-PE


                                                  22
Python é multi-paradigma
•    Programação Estruturada

    def partition(list, l, e, g):
        if list == []:
            return (l, e, g)
        else:
            head = list[0]
            if head < e[0]:
                return partition(list[1:], l + [head], e, g)
            elif head > e[0]:
                return partition(list[1:], l, e, g + [head])
            else:
                return partition(list[1:], l, e + [head], g)




                                                         X Encontro do PUG-PE


                                                                                23
Python é multi-paradigma
•   Programação orientada a objetos
    class Quicksort(object):

       def __init__(self,list):
           self.list = list

       def partition(self,list,l, e, g):
           if self.list == []:
               return (l, e, g)
           else:
               head = self.list[0]
               if head < e[0]:
                     return partition(self.list[1:], l + [head], e, g)
               elif head > e[0]:
                     return partition(self.list[1:], l, e, g + [head])
               else:
                     return partition(self.list[1:], l, e + [head], g)




                                                         X Encontro do PUG-PE


                                                                                24
Python é multi-paradigma
•   Programação funcional

def qsort(L):
    if len(L) <= 1: return L
    return qsort( [ lt for lt in L[1:] if lt < L[0] ] ) +    [ L[0] ]         + 
           qsort( [ ge for ge in L[1:] if ge >= L[0] ] )




                                                       X Encontro do PUG-PE


                                                                                    25
Python é multi-paradigma
•   Programação pythônica




               list.sort()




                             X Encontro do PUG-PE


                                                    26
Python é multi-plataforma


 Linux, Unix, Windows, Mac OS...

 Até aqui nada surpreendente, certo ?




                                   X Encontro do PUG-PE


                                                          27
Python é multi-plataforma
•   Python em dispositivos móveis
    •   Python for Symbian (PyS60), PySide (Maemo), ASE (Android)




                                                   X Encontro do PUG-PE


                                                                          28
Python é multi-plataforma

•   PyMT
    •   Python Multi Touch

    •   Especialmente criado para
        ambientes multi-touch




    http://pymt.eu/

                                    X Encontro do PUG-PE


                                                           29
Python é multi-plataforma


•   E até no Iphone!!
    •   Django portado para
        Iphone




           http://www.webmonkey.com/2007/08/running_django_on_the_iphone/

                          http://leepa.github.com/django-iphone-push/

                         http://code.google.com/p/django-mobileadmin/


                                                                            X Encontro do PUG-PE


                                                                                                   30
E tem vários acessórios!




                                       NetworkX
         http://pypi.python.org/pypi




                                       X Encontro do PUG-PE


                                                              31
... e por que Python ?



    3. Python é utilizado ao redor do mundo




                                X Encontro do PUG-PE


                                                       32
Python é utilizado lá fora




                    II Encontro X Encontro do Pernambuco
                                Livre - Recife - PUG-PE



                                                           33
... e aqui no Brasil também!




                     X Encontro do PUG-PE


                                            34
Python entre as 10 + !




     http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
                                                                   X Encontro do PUG-PE


                                                                                          35
Depoimentos sobre Python
Google:
"Python tem tido um papel importante dentro do Google desde o início, e
 continua sendo à medida que nosso sistema cresce e evolui. Hoje vários
 engenheiros do Google usam Python, e nós estamos procurando mais
 pessoas com habilidades nesta linguagem.”
  - Peter Norvig, Diretor de Qualidade de Pesquisa, Google Inc.


Industrial Light & Magic:

“Python desempenha um papel fundamental em nosso esquema de
  produção. Sem ele um projeto do tamanho do filme Star Wars: Episode
  II seria impossível sair do papel. Desde renderização de personagens a
 processamento em lote na composição da trilha, Python integra tudo
 facilmente.”
   - Tommy Burnette, Diretor Técnico Senior, Industrial Light&Magic Inc.

                                                       X Encontro do PUG-PE


                                                                              36
Depoimentos sobre Python
Mameluco - Projeto Social Cats
  “Nós da Mameluco escolhemos Python desde o início do nosso primeiro projeto, o website CATS. [..]
 Conseguimos instalar a plataforma de desenvolvimento, configurá-lo no IDE Eclipse e escrever um ‘Hello
 World’ em questão de minutos. [...] Durante o desenvolvimento do CATS, trabalhei muito com JavaEE em
outro projeto. A dificuldade de configuração, necessidade de ler centenas de páginas e pouca expressividade
  me fizeram abandonar Java como Primeira linguagem. Foi Python mesmo que encontrei a maneira mais
     natural de programar servidores, clientes HTTP e serviços REST.” Flávio Juvenal - CTO - Mameluco

Orygens:
“Escolhemos Python nos nossos projetos por ser uma linguagem madura e de fácil aprendizado e com uma
 comunidade ativa de usuários. Além de atender nossas necessidades, até nosso designer está aprendendo
desenvolver em Python/Django e está achando muito simples. Nós prentendemos usá-lo em vários outros
  projetos da Orygens [...]. Além da simplicação do desenvolvimento web, [...] reduziu a complexidade e
                 tempo em um novo projeto”. Rafael Carício - CTO - http://atepassar.com

Instituto Nokia de Tecnologia:
[...] “Desenvolvemos bindings de Qt(C++) para Python: PySide. Python me chamou atenção por ser usado
na maioria dos projetos open source dos quais sou usuário. Aprender Python foi muito rápido e o código é
 muito agradável de ler.[...] Recomendaria Python a qualquer um, [...] creio que só não recomendaria para
       quem gosta de declarar os tipos e suas variáveis previamente.” Marcelo Lira, Desenvolvedor, INDT

                                                                                  X Encontro do PUG-PE


                                                                                                            37
PyGame e Jogos




   http://www.pygame.org/news.html
                              X Encontro do PUG-PE


                                                     38
Aplicativos Desktop




http://svn.softwarepublico.gov.br/trac/invesalius

                                      X Encontro do PUG-PE


                                                             39
Aplicativos Desktop




      http://www.blender.org/

                                X Encontro do PUG-PE


                                                       40
Aplicativos Desktop




http://www.stoq.com.br/   http://taskcoach.org/


                                    X Encontro do PUG-PE


                                                           41
Aplicativos Desktop




      Python + Qt + Qml
                          X Encontro do PUG-PE


                                                 42
... e por que Python ?



 4. Python é utilizado na web ao redor do mundo




                                X Encontro do PUG-PE


                                                       43
Web lá fora!



   http://pt.reddit.com/
                           http://www.nationalgeographic.com/




                                  http://sourceforge.net/
 http://www.youtube.com/                X Encontro do PUG-PE

                                                                44
Web aqui dentro!




http://www.receita.fazenda.gov.br/                      http://atepassar.com/



 http://www.brasil.gov.br/, http://www.vericia.com/, http://www.dapress.com.br/,
                              http://filmow.com , etc.




                                                              X Encontro do PUG-PE


                                                                                     45
... e por que Python ?



 5. Há empregos para desenvolvedores Python




                               X Encontro do PUG-PE


                                                      46
Por aqui...




              X Encontro do PUG-PE


                                     47
Por aqui...




http://empregos.trovitbrasil.com.br/python, listas de discussão, ...

                                                                       X Encontro do PUG-PE


                                                                                              48
Por lá...




       http://www.python.org/community/jobs/

                                               X Encontro do PUG-PE


                                                                      49
Por lá...
                 Número de ofertas de emprego

                                                        60
       49                     56
                                                        45
                  37
                                                     30

                                          19
                                                    15
     Nov-2010
                Dec-2010                            0
                           Jan-2011
                                      Feb-2011

            http://www.python.org/community/jobs/



                                                    X Encontro do PUG-PE


                                                                           50
Até em casa!




  http://www.freelancer.com/projects/

                                 X Encontro do PUG-PE


                                                        51
... e por que Python ?



   6. Conversa bem com outras linguagens




                               X Encontro do PUG-PE


                                                      52
Python e C/C++
static PyObject *my_callback = NULL;

static PyObject *
my_set_callback(PyObject *dummy, PyObject *args)
{
    PyObject *result = NULL;
    PyObject *temp;

    if (PyArg_ParseTuple(args, "O:set_callback", &temp)) {
        if (!PyCallable_Check(temp)) {
                                                                              Você pode extender
        }
            PyErr_SetString(PyExc_TypeError, "parameter must be callable");
            return NULL;                                                      Python ou usá-lo em
        Py_XINCREF(temp);         /* Add a reference to new callback */
        Py_XDECREF(my_callback); /* Dispose of previous callback */
        my_callback = temp;       /* Remember new callback */
                                                                                códigos C/C++
        /* Boilerplate to return "None" */
        Py_INCREF(Py_None);
        result = Py_None;
    }
    return result;
}




      http://docs.python.org/extending/extending.html

                                                                                 X Encontro do PUG-PE


                                                                                                        53
Python e Java
import javax.swing as sshwing
firstNum = sshwing.JOptionPane.showInputDialog(“Enter an integer:”)
scndNum = sshwing.JOptionPane.showInputDialog(“Enter an integer:”)
sum = int(firstNum) +   int(scndNum)
sshwing.JOptionPane.showMessageDialog(None, “The sum of your integers is %d “        % sum)




                                                               http://www.jython.org/




                                                              X Encontro do PUG-PE


                                                                                              54
Python e .Net
import sys
sys.path.append(r’C:Python25Lib’)
import clr
clr.AddReference(“System.Windows.Forms”)
from System.Windows.Forms import Application,Form
class Hello World(Form):
  def __init__(self):
    self.Text = ʻHello Worldʼ
    self.Name = ʻHello Worldʼ

form = HelloWorld(Form)
Application.Run(Form




                               http://ironpython.net/


                                                        X Encontro do PUG-PE


                                                                               55
Python e muito mais!
        PyMat - Matlab




http://claymore.engineer.gvsu.edu/~steriana/Python/pymat.html      http://rpy.sourceforge.net/




                http://code.google.com/p/pyswip/

                                                                http://appscript.sourceforge.net/

                                                                          X Encontro do PUG-PE


                                                                                                    56
Interpretada, e o desempenho?
                     “Não fique apenas com o conhecimento que você tem do código.”

         Módulos para Python escritos em C. (Extensões): Ex: PyRex

         PyPy: Implementação da linguagem Python em Python (Otimizando a linguagem).
                                                                                                                                       http://pypy.org
      Psyco: Compilador para Python que gera código nativo da máquina (2x - 100x)
                                                                                                                        http://psyco.sourceforge.net/
200

150

100                                                                                                                       Lines of code
                                                                                                                          Time per iteration (ms)
 50

  0
        Sun JDK 1.6.0              C++ 4.13               Python + Psyco Python 2.5.1
              http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/

                                                                                                                     X Encontro do PUG-PE


                                                                                                                                                         57
... e por que Python ?



7. Uma boa linguagem para quem está começando!




                                X Encontro do PUG-PE


                                                       58
Aprendar programar com Python




http://ark4n.wordpress.com/python/                      http://www.aprendendodjango.com/




http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-00Fall-2008/CourseHome/index.htm

                                                                          X Encontro do PUG-PE


                                                                                                      59
Aprendar programar com Python
  Universidade Federal Rural de Pernambuco já adota Python

        Bacharelado em Sistemas de Informação
         Licenciatura em Física
         Licenciatura em Computação


[...] O curso BSI-UFRPE tem como Python a LP oficial do curso! Todas as disciplinas que envolvem programação
    [...], usam Python! Recentemente tenho experimentado usar algo que é fantástico em Python para ensinar a
     programar: Python é híbrida. [...] O resultado desta experiência está sendo organizado em um texto [...], e
 pretendo transformá-lo até o fim do ano em um livro, cujo título provisório é ‘Python como Primeira LP: Uma
           abordagem Imperativa, Funcional e Orientada a Objetos”. Prof. PHD Wilson Rosa - Pesquisador UFRPE




                                                                                  X Encontro do PUG-PE


                                                                                                                   60
... e por que Python ?



8. Uma comunidade forte com que você pode contar!




                                 X Encontro do PUG-PE


                                                        61
24 hrs ao seu dispor!




  http://br.groups.yahoo.com/group/python-brasil/

                                           X Encontro do PUG-PE


                                                                  62
PUG - PE




  Grupo de usuários de Python de
               Pernambuco
http://groups.google.com/group/pug-pe?hl=pt-BR
                                  X Encontro do PUG-PE


                                                         63
Razão bônus!



 9. Permite expor suas idéias de forma rápida!




                                 X Encontro do PUG-PE


                                                        64
TransitoRecife (Web)
Monitorando o trânsito de algumas vias do Recife




                                    X Encontro do PUG-PE


                                                           65
TransitoRecife (Web)
Monitorando o trânsito de algumas vias do Recife




                                    X Encontro do PUG-PE


                                                           65
TransitoRecife (Web)
Monitorando o trânsito de algumas vias do Recife




             http://twitter.com/transitoRE

                                    X Encontro do PUG-PE


                                                           65
TransitoRecife (Web)
Monitorando o trânsito de algumas vias do Recife




             http://twitter.com/transitoRE

                                    X Encontro do PUG-PE


                                                           65
TransitoRecife (Web)
Monitorando o trânsito de algumas vias do Recife




             http://twitter.com/transitoRE
                  Apenas 65 linhas de código!
                                    X Encontro do PUG-PE


                                                           65
TransitoRecife (Celular)
       ... E também via celular!




     TransitoRecife no Nokia E63


                                   66
TransitoRecife (Celular)
       ... E também via celular!




     TransitoRecife no Nokia E63


                                   66
TransitoRecife (Celular)
       ... E também via celular!




     TransitoRecife no Nokia E63


                                   66
TransitoRecife (Celular)
       ... E também via celular!




     TransitoRecife no Nokia E63


                                   66
Referências
http://www.slideshare.net/marcoandre/porque-python-fisl-90 (Marcos André - FISL 9)

http://www.slideshare.net/flavioribeiro/introduo-a-linguagem-de-programao-python-presentation

http://www.python.org/


http://www.pythonbrasil.org.br/

http://ark4n.wordpress.com/python/

E-mails, Listas, Fóruns, conversas no Google Talk, etc.




                                                                   X Encontro do PUG-PE


                                                                                               67
Chegamos ao fim !!




Hora da random.choice([pergunta, dúvida, discussão]) !!


                                       X Encontro do PUG-PE


                                                              68
Conhecendo Python e
Por que ele importa?
      Marcel Pinheiro Caraciolo
     email: caraciol@gmail.com
      twitter: marcelcaraciolo
                                  X Encontro do PUG-PE


                                                         69

Conhencendo Python e por que ela importa?

  • 1.
    Conhecendo Python e Porque ele importa? Marcel Pinheiro Caraciolo X Encontro do PUG-PE 1
  • 2.
    Quem é opalestrante ? • Marcel Pinheiro Caraciolo - @marcelcaraciolo • Atualmente: Diretor de Pesquisa e Desenvolvimento (P&D) da Orygens • Mestrando em ciência da computação pela UFPE • Engenheiro da Computação pela POLI/UPE. (2008) Experiência com computação móvel e inteligente: • Blog Mobidéia: (http://www.mobideia.com) - Mobile • Blog A.I. in motion (http://aimotion.blogspot.com) - I.A. • Experiência com Python há mais de 2 anos. (Contribuições em frameworks I.A / mobile na comunidade open-source). Membro e Moderador do Grupo de Usuários de Python de Pernambuco (PUG-PE) X Encontro do PUG-PE 2
  • 3.
    O que épython ? ‘Cobra’ em inglês ? Sim, também! X Encontro do PUG-PE 3
  • 4.
    O que épython ? Linguagem criada por Guido van Rossum em 1991 ! !"#$%&'$!()*"+, Nome inspirado no seriado Monty Python ! -"+)($!()*"+. ! /0)1$2#"3&)454313'$6'7)&3"7$ 348'9$:;<=>$9147$%&'$?@?AA$'$ B151C ! D'E4F404313'$3'$GH34E" ! IJG40$12#'+34813" ! I1G409'+)'$'>)'+7K5'0$ 6?@?AAL$B151C ! M2'+$N"&#G' ! -13&#1L$3'73'$<OO<$6<P$ X Encontro do PUG-PE 1+"7C 4
  • 5.
    O que épython ? X Encontro do PUG-PE 5
  • 6.
    O que épython ? É fácil X Encontro do PUG-PE 5
  • 7.
    Python é simplese legível Semelhança ao pseudo-código X Encontro do PUG-PE 6
  • 8.
    Hello World Classíco ...‘hello world’ - Python vs { Java, C, PHP e Pascal } X Encontro do PUG-PE 7
  • 9.
    Hello World Classíco ....Em Python .... print “Hello World” X Encontro do PUG-PE 8
  • 10.
    O que épython ? É fácil X Encontro do PUG-PE 9
  • 11.
    O que épython ? É fácil É poderoso X Encontro do PUG-PE 9
  • 12.
    Canivete suíço Tipagem dinâmica Bibliotecapadrão completa Multi-paradigma Multi-plataforma Facilmente extensível Free Software (GPL) X Encontro do PUG-PE 10
  • 13.
    ...E já vemcom acessórios import urllib2 from BeautifulSoup import BeautifulSoup url = "http://www.google.com" request = urllib2.Request(url) response = urllib2.urlopen(request) document = response.read() soup = BeautifulSoup(document) #normaliza o documento para que o mesmo seja acessível via objetos links = soup.findAll('a') # retorna uma lista com todos os links do documento for link in links: print link['href'] X Encontro do PUG-PE 11
  • 14.
    ...E já vemcom acessórios Persistência de Objetos Banco de Dados Geração de Pdfs Protocolos de Rede Criptografia etc. X Encontro do PUG-PE 12
  • 15.
    O que épython ? É fácil É poderoso X Encontro do PUG-PE 13
  • 16.
    O que épython ? É fácil É poderoso É divertido X Encontro do PUG-PE 13
  • 17.
  • 18.
    Hun, sei oque é Python! ...E agora como eu começo ? X Encontro do PUG-PE 15
  • 19.
    E como eucomeço ?! Interpretador Python disponível para diversas plataformas. http://www.python.org/download http://www.python.org/ X Encontro do PUG-PE 16
  • 20.
    E como eucomeço ?! X Encontro do PUG-PE 17
  • 21.
    E como eucomeço ?! Diversos editores com suporte para desenvolvimento em Python X Encontro do PUG-PE 18
  • 22.
    E como eucomeço ?! Diversos editores com suporte para desenvolvimento em Python X Encontro do PUG-PE 18
  • 23.
    ... e porque Python ? X Encontro do PUG-PE 19
  • 24.
    ... e porque Python ? 8 motivos ! X Encontro do PUG-PE 19
  • 25.
    ... e porque Python ? 1. Python é fácil e divertido X Encontro do PUG-PE 20
  • 26.
    Python é legal! Comalguns comandos e eu posso copiar, ler e escrever arquivos! list_of_infiles = [‘file1.txt’, ‘file2.txt’, ‘file3.txt’] for file in list_of_infiles: file = open(file, ‘r’).read().replace(‘;’,’t’) out = open(‘fileOut.txt’,‘a’).write(file) out.close() file.close() X Encontro do PUG-PE 21
  • 27.
    ... e porque Python ? 2. Python é poderoso X Encontro do PUG-PE 22
  • 28.
    Python é multi-paradigma • Programação Estruturada def partition(list, l, e, g): if list == []: return (l, e, g) else: head = list[0] if head < e[0]: return partition(list[1:], l + [head], e, g) elif head > e[0]: return partition(list[1:], l, e, g + [head]) else: return partition(list[1:], l, e + [head], g) X Encontro do PUG-PE 23
  • 29.
    Python é multi-paradigma • Programação orientada a objetos class Quicksort(object): def __init__(self,list): self.list = list def partition(self,list,l, e, g): if self.list == []: return (l, e, g) else: head = self.list[0] if head < e[0]: return partition(self.list[1:], l + [head], e, g) elif head > e[0]: return partition(self.list[1:], l, e, g + [head]) else: return partition(self.list[1:], l, e + [head], g) X Encontro do PUG-PE 24
  • 30.
    Python é multi-paradigma • Programação funcional def qsort(L): if len(L) <= 1: return L return qsort( [ lt for lt in L[1:] if lt < L[0] ] ) + [ L[0] ] + qsort( [ ge for ge in L[1:] if ge >= L[0] ] ) X Encontro do PUG-PE 25
  • 31.
    Python é multi-paradigma • Programação pythônica list.sort() X Encontro do PUG-PE 26
  • 32.
    Python é multi-plataforma Linux, Unix, Windows, Mac OS... Até aqui nada surpreendente, certo ? X Encontro do PUG-PE 27
  • 33.
    Python é multi-plataforma • Python em dispositivos móveis • Python for Symbian (PyS60), PySide (Maemo), ASE (Android) X Encontro do PUG-PE 28
  • 34.
    Python é multi-plataforma • PyMT • Python Multi Touch • Especialmente criado para ambientes multi-touch http://pymt.eu/ X Encontro do PUG-PE 29
  • 35.
    Python é multi-plataforma • E até no Iphone!! • Django portado para Iphone http://www.webmonkey.com/2007/08/running_django_on_the_iphone/ http://leepa.github.com/django-iphone-push/ http://code.google.com/p/django-mobileadmin/ X Encontro do PUG-PE 30
  • 36.
    E tem váriosacessórios! NetworkX http://pypi.python.org/pypi X Encontro do PUG-PE 31
  • 37.
    ... e porque Python ? 3. Python é utilizado ao redor do mundo X Encontro do PUG-PE 32
  • 38.
    Python é utilizadolá fora II Encontro X Encontro do Pernambuco Livre - Recife - PUG-PE 33
  • 39.
    ... e aquino Brasil também! X Encontro do PUG-PE 34
  • 40.
    Python entre as10 + ! http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html X Encontro do PUG-PE 35
  • 41.
    Depoimentos sobre Python Google: "Pythontem tido um papel importante dentro do Google desde o início, e continua sendo à medida que nosso sistema cresce e evolui. Hoje vários engenheiros do Google usam Python, e nós estamos procurando mais pessoas com habilidades nesta linguagem.” - Peter Norvig, Diretor de Qualidade de Pesquisa, Google Inc. Industrial Light & Magic: “Python desempenha um papel fundamental em nosso esquema de produção. Sem ele um projeto do tamanho do filme Star Wars: Episode II seria impossível sair do papel. Desde renderização de personagens a processamento em lote na composição da trilha, Python integra tudo facilmente.” - Tommy Burnette, Diretor Técnico Senior, Industrial Light&Magic Inc. X Encontro do PUG-PE 36
  • 42.
    Depoimentos sobre Python Mameluco- Projeto Social Cats “Nós da Mameluco escolhemos Python desde o início do nosso primeiro projeto, o website CATS. [..] Conseguimos instalar a plataforma de desenvolvimento, configurá-lo no IDE Eclipse e escrever um ‘Hello World’ em questão de minutos. [...] Durante o desenvolvimento do CATS, trabalhei muito com JavaEE em outro projeto. A dificuldade de configuração, necessidade de ler centenas de páginas e pouca expressividade me fizeram abandonar Java como Primeira linguagem. Foi Python mesmo que encontrei a maneira mais natural de programar servidores, clientes HTTP e serviços REST.” Flávio Juvenal - CTO - Mameluco Orygens: “Escolhemos Python nos nossos projetos por ser uma linguagem madura e de fácil aprendizado e com uma comunidade ativa de usuários. Além de atender nossas necessidades, até nosso designer está aprendendo desenvolver em Python/Django e está achando muito simples. Nós prentendemos usá-lo em vários outros projetos da Orygens [...]. Além da simplicação do desenvolvimento web, [...] reduziu a complexidade e tempo em um novo projeto”. Rafael Carício - CTO - http://atepassar.com Instituto Nokia de Tecnologia: [...] “Desenvolvemos bindings de Qt(C++) para Python: PySide. Python me chamou atenção por ser usado na maioria dos projetos open source dos quais sou usuário. Aprender Python foi muito rápido e o código é muito agradável de ler.[...] Recomendaria Python a qualquer um, [...] creio que só não recomendaria para quem gosta de declarar os tipos e suas variáveis previamente.” Marcelo Lira, Desenvolvedor, INDT X Encontro do PUG-PE 37
  • 43.
    PyGame e Jogos http://www.pygame.org/news.html X Encontro do PUG-PE 38
  • 44.
  • 45.
    Aplicativos Desktop http://www.blender.org/ X Encontro do PUG-PE 40
  • 46.
    Aplicativos Desktop http://www.stoq.com.br/ http://taskcoach.org/ X Encontro do PUG-PE 41
  • 47.
    Aplicativos Desktop Python + Qt + Qml X Encontro do PUG-PE 42
  • 48.
    ... e porque Python ? 4. Python é utilizado na web ao redor do mundo X Encontro do PUG-PE 43
  • 49.
    Web lá fora! http://pt.reddit.com/ http://www.nationalgeographic.com/ http://sourceforge.net/ http://www.youtube.com/ X Encontro do PUG-PE 44
  • 50.
    Web aqui dentro! http://www.receita.fazenda.gov.br/ http://atepassar.com/ http://www.brasil.gov.br/, http://www.vericia.com/, http://www.dapress.com.br/, http://filmow.com , etc. X Encontro do PUG-PE 45
  • 51.
    ... e porque Python ? 5. Há empregos para desenvolvedores Python X Encontro do PUG-PE 46
  • 52.
    Por aqui... X Encontro do PUG-PE 47
  • 53.
    Por aqui... http://empregos.trovitbrasil.com.br/python, listasde discussão, ... X Encontro do PUG-PE 48
  • 54.
    Por lá... http://www.python.org/community/jobs/ X Encontro do PUG-PE 49
  • 55.
    Por lá... Número de ofertas de emprego 60 49 56 45 37 30 19 15 Nov-2010 Dec-2010 0 Jan-2011 Feb-2011 http://www.python.org/community/jobs/ X Encontro do PUG-PE 50
  • 56.
    Até em casa! http://www.freelancer.com/projects/ X Encontro do PUG-PE 51
  • 57.
    ... e porque Python ? 6. Conversa bem com outras linguagens X Encontro do PUG-PE 52
  • 58.
    Python e C/C++ staticPyObject *my_callback = NULL; static PyObject * my_set_callback(PyObject *dummy, PyObject *args) { PyObject *result = NULL; PyObject *temp; if (PyArg_ParseTuple(args, "O:set_callback", &temp)) { if (!PyCallable_Check(temp)) { Você pode extender } PyErr_SetString(PyExc_TypeError, "parameter must be callable"); return NULL; Python ou usá-lo em Py_XINCREF(temp); /* Add a reference to new callback */ Py_XDECREF(my_callback); /* Dispose of previous callback */ my_callback = temp; /* Remember new callback */ códigos C/C++ /* Boilerplate to return "None" */ Py_INCREF(Py_None); result = Py_None; } return result; } http://docs.python.org/extending/extending.html X Encontro do PUG-PE 53
  • 59.
    Python e Java importjavax.swing as sshwing firstNum = sshwing.JOptionPane.showInputDialog(“Enter an integer:”) scndNum = sshwing.JOptionPane.showInputDialog(“Enter an integer:”) sum = int(firstNum) +   int(scndNum) sshwing.JOptionPane.showMessageDialog(None, “The sum of your integers is %d “ % sum) http://www.jython.org/ X Encontro do PUG-PE 54
  • 60.
    Python e .Net importsys sys.path.append(r’C:Python25Lib’) import clr clr.AddReference(“System.Windows.Forms”) from System.Windows.Forms import Application,Form class Hello World(Form): def __init__(self): self.Text = ʻHello Worldʼ self.Name = ʻHello Worldʼ form = HelloWorld(Form) Application.Run(Form http://ironpython.net/ X Encontro do PUG-PE 55
  • 61.
    Python e muitomais! PyMat - Matlab http://claymore.engineer.gvsu.edu/~steriana/Python/pymat.html http://rpy.sourceforge.net/ http://code.google.com/p/pyswip/ http://appscript.sourceforge.net/ X Encontro do PUG-PE 56
  • 62.
    Interpretada, e odesempenho? “Não fique apenas com o conhecimento que você tem do código.” Módulos para Python escritos em C. (Extensões): Ex: PyRex PyPy: Implementação da linguagem Python em Python (Otimizando a linguagem). http://pypy.org Psyco: Compilador para Python que gera código nativo da máquina (2x - 100x) http://psyco.sourceforge.net/ 200 150 100 Lines of code Time per iteration (ms) 50 0 Sun JDK 1.6.0 C++ 4.13 Python + Psyco Python 2.5.1 http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/ X Encontro do PUG-PE 57
  • 63.
    ... e porque Python ? 7. Uma boa linguagem para quem está começando! X Encontro do PUG-PE 58
  • 64.
    Aprendar programar comPython http://ark4n.wordpress.com/python/ http://www.aprendendodjango.com/ http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-00Fall-2008/CourseHome/index.htm X Encontro do PUG-PE 59
  • 65.
    Aprendar programar comPython Universidade Federal Rural de Pernambuco já adota Python Bacharelado em Sistemas de Informação Licenciatura em Física Licenciatura em Computação [...] O curso BSI-UFRPE tem como Python a LP oficial do curso! Todas as disciplinas que envolvem programação [...], usam Python! Recentemente tenho experimentado usar algo que é fantástico em Python para ensinar a programar: Python é híbrida. [...] O resultado desta experiência está sendo organizado em um texto [...], e pretendo transformá-lo até o fim do ano em um livro, cujo título provisório é ‘Python como Primeira LP: Uma abordagem Imperativa, Funcional e Orientada a Objetos”. Prof. PHD Wilson Rosa - Pesquisador UFRPE X Encontro do PUG-PE 60
  • 66.
    ... e porque Python ? 8. Uma comunidade forte com que você pode contar! X Encontro do PUG-PE 61
  • 67.
    24 hrs aoseu dispor! http://br.groups.yahoo.com/group/python-brasil/ X Encontro do PUG-PE 62
  • 68.
    PUG - PE Grupo de usuários de Python de Pernambuco http://groups.google.com/group/pug-pe?hl=pt-BR X Encontro do PUG-PE 63
  • 69.
    Razão bônus! 9.Permite expor suas idéias de forma rápida! X Encontro do PUG-PE 64
  • 70.
    TransitoRecife (Web) Monitorando otrânsito de algumas vias do Recife X Encontro do PUG-PE 65
  • 71.
    TransitoRecife (Web) Monitorando otrânsito de algumas vias do Recife X Encontro do PUG-PE 65
  • 72.
    TransitoRecife (Web) Monitorando otrânsito de algumas vias do Recife http://twitter.com/transitoRE X Encontro do PUG-PE 65
  • 73.
    TransitoRecife (Web) Monitorando otrânsito de algumas vias do Recife http://twitter.com/transitoRE X Encontro do PUG-PE 65
  • 74.
    TransitoRecife (Web) Monitorando otrânsito de algumas vias do Recife http://twitter.com/transitoRE Apenas 65 linhas de código! X Encontro do PUG-PE 65
  • 75.
    TransitoRecife (Celular) ... E também via celular! TransitoRecife no Nokia E63 66
  • 76.
    TransitoRecife (Celular) ... E também via celular! TransitoRecife no Nokia E63 66
  • 77.
    TransitoRecife (Celular) ... E também via celular! TransitoRecife no Nokia E63 66
  • 78.
    TransitoRecife (Celular) ... E também via celular! TransitoRecife no Nokia E63 66
  • 79.
    Referências http://www.slideshare.net/marcoandre/porque-python-fisl-90 (Marcos André- FISL 9) http://www.slideshare.net/flavioribeiro/introduo-a-linguagem-de-programao-python-presentation http://www.python.org/ http://www.pythonbrasil.org.br/ http://ark4n.wordpress.com/python/ E-mails, Listas, Fóruns, conversas no Google Talk, etc. X Encontro do PUG-PE 67
  • 80.
    Chegamos ao fim!! Hora da random.choice([pergunta, dúvida, discussão]) !! X Encontro do PUG-PE 68
  • 81.
    Conhecendo Python e Porque ele importa? Marcel Pinheiro Caraciolo email: caraciol@gmail.com twitter: marcelcaraciolo X Encontro do PUG-PE 69