linguagem python características e aplicações renato violin

62
Linguagem Python Características e Aplicações Renato Violin http://www.python.org/

Upload: internet

Post on 18-Apr-2015

157 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Linguagem Python Características e Aplicações Renato Violin

Linguagem PythonCaracterísticas e Aplicações

Renato Violin

http://www.python.org/

Page 2: Linguagem Python Características e Aplicações Renato Violin

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

Page 3: Linguagem Python Características e Aplicações Renato Violin

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

Page 4: Linguagem Python Características e Aplicações Renato Violin

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.

[…]

Page 5: Linguagem Python Características e Aplicações Renato Violin

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).

Page 6: Linguagem Python Características e Aplicações Renato Violin

Legívelsintaxe simples e identação obrigatória

Page 7: Linguagem Python Características e Aplicações Renato Violin

Tipagem forte e dinâmica

<type 'int'>

<type 'str'>

<type 'bool'>

<type 'list'>

Page 8: Linguagem Python Características e Aplicações Renato Violin

Estruturas de alto nível

Page 9: Linguagem Python Características e Aplicações Renato Violin

Orientação a objetosapesar do self a sintaxe é reduzida

Page 10: Linguagem Python Características e Aplicações Renato Violin

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)]

Page 11: Linguagem Python Características e Aplicações Renato Violin

Outros Recursos

Testes de Unidades Threads Sockets SPADE – Agente inteligente

Page 12: Linguagem Python Características e Aplicações Renato Violin

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

Page 13: Linguagem Python Características e Aplicações Renato Violin

Python conversa com outras linguagens

C/C++ - Swig

Fortran – PyFort

Java – Jython

.NET – IronPython

Page 14: Linguagem Python Características e Aplicações Renato Violin

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.

Page 15: Linguagem Python Características e Aplicações Renato Violin

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.

Page 16: Linguagem Python Características e Aplicações Renato Violin

Python e Java com Jython

Page 17: Linguagem Python Características e Aplicações Renato Violin

Python e Java comparando: código em Java para fatorial

Page 18: Linguagem Python Características e Aplicações Renato Violin

Python e .NETcom IronPython

Trecho de código incompleto. Falta declaração dos outros objetos.

Page 19: Linguagem Python Características e Aplicações Renato Violin

Quem usa Python

Page 20: Linguagem Python Características e Aplicações Renato Violin

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/

Page 21: Linguagem Python Características e Aplicações Renato Violin

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/

Page 22: Linguagem Python Características e Aplicações Renato Violin

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

Page 23: Linguagem Python Características e Aplicações Renato Violin

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

Page 24: Linguagem Python Características e Aplicações Renato Violin

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/

Page 25: Linguagem Python Características e Aplicações Renato Violin

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

Page 26: Linguagem Python Características e Aplicações Renato Violin

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

Page 27: Linguagem Python Características e Aplicações Renato Violin

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

Page 28: Linguagem Python Características e Aplicações Renato Violin

Python para Web

Page 29: Linguagem Python Características e Aplicações Renato Violin

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.

Page 30: Linguagem Python Características e Aplicações Renato Violin

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

Page 31: Linguagem Python Características e Aplicações Renato Violin

Grokgrok.zope.org/

Baseado no framework Zope 3 Orientado a objetos Fácil aprendizado Desenvolvimento ágil Componentes plugáveis

Page 32: Linguagem Python Características e Aplicações Renato Violin

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.

Page 33: Linguagem Python Características e Aplicações Renato Violin

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/

Page 34: Linguagem Python Características e Aplicações Renato Violin

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.

Page 35: Linguagem Python Características e Aplicações Renato Violin

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

Page 36: Linguagem Python Características e Aplicações Renato Violin

Plonehttp://plone.org/

Aplicativo CMS – Content Management System.

Baseado no Zope

SERPRO• http://www.serpro.gov.br/

Page 37: Linguagem Python Características e Aplicações Renato Violin

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

Page 38: Linguagem Python Características e Aplicações Renato Violin

J2EEcomparativo

Page 39: Linguagem Python Características e Aplicações Renato Violin

Railscomparativo

Page 40: Linguagem Python Características e Aplicações Renato Violin

Zope/Plonecomparativo

Page 41: Linguagem Python Características e Aplicações Renato Violin

Turbo Gearscomparativo

Page 42: Linguagem Python Características e Aplicações Renato Violin

Djangocomparativo

Page 43: Linguagem Python Características e Aplicações Renato Violin

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

Page 44: Linguagem Python Características e Aplicações Renato Violin

Python Mobileoutros dispositivos

Ipod IPhone PythonCE

Page 45: Linguagem Python Características e Aplicações Renato Violin

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

Page 46: Linguagem Python Características e Aplicações Renato Violin

Python 3Dvisualização científica

PyGLPlot

http://www.dominik-epple.de/pyglplot/

Page 47: Linguagem Python Características e Aplicações Renato Violin

Python 3D visualização científica

MayaVi

http://mayavi.sf.net/

Page 48: Linguagem Python Características e Aplicações Renato Violin

Python 3Dno Brasil

InVesalius – Reconstrução 3D de imagens médicas

http://www.cti.gov.br/promed/software.htm

Page 49: Linguagem Python Características e Aplicações Renato Violin

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

Page 50: Linguagem Python Características e Aplicações Renato Violin

Python e GamesPyGame

Estende a biblioteca SDL.

http://pygame.org/

Greyhawk: Temple of Elemental Evilhttp://www.greyhawkgame.com/

Page 51: Linguagem Python Características e Aplicações Renato Violin

Python e GamesPyglet

Biblioteca baseada em OpenGL.

http://www.pyglet.org/

Delta-Vhttp://www.partiallydisassembled.net/deltav/

Page 52: Linguagem Python Características e Aplicações Renato Violin

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/

Page 53: Linguagem Python Características e Aplicações Renato Violin

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.

Page 54: Linguagem Python Características e Aplicações Renato Violin

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

Page 55: Linguagem Python Características e Aplicações Renato Violin

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

Page 56: Linguagem Python Características e Aplicações Renato Violin

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

Page 57: Linguagem Python Características e Aplicações Renato Violin

Popularidade do Python

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Page 58: Linguagem Python Características e Aplicações Renato Violin

Documentaçãolivros

http://www.amazon.com/

Page 59: Linguagem Python Características e Aplicações Renato Violin

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

Page 60: Linguagem Python Características e Aplicações Renato Violin

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

Page 61: Linguagem Python Características e Aplicações Renato Violin

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

Page 62: Linguagem Python Características e Aplicações Renato Violin

Dúvidas

Contato:[email protected]

Apresentação disponível em:

www.dc.ufscar.br/~renato_violin