2. Python com Baterias Incluídas
Jonh Edson Ribeiro de Carvalho
• Doutorando em Computação pela UFF
• Mestre em Computação pela UFF
• Área: Computação Visual e Interfaces
•Graduado em Física pela UFF
• Professor Universitário desde 2000
• Docente RTI - Universidade Gama Filho
• Tutor à distância CEDERJ
• Pesquisa Atualmente
• Engine de Física para Jogos em GPU
• Reconhecimento de Gestos na GPU em ambientes
multiprojetivos de Realidade Virtual
Jonh Edson Ribeiro de Carvalho
3. Python com Baterias Incluídas
Graal do Desenvolvedor
• Qualidade • Extensibilidade
• Facilidade • Escalabilidade
• Legibilidade • Interoperabilidade
• Portabilidade • Customização
Rapidez no Ciclo de
Desenvolvimento
Jonh Edson Ribeiro de Carvalho
4. Python com Baterias Incluídas
Busca pela Ferramenta Perfeita
http://people.mandriva.com/~prigaux/language-study/diagram.png
Jonh Edson Ribeiro de Carvalho
5. Python com Baterias Incluídas
2010 2009
1 1 Java 17.994% -1.53% A
2 2 C 17.866% +0.65% A
3 3 C++ 9.658% -0.84% A
4 4 PHP 9.180% -0.21% A
5 5 VB 5.413% -3.07% A
6 7 C# 4.986% +0.54% A
7 6 Python 4.223% -0.27% A
8 8 Perl 3.427% -0.60% A
9 19 Objective-C 3.150% +2.54% A
10 11 Delphi 2.428%
http://www.tiobe.com/tpci.htm
Jonh Edson Ribeiro de Carvalho
Jonh Edson Ribeiro de Carvalho
6. Python com Baterias Incluídas
Quando?
• Criada em 1989 pelo holandês Guido
van Rossum no Centrum voor
Wiskunde en Informatica (CWI), em
Amsterdã,Holanda;
• Influenciada pela Linguagem ABC,
que focava em ser uma linguagem de
programação para usuários que não
eram programadores.
Jonh Edson Ribeiro de Carvalho
7. Python com Baterias Incluídas
Ambiente de Concepção
• Universidade - pessoas altamente
especializadas para desenvolver e
opinar sobre os elementos do projeto;
• Descontraído - o nome Python vem
da série de humor
Monty Python’s Flying Circus;
• Sem prazos, Sem pressão -
resultando em maior qualidade.
Jonh Edson Ribeiro de Carvalho
8. Python com Baterias Incluídas
O que é Python?
• Interpretada – facilita a portabilidade
• Interativa – facilita testes,
desenvolvimento rápido, protótipos;
• Orientada a Objetos – números,
strings, funções, instâncias, métodos...
Jonh Edson Ribeiro de Carvalho
9. Python com Baterias Incluídas
O que é Python?
• Fortemente Tipada – não se mistura
tipos automagicamente;
• Tipagem Dinâmica – a tipagem de
objeto é feita em tempo de execução.
Um objeto tem tipo uma variável não.
Jonh Edson Ribeiro de Carvalho
10. Python com Baterias Incluídas
Por que Python?
• Poderosas Estruturas de Dados
Nativas (listas, dicionários (hash
tables), strings, ... otimizados e de
fácil uso;
• Fácil Aprendizagem e Manutenção
• Software Livre - Disponível com
código aberto e sem custo.
Jonh Edson Ribeiro de Carvalho
11. Python com Baterias Incluídas
Por que Python?
• Interoperabilidade com C/C++/Java/
Delphi/Lua/Ruby
• Baterias Incluídas - Extensa
Biblioteca Padrão ( contém diversos
recursos úteis: Interface Gráfica (Tk),
XML, Servidores (TCP,UDP, HTTP, ...),
HTML, protocolos de internet (email,
http,...), xmlrpc, ...
Jonh Edson Ribeiro de Carvalho
12. Python com Baterias Incluídas
Onde?
• Unix: HP-UX, Solaris, Linux
(freqüentemente pré-instalada), ...
• Mac OSX (sempre pré-instalada)
• Windows: 9x, Me, 2K, XP (ctypes,
win32all)
• Nokia Série 60
• PalmOS (Pippy)
Jonh Edson Ribeiro de Carvalho
13. Python com Baterias Incluídas
Como?
• Não existem delimitadores de bloco
=> Identação (indenting)
• Suporta Threads, OO, herança
múltipla e tratamento de exceções
• Compilação implícita de bytecode
• Garbage collection
• Meta-informação e reflexão
computacional
Jonh Edson Ribeiro de Carvalho
Jonh Edson Ribeiro de Carvalho
14. Python com Baterias Incluídas
Interoperabilidade
• CPython - (onde existir um compilador C
ISO/IEC 9899:1990)
• Jython - (máquina virtual Java)
• IronPython - Python for .NET [Brian
Lloyd], (em desenvolvimento na M$)
• PyPy (Python implementado em Python)
• Python for Delphi
• LunaticPython (Lua)
• Nokia – Python for Series 60(S60)
Jonh Edson Ribeiro de Carvalho
15. Python com Baterias Incluídas
Jython • É uma implementação de alto nível
do Python escrito 100% em Java. Isso
permite que você escreva códigos em
Python e os faça rodar dentro de
qualquer JVM (Java Virtual Machine).
• Para instalarmos o Jython é
necessário ter o JSDK, pois o Jython
utiliza o javac para compilar os
programas em Python para Java.
• java jython_21
http : / www. jy thon. org
/
Jonh Edson Ribeiro de Carvalho
16. Python com Baterias Incluídas
Jython • import javax.swing as libswing
• pnumero =
libswing.JOptionPane.showInputDialog("Digite
um Numero Inteiro: ")
• snumero =
libswing.JOptionPane.showInputDialog("Digite
um Numero Inteiro: ")
• soma = int(pnumero) + int(snumero)
• libswing.JOptionPane.showMessageDialog(None,
"A soma eh %d " % soma)
Jonh Edson Ribeiro de Carvalho
17. Python com Baterias Incluídas
Iron import sys
Python sys.path.append(r'C:Python24Lib')
import clr
clr.AddReference("System.Windows.Forms")
from System.Windows.Forms import Application, Form
class HelloWorldForm(Form):
def __init__(self):
self.Text = 'Hello World'
self.Name = 'Hello World'
form = HelloWorldForm()
Application.Run(form)
Jonh Edson Ribeiro de Carvalho
18. Python com Baterias Incluídas
Python • import appuifw, key_codes,
For glcanvas, graphics
• from gles import *
Series ...
S60
• def drawbox(aSizeX, aSizeY,
aSizeZ):
• #Desenha uma caixa com triângulos.
• glScalef( aSizeX, aSizeY, aSizeZ )
• glDrawElementsub( GL_TRIANGLES,
triangles )
Jonh Edson Ribeiro de Carvalho
20. Python com Baterias Incluídas
Casos no Brasil
• Embratel: monitoramento das interfaces de backbone e
clientes de internet, tamb´em existem scripts de uso interno.
• CPqD: monitoramento de centrais telefˆonicas.
• Mandriva: Gerenciamento de pacotes da distribuição Linux e
ferramentas de uso interno.
• Async: desenvolvimento de software de automação comercial
• GPr Sistemas: sistemas como monitoramento de transporte
• terrestre via satélites
• Para Sistemas Web: Varig, Serpro, Câmara,
Interlegis, ...
Jonh Edson Ribeiro de Carvalho
21. Python com Baterias Incluídas
Casos no Mundo
Industrial Light & Magic: automação interna: “Python
plays a key role in our production pipeline. Without it a
project the size of Star Wars: Episode II would have been very
difficult to pull off. From crowd rendering to batch processing
to compositing, Python binds all things together”
NASA: repositório de CAD/CAE/PDM, gerência de modelos,
integração e sistema colaborativo: “We chose Python because
it provides maximum productivity, code that’s clear and easy
to maintain, strong and extensive (and growing!) libraries,
and excellent capabilities for integration with other
applications on any platform.”
Jonh Edson Ribeiro de Carvalho
22. Python com Baterias Incluídas
Casos no Mundo
Apple: ferramenta padrão desde o MacOS X.
Disney: jogos e Sistemas internos de automação e criação,
patrocínio do PyQT.
Bank Boston: sistema Web usando Python e Zope.
Atari: jogos, como “Temple of Elemental Evil”.
Yahoo!: Yahoo! Groups foi escrito inicialmente em puro
python: 180.000 linhas de código cuidavam de tudo, tratando
mais de 200 mensagens/segundo em um simples Pentium
400Mhz.
Nortel: sistemas web “ChartWare”, “WebBook” e
“WebTrack” são exemplos.
Jonh Edson Ribeiro de Carvalho
23. Python com Baterias Incluídas
Casos no Mundo
Philips: automação da linha de semicondutores na fábrica de
Fishkill.
Lawrence Livermore National Laboratories: ambiente
de engenharia numérica.
Red Hat: diversas ferramentas para linux, o instalador das
distribuições Red Hat e Fedora (“Anaconda”).
Gentoo Linux: sistema de gerência de pacotes “Portage”.
Ubuntu: diversas ferramentas, gerêcnia de pacotes, instalador.
Blender3D: software pode ser estendido usando plugins
Python.
Histórias de Sucesso:
• http://www.python.org/about/success/
Jonh Edson Ribeiro de Carvalho
24. Python com Baterias Incluídas
Casos no Mundo: GOOGLE
Maior “case” Python da atualidade:
”Python has been an important part of Google since the
beginning, and remains so as the system grows and evolves.
Today dozens of Google engineers use Python, and we’re
looking for more people with skills in this language.”
— Peter Norvig, director of search quality at Google, Inc.
Jonh Edson Ribeiro de Carvalho
25. Python com Baterias Incluídas
Casos no Mundo: GOOGLE
Sistema de ajuda do GMail
Google Groups
Sistema de compilação de aplicativos
(build system).
Sistema de empacotamento e entrega de dados
(packaging system).
Sistema de monitoramento e manutenção
do cluster
Sistema de testes
Jonh Edson Ribeiro de Carvalho
26. Python com Baterias Incluídas
Casos no Mundo: GOOGLE
• Análise de registros (logs), e análise de falsos
clicks no Sponsored Ads.
• Prototipação
• Recentemente liberando código em
http://code.google.com, como Goopy.
• Requisito para contratar profissionais Java:
saber Python! :-)
Jonh Edson Ribeiro de Carvalho
27. Python com Baterias Incluídas
Opiniões: Bruce Eckel
É o autor de livros de renome, como “Thinking in
Java” e “Thinking in C++”, mas hoje prefere
pensar em Python.
Ele apresentou 10 razões por que ele ama esta
linguagem, Algumas delas:
• Menos Porcaria: Dizem que uma pessoa armazena 7 ± 2
informações ao mesmo tempo, quanto menos porcaria, melhor.
• Produtividade é mais importante que
Performance: otimizar prematuramente é um
grande erro.
Jonh Edson Ribeiro de Carvalho
28. Python com Baterias Incluídas
Opiniões: Bruce Eckel
• Não tem pessoal de marketing envolvido: todas as
decisões da linguagem são com fundamentos técnicos,
vêm de quem usa a linguagem.
• Digite menos, Olhe mais: com Python você
consegue expressar mais com menos, digitando menos,
faz mais rápido, com maior densidade,
consegue analisar mais idéias ao mesmo tempo.
Obtém-se ganho de 5 a 10 vezes.
• Python não fica entre você e o problema;
Os chutes geralmente estão certos: Geralmente é
mais rápido digitar o que você acha correto e rodar o
teste do que procurar na documentação.
Jonh Edson Ribeiro de Carvalho
29. Python com Baterias Incluídas
Computação Gráfica
• Módulos
• PyOpenGL;
• PyGame (SDL);
• CGkit;
• PyODE;
• PyCUDA, PyOpenCL
• PyGPU (Processamento de Imagens na
GPU);
• Visual Python
Jonh Edson Ribeiro de Carvalho
30. Python com Baterias Incluídas
Computação Gráfica
Motor de Jogos
• Blender
• Panda3D
• Ogre3D
• Soya (Engine Jogos)
• Kyra (Engine Jogos)
• Games
•Civilization IV
• Em muitos jogos usado como script
para nteligência Artificial.
Jonh Edson Ribeiro de Carvalho
Jonh Edson Ribeiro de Carvalho
31. Python com Baterias Incluídas
Sucessos em Software Livre
• Gimp
• BrOffice
• BitTorrent
• Gnumeric
• Inkscape
• Scribus
Jonh Edson Ribeiro de Carvalho
Jonh Edson Ribeiro de Carvalho
32. Python com Baterias Incluídas
FrameWorks Web
• Zope / Plone
• Django
• Pylons
• TurboGears
Jonh Edson Ribeiro de Carvalho
33. Python com Baterias Incluídas
Nasa Science(Plone)
Jonh Edson Ribeiro de Carvalho
39. Python com Baterias Incluídas
Ciências e Engenharias
• Ciência: Numarray, Numpy, SciPy,
BioPython, AstroPy, Py2R/SPlus
• Proc. Imagens: PIL, PythonMagick,
Gimp-python, OpenCV, VTK, ITK
• PyScience - http://pyscience-brasil.wikidot.com/
Jonh Edson Ribeiro de Carvalho
Jonh Edson Ribeiro de Carvalho
40. Python com Baterias Incluídas
Estrutura da Linguagem
• LinhaonP owe rCódigo e Indentação
de
• P re se nta ti P oi nt.
• a owe r P oi ntP re se nta ti on.
P = 1
b = 2
if a < b:
print "a é menor "
else :
print "b é menor "
• Maiúsculas e Minúsculas são diferentes!
Jonh Edson Ribeiro de Carvalho
41. Python com Baterias Incluídas
Estrutura da Linguagem
• Literaisowe r P oi nt.
• P re se nta ti onP
•• Strings re se nta ti on.
P owe r P oi ntP
•Convencional: ’texto’ ou "texto"
•Multi-Line: ’’’texto várias linhas’’’ ou """texto várias
linhas"""
•Unicode: u’texto unicode’ ou u"texto", ...
•Raw: r’texto bruton’
•Strings em várias linhas são concatenadas.
• Números parecido com outras linguagens, C,
C++, Java:
•Inteiro: 123 (decimal), 0632 (octal), 0xff00
(hexadecimal)
•Longo: 123L ou 123l
•Ponto Flutuante: 3.14, 10., .12, 1.23e-9
•Complexos: 10.0 + 3j
Jonh Edson Ribeiro de Carvalho
42. Python com Baterias Incluídas
Estrutura da Linguagem
• Tipagem rDinâmica
• P re se nta ti onP owe P oi nt.
• a owe r P oi ntP re se nta ti on.
P = "texto"
a = 123
a = 123.0
a = [ 1 , 2 , 3 ]
b = [ a , "123" , 333 ]
d = { "chave": "valor" , "teste": a , "b" : 12345 }
Jonh Edson Ribeiro de Carvalho
43. Python com Baterias Incluídas
Estrutura da Linguagem
• Controle rdent.Fluxo
• P re se nta ti onP owe P oi
idade = int ( raw_input ( " Idade :" ) )
• P owe r P oi ntP re se nta ti on.
if idade < 2:
print " Bebe "
elif 2 <= idade <= 13:
print " Criançaa "
elif 14 <= idade <= 19:
print " Adolescente "
else :
print " Adulto "
Jonh Edson Ribeiro de Carvalho
44. Python com Baterias Incluídas
Estrutura da Linguagem
• Laços owe r P oi nt.
• P re se nta ti onP
• P owe r fruta se nta ti on.
for P oi ntP re in [ "Banana"
, "Maça" , "Uva" ]:
print " Fruta :" , fruta
d = { "a":1 , "b":2 }
for chave , valor in d. iteritems ():
print "Chave:",chave, ",Valor:",valor
Jonh Edson Ribeiro de Carvalho
45. Python com Baterias Incluídas
Estrutura da Linguagem
• Funções r P oi nt.
• P re se nta ti onP owe
• P owe r fatorial ti on.
def P oi ntP re se nta ( numero ):
if numero <= 1:
return 1
else :
return ( numero * fatorial ( numero - 1 ) )
Jonh Edson Ribeiro de Carvalho
46. Python com Baterias Incluídas
Estrutura da Linguagem
• Classes r P oi nt.
• P re se nta ti onP owe
import datetime
• P owe r P oi ntP re se nta ti on.
class Pessoa ( object ):
def __init__(self,nome,nasc):
self.nome = nome
self.nasc = nasc
def idade( self ):
delta=datetime.date.today()-self.nasc
return delta . days / 365
def __str__( self ):
return ’%s,%d anos’%(self.nome,self .idade())
aluno=Pessoa( ’Aluno Teste’, datetime.date (1972,7,19))
print aluno.idade()
print aluno
Jonh Edson Ribeiro de Carvalho
47. Python com Baterias Incluídas
Estrutura da Linguagem
• Listas
• P re se nta ti onP owe r P oi nt.
• Criação
• P owe r P oi ntP re se nta ti on.
def lista = [ 10 , 2 , 3 , ’texto ’ , 20 ]
• Acesso
print lista [ 2 ] # imprime ’3 ’
• Acesso a pedaço da lista
sub_lista = lista[2:4] # pega de 2 a 4(não incluso)
Outras Operações: Ordenar, Inverter, Contar
Ocorrência de Elemento, etc.
Jonh Edson Ribeiro de Carvalho
48. Python com Baterias Incluídas
Estrutura da Linguagem
• Tuplas oweParecido com as listas, porém é
-
• P re se nta ti onP r P oi nt.
imutável: não se pode acrescentar, apagar ou
• modificar valores.
P owe r P oi ntP re se nta ti on.
>>> tupla = ( 1 , 2 , ’abc ’ )
>>> tupla [ 0 ]
1
>>> tupla [ : 2 ]
(1 , 2)
>>> tupla [ 2 : ]
(’abc ’ ,)
>>> len ( tupla )
3
>>> t = 1 , 2 , 3
>>> t
(1 , 2 , 3)
Jonh Edson Ribeiro de Carvalho
49. Python com Baterias Incluídas
Estrutura da Linguagem
• Mapeamento - Hash Tables
• P re se nta ti onP owe r P oi nt.
• Dicionários
• P owe r P oi ntP re se nta ti on.
>>> d = {’chave’: ’valor ’,’nome’:’Aluno Teste’}
>>> print d[ ’chave ’ ] # imprime ’ v a l o r ’
Jonh Edson Ribeiro de Carvalho
50. Python com Baterias Incluídas
Zen of Python
Bonito é melhor que feio.
Explícito é melhor que implícito.
Simples é melhor que complexo.
Complexo é melhor que complicado.
Plano é melhor que aglomerado.
Esparso é melhor que denso.
Legibilidade faz diferença.
Casos especiais não são especiais o bastante
para quebrar as regras.
Embora a praticidade vença a pureza.
Erros nunca devem passar silenciosamente.
Jonh Edson Ribeiro de Carvalho
51. Python com Baterias Incluídas
Zen of Python
A menos que sejam explicitamente silenciados.
Diante da ambigüidade, recuse a tentação de adivinhar.
Deve haver um -- e preferencialmente só um -- modo óbvio
para fazer algo.
Embora esse modo possa não ser óbvio à primeira vista a
menos que você seja holandês.
Agora é melhor que nunca.
Embora nunca freqüentemente seja melhor que
*exatamente* agora.
Se a implementação é difícil de explicar, é uma má idéia.
Se a implementação é fácil de explicar, pode ser uma boa
idéia.
Jonh Edson Ribeiro de Carvalho
52. Python com Baterias Incluídas
Comunidade Brasileira
•Site: Python Brasil
•www.python.org.br
•Email:
• python-brasil@yahoogrupos.com.br
•IRC:
• irc.freenode.org, canal #python-br
•Congresso:
•www.pythonbrasil.org.br
Jonh Edson Ribeiro de Carvalho