Python - DC

Propaganda
Linguagem Python
Características e Aplicações
Renato Violin
http://www.python.org/
Conteúdo
 Histórico
 Características
 Python e outras
linguagens
 Quem usa Python?
 Python para Web





Python mobile
Python 3D e Games
Interface gráfica
IDE’s
Referências
Histórico
 Criada por Guido Van Rossum em 1991
 Baseado no linguagem ABC
 Projetada inicialmente para o sistema
operacional distribuído Amoeba
 Origem do nome: Grupo de humor Monty
Python
 Código aberto: GPL
 Atualmente (novembro/2009 ) na versão 3.0
Filosofia Python
>>> import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Special cases aren't special enough to break the rules.
There should be one- and preferably only one -obvious way to do it.
[…]
Características da Linguagem
 Legível – Identação obrigatória
 Interpretada – Compila bytecode e interpreta (.pyc, .pyo)
 Multiplataforma – Windows, Linux/Unix, MacOS
 Tipagem forte e dinâmica
 Multiparadigma – Procedural, Funcional e Orientado a
Objetos.
 Usada em várias aplicações: Web, desktop, sistemas
embarcados, sistemas 3D.
 Não há declarações, apenas instruções (ações).
Legível
sintaxe simples e identação obrigatória
Tipagem forte e dinâmica
<type 'int'>
<type 'str'>
<type 'bool'>
<type 'list'>
Estruturas de alto nível
Orientação a objetos
apesar do self a sintaxe é reduzida
Características Funcionais
Saída
Lambda: função sem nome
9
Lambda.:
27
MAP....:
[1, 8, 27, 64, 125]
REDUCE.:
24
Filter.:
[3, 4, 5, 6, 7, 8, 9]
Zip....:
[(1, 4, 7), (2, 5, 8)]
Map: aplica uma função a cada item de uma lista
Reduce: faz um somatório de uma lista
Filter: aplica uma condição em cada item da lista
Zip: agrupa elementos entre listas
Outros Recursos




Testes de Unidades
Threads
Sockets
SPADE – Agente inteligente
Bibliotecas








Persistência de objetos
Banco de dados
Geração de PDFs
Manipulação de imagens
Protocolos de redes
Criptografia
Integração com o S.O
...
http://www.python.org.br/wiki/CookBook
Python conversa com outras
linguagens

C/C++ - Swig

Fortran – PyFort

Java – Jython

.NET – IronPython
Python vs. Java/C++





“Não desperdiça pixels”
Não utiliza { } em blocos, apenas identação.
Não utiliza ( ) em condições if e while.
Em geral utiliza menos pontuação.
Tipos: forte porem dinâmicos.
• nomes não tem tipos, objetos sim.
 Sem declarações, apenas instruções.
Python e Java
algumas semelhanças
 Ambas são compiladas em bytecode.
 Todas as classes herdam de object.
• Em Python: números e funções.
 Semântica uniforme para objeto-referência.
• Não há copia de objetos.
 Garbage collection (coletor de lixo)
• Python: mais pró-ativo, faz a coleta assim que
possível.
 Enorme biblioteca padrão + pacotes de terceiros.
Python e Java
com Jython
Python e Java
comparando: código em Java para fatorial
Python e .NET
com IronPython
Trecho de código incompleto. Falta declaração dos outros objetos.
Quem usa Python
Google
"Python tem sido uma parte importante do Google desde o início, e
permance assim conforme o sistema cresce e evolui. Hoje, dezenas de
engenheiros do Google usam Python, e estamos procurando por mas
pessoas com conhecimento nessa linguagem." disse Peter Norvig, diretor
de qualidade de busca do Google, Inc.
http://www.pythonbrasil.com.br/moin.cgi/PythonNoGoogle
[…] nossa filosofia é “Python onde podemos, C++ onde somos obrigados”.
Python não é apenas um pequeno pedaço nem mesmo usado apenas para
tarefas de script. Se um virus parasse a execução de todo código Python, a
grande infraestrutura descrita como “A arma secreta do Google” pararia.
Alex Martineli, Sistemas de produção Google Inc.
http://groups.google.com/group/comp.lang.python/browse_thread/thread/af75a3e91a03ec18/
Youtube
“Python é rapido suficiente para nosso site e permite produzir e manter
características em tempo recorde, com um mínimo de desenvolvedores”.
Cuong Do, Arquiteto de software Google.
http://www.python.org/about/quotes/
Youtube (uma das propriedades mais valiosas do Google) é essencialmente
todo Python […]. Alex Martineli, Sistemas de produção Google Inc.
http://groups.google.com/group/comp.lang.python/browse_thread/thread/af75a3e91a03ec18/
Red Hat
A distribuição linux Red Hat usa Python no instalador (Anaconda)
e seus utilitários de configuração. A interface gráfica foi desenvolvida
utilizando a biblioteca pyGtk
http://wiki.python.org/moin/OrganizationsUsingPython
DreamWorks
“Gostariamos de ter tudo Python, mas ainda temos muito de Perl”.
Ed Leonard, Diretor de tecnologia de Animação
http://www.linuxjournal.com/article/9653
Nossa equipe tem baseado a transição de Perl para Python na facilidade.
Há três razoes para isso: A criação de bindings para C++ é muito fácil [...],
A natureza orientada a objetos do Python é mais atrativa [...], Python é uma
cidadã de primeira classe na nossa empresa.
Darin Grant, Chefe de produção e tecnologia
http://www.linuxjournal.com/article/9653
Industrial Light and Magic
“Python desempenha um papel chave em nossa linha de produçao.
Sem ele, um projeto do tamanho de Star Wars: Episode II teria sido
muito dificil de ser concluído. Desde a renderização da multidão até o
processamento em lote para a composição, Python mantem todas as
partes juntas”.
Tommy Burnette, Diretor Técnico Sênior.
http://www.python.org/about/success/ilm/
http://www.python.org/about/quotes/
Walt Disney
“Walt Disney Feature Animation é um grande armazem de Perl, mas algumas
desvantagens com Perl conduziu o pessoal de desenvolvimento a pesquisar
outras alternativas para script. […]
Nós estavamos tendos problemas de estabilidade com Perl e não estavamos
conseguindo integrar Perl com interfaces gráficas em C++ da forma que
gostariamos.
[…]
Python forneceu a integração que eu gostaria.”
Brent Burley, Engenheiro de software sênior WDFA
http://www.oreillynet.com/pub/a/oreilly/python/news/disney_0201.html
Blender
Blender utiliza a linguagem Python.
Através dos scripts Python é possível acessar todas os dados dos objetos
em cena.
http://www.blender.org/features-gallery/features/
http://www.guiadohardware.net/dicas/blender-python.html
NASA
Johnson Space Center usa Python no Sistema de Planejamento Integrado.
Esforços estão a caminho para desenvolver uma coleção de ferramentas modular
para ajudar no planejamento da pre-missão de lançamento e tambem para trocar
ferramentas antigas.
http://wiki.python.org/moin/OrganizationsUsingPython
Python para Web
Django
www.djangoproject.com/
 Framework Web de alto nível.
 Segue o padrão MTV – Model Template View.
 Automatiza algumas tarefas do processo de
desenvolvimento.
 Reduz o tempo para construção da aplicação.
 Mantém o desenvolvedor com foco no
negócio.
Django
características
 Mapeamento Objeto-Relacional.
 Interface de administração automática.
 URLs elegantes
http://noticias.terra.com.br/brasil/noticias/0,,OI4072763-EI306,00Indios+encontram+aviao+da+FAB+e+relatam+que+ha+sobreviventes.html
http://www2.ljworld.com/news/2009/oct/30/alvamar-pro-towner-shoots-71/?sports
 Sistema com Templates.
 Coloca resultados em Cache.
 Multilíngue
Grok
grok.zope.org/





Baseado no framework Zope 3
Orientado a objetos
Fácil aprendizado
Desenvolvimento ágil
Componentes plugáveis
Pylons
pylonshq.com






Um dos primeiros a adotar o padrão WSGI.
Permite mapeamento objeto relacional.
Templates.
Helpers: WebHelpers e FormAlchemy.
URLs elegantes.
Padrão MVC.
Turbo Gears
http://www.turbogears.org/





Surgiu em 2005.
Framework Front-to-back.
Padrão MVC.
SQLObject - Mapeamento Objeto-Relacional.
Ferramenta de testes.
 Mais recursos em:
http://www.o3magazine.com/pastissues/issue5/
Web2py
http://mdp.cti.depaul.edu/
 Foi inspirado no Ruby on Rails.
 Inspirando também no Django.
• Mais compacto, mais simples e mais fácil de
aprender.
 Padrão MVC.
 Fácil instalação.
Zope
http://www.zope.org/
 Servidor de aplicações WEB
 United States Navy
• http://www.zope.com/customers/case_studies/navy_ge.html
 IDG Now!
• http://idgnow.uol.com.br/
 Lista completa de aplicações
• http://www.zope.org/Resources/ZSP
Plone
http://plone.org/
 Aplicativo CMS – Content Management
System.
 Baseado no Zope
 SERPRO
• http://www.serpro.gov.br/
Breve comparativo
 Objetivo:
• Construir uma aplicação simples para rastrear a
entrada e o tempo de permanência no site.
 Frameworks:
• J2EE, Rails, Zope/Plone, TurboGears, Django.
Vídeo disponível em:
http://oodt.jpl.nasa.gov/better-web-app.mov
J2EE
comparativo
Rails
comparativo
Zope/Plone
comparativo
Turbo Gears
comparativo
Django
comparativo
Python Mobile
PyS60
 Python para celulares baseado no Symbian.
 Acessa “alguns” recursos do celular:
•
•
•
•
•
•
•
•
•
Recursos gráficos 3D.
Som (texto -> voz)
Câmera, Vídeo.
Bluetooth.
Wireless.
GPS.
Sensor movimento.
TouchScreen
...
http://mobilenin.com/pys60/menu.htm
http://wiki.forum.nokia.com/index.php/Category:Python
http://wiki.opensource.nokia.com/projects/PyS60_applications
Python Mobile
outros dispositivos
Ipod
IPhone
PythonCE
Python 3D
openGL
 PyOpenGL
• Biblioteca que fornece acesso ao OpenGL.
http://pyopengl.sourceforge.net/
http://www.linuxjournal.com/article/4830
http://glinter.sourceforge.net/
http://web.fi.uba.ar/~ssantisi/works/pyopengl_eschers_relativity/
http://www.siafoo.net/snippet/142
Python 3D
visualização científica
 PyGLPlot
http://www.dominik-epple.de/pyglplot/
Python 3D
visualização científica
 MayaVi
http://mayavi.sf.net/
Python 3D
no Brasil
 InVesalius – Reconstrução 3D de imagens médicas
http://www.cti.gov.br/promed/software.htm
Python na GPU
PyGPU
 É um compilador de Python que permite escrever
programas de processamento de imagens para serem
executados direto na GPU.
Filtro Sobel
def sobelEdgeDetect(im=DImage, p=Position):
wX = outerproduct([1,2,1],[-1,0,1])
wY = transpose(wX)
Gx = convolve(wX,im,p)
Gy = convolve(wY,im,p)
return sqrt(Gx**2 + Gy**2)
http://www.cs.lth.se/home/Calle_Lejdfors/pygpu/
Python e Games
PyGame
 Estende a biblioteca SDL.
Greyhawk: Temple of Elemental Evil
http://www.greyhawkgame.com/
http://pygame.org/
Python e Games
Pyglet
 Biblioteca baseada em OpenGL.
Delta-V
http://www.partiallydisassembled.net/deltav/
http://www.pyglet.org/
Python e Games
Python-Ogre
 Trabalha junto à biblioteca Ogre 3D.
Legend of Crystal Valley
World under Siege
Tibor: Tale of a Kind vampire
http://locv.cateia.com/
http://wus.cateia.com/
http://tibor.cateia.com/
http://www.pythonogre.com/
Python e Games
jogos que fazem uso de Python
 BattleField 2 (http://bf2.fun-o-matic.org/index.php/Main_Page)
• Usa python para implementar
o placar do jogo, o team balancing, etc.
 Civilization IV (http://wiki.python.org/moin/OrganizationsUsingPython#Games)
• Usa Python para a IA.
 EVE – Online (http://www.eveonline.com/devblog.asp?a=blog&bid=488)
• Jogo online com 50.000 usuários simultâneos.
Interface Gráfica - GUI’s

Tkinter - Módulo padrão para GUI no Python;

PyGTK - interface para a biblioteca GTK;

PyQT - interface para a biblioteca QT;


wxPython - interface para a biblioteca
wxWidgets;
....
http://wiki.python.org/moin/GuiProgramming
IDE's

Eclipse - plugin PyDev;

PyScripter.

NetBeans – plugin Python.

Visual Studio – plugin IronPython.

Eric3 - código aberto, baseado em QT;

Boa Constructor - código aberto, baseado em wxPython;

Komodo – comercial.

Wingware - comercial.

....
http://www.python.org.br/wiki/IdesPython
Comentários sobre Python
Bruce Eckel
 Produtividade é mais importante que
performance.
 Desordem reduzida.
 Não quero esperar para sempre para ter uma
linguagem completa.
 Não há pessoas do marketing envolvido.
 Eu não tenho que digitar muito.
 Meus pensamentos geralmente estão corretos.
ftp://www.mindview.net/pub/eckel/LovePython.zip
Popularidade do Python
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Documentação
livros
http://www.amazon.com/
Documentação
sites
 http://www.python.org/doc/
 Todos os docs em um único pacote
• http://docs.python.org/ftp/python/doc/current/python-2.6.4-docspdf-letter.zip
 Por onde começar?
• Tutorial Python:
http://www.python.org.br/wiki/DocumentacaoPython?action=AttachFile&do=
get&target=python24.pdf
Conclusão







Fácil aprendizagem
Flexível: Multiplataforma, Multiparadigma
Conversa com outras linguagens
Agiliza o desenvolvimento
É livre (GPL)
Várias bibliotecas
Boa documentação e Livros
Referências
 Thinking Hybrid - Python/C++ Integration
• http://www.slideshare.net/XEmacs/thinking-hybrid-pythonc-integration368593
 Matando o Java e mostrando o Python
• http://www.slideshare.net/osantana/matando-o-java-e-mostrando-o-python/
 Python na prática
• http://www.async.com.br/projects/python/pnp/python.html
 Python 2.5.2 Documentation
• http://docs.python.org
 Dive Into Python
• http://www.diveintopython.org/toc/index.html
 Por que Python?
• http://www.slideshare.net/marcoandre/porque-python-fisl-90/
 Painless Python for proeficient programmers.
• http://sites.google.com/site/io/painless-python-for-proficient-programmerspart-i
Dúvidas
 Contato:
[email protected]
 Apresentação disponível em:
www.dc.ufscar.br/~renato_violin
Download