Linguagem PythonCaracterí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 thisThe 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ívelsintaxe 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 objetosapesar do self a sintaxe é reduzida
Características FuncionaisLambda: função sem nome
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
Saída
9Lambda.: 27
MAP....: [1, 8, 27, 64, 125]
REDUCE.: 24
Filter.: [3, 4, 5, 6, 7, 8, 9]
Zip....: [(1, 4, 7), (2, 5, 8)]
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 Javaalgumas 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 .NETcom 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
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/
“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/
Red Hat
http://wiki.python.org/moin/OrganizationsUsingPython
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
DreamWorks
“Gostariamos de ter tudo Python, mas ainda temos muito de Perl”.Ed Leonard, Diretor de tecnologia de Animação
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 tecnologiahttp://www.linuxjournal.com/article/9653
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
BlenderBlender 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
Djangowww.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.
Mapeamento Objeto-Relacional. Interface de administração automática. URLs elegantes
Sistema com Templates. Coloca resultados em Cache. Multilíngue
Djangocaracterísticas
http://noticias.terra.com.br/brasil/noticias/0,,OI4072763-EI306,00-Indios+encontram+aviao+da+FAB+e+relatam+que+ha+sobreviventes.html
http://www2.ljworld.com/news/2009/oct/30/alvamar-pro-towner-shoots-71/?sports
Grokgrok.zope.org/
Baseado no framework Zope 3 Orientado a objetos Fácil aprendizado Desenvolvimento ágil Componentes plugáveis
Pylonspylonshq.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/
Web2pyhttp://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
Plonehttp://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
J2EEcomparativo
Railscomparativo
Zope/Plonecomparativo
Turbo Gearscomparativo
Djangocomparativo
Python MobilePyS60
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.htmhttp://wiki.forum.nokia.com/index.php/Category:Pythonhttp://wiki.opensource.nokia.com/projects/PyS60_applications
Python Mobileoutros dispositivos
Ipod IPhone PythonCE
Python 3DopenGL
PyOpenGL• Biblioteca que fornece acesso ao OpenGL.
http://pyopengl.sourceforge.net/ http://glinter.sourceforge.net/http://www.linuxjournal.com/article/4830 http://web.fi.uba.ar/~ssantisi/works/pyopengl_eschers_relativity/
http://www.siafoo.net/snippet/142
Python 3Dvisualização científica
PyGLPlot
http://www.dominik-epple.de/pyglplot/
Python 3D visualização científica
MayaVi
http://mayavi.sf.net/
Python 3Dno Brasil
InVesalius – Reconstrução 3D de imagens médicas
http://www.cti.gov.br/promed/software.htm
Python na GPUPyGPU
É um compilador de Python que permite escrever programas de processamento de imagens para serem executados direto na GPU.
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/
Filtro Sobel
Python e GamesPyGame
Estende a biblioteca SDL.
http://pygame.org/
Greyhawk: Temple of Elemental Evilhttp://www.greyhawkgame.com/
Python e GamesPyglet
Biblioteca baseada em OpenGL.
http://www.pyglet.org/
Delta-Vhttp://www.partiallydisassembled.net/deltav/
Python e GamesPython-Ogre
Trabalha junto à biblioteca Ogre 3D.
http://www.pythonogre.com/
Tibor: Tale of a Kind vampirehttp://tibor.cateia.com/
Legend of Crystal Valleyhttp://locv.cateia.com/
World under Siegehttp://wus.cateia.com/
Python e Gamesjogos 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 PythonBruce 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çãolivros
http://www.amazon.com/
Documentaçãosites
http://www.python.org/doc/
Todos os docs em um único pacote• http://docs.python.org/ftp/python/doc/current/python-2.6.4-docs-
pdf-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-integration-368593 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-programmers-part-i
Top Related