650 likes | 1.11k Views
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.
E N D
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 • Pythonmobile • 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 MontyPython • 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).
Tipagem forte e dinâmica <type 'int'> <type 'str'> <type 'bool'> <type 'list'>
Características Funcionais Saída 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)] Lambda: 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
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. • Garbagecollection (coletor de lixo) • Python: mais pró-ativo, faz a coleta assim que possível. • Enorme biblioteca padrão + pacotes de terceiros.
Python e .NETcom IronPython Trecho de código incompleto. Falta declaração dos outros objetos.
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 […] nossafilosofia é “Python ondepodemos, C++ ondesomosobrigados”. Python não é apenas um pequenopedaçonemmesmousadoapenasparatarefas de script. Se um virus parasse a execução de todocódigo Python, a grandeinfraestruturadescritacomo “A armasecreta 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 é rapidosuficienteparanosso site e permiteproduzir e mantercaracterísticasem tempo recorde, com um mínimo de desenvolvedores”. Cuong Do, Arquiteto de software Google. http://www.python.org/about/quotes/ Youtube (uma das propriedadesmaisvaliosas do Google) é essencialmentetodo Python […]. Alex Martineli, Sistemas de produção Google Inc. http://groups.google.com/group/comp.lang.python/browse_thread/thread/af75a3e91a03ec18/
RedHat A distribuição linuxRedHat 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 papelchaveemnossalinha de produçao. Semele, um projetodo tamanho de Star Wars: Episode II teriasidomuitodificil de ser concluído. Desde a renderizaçãodamultidãoaté o processamentoemlotepara a composição, Python mantemtodas as partes juntas”. Tommy Burnette, DiretorTécnicoSênior. http://www.python.org/about/success/ilm/ http://www.python.org/about/quotes/
Walt Disney “Walt Disney Feature Animation é um grandearmazem de Perl, masalgumasdesvantagens com Perl conduziu o pessoal de desenvolvimento a pesquisaroutrasalternativaspara script. […] Nósestavamostendosproblemas de estabilidade com Perl e nãoestavamosconseguindointegrar Perl com interfaces gráficasem C++ da forma quegostariamos. […] Python forneceua integraçãoqueeugostaria.” 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ívelacessartodasos dados dos objetosemcena. http://www.blender.org/features-gallery/features/ http://www.guiadohardware.net/dicas/blender-python.html
NASA Johnson Space Center usa Python no Sistema de PlanejamentoIntegrado. Esforçosestão a caminhoparadesenvolverumacoleção de ferramentas modular paraajudar no planejamentoda pre-missão de lançamento e tambemparatrocarferramentasantigas. http://wiki.python.org/moin/OrganizationsUsingPython
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.
Django características • Mapeamento Objeto-Relacional. • Interface de administração automática. • URLs elegantes • Sistema com Templates. • Coloca resultados em Cache. • Multilíngue 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: WebHelperse 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 RubyonRails. • 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
PythonMobilePyS60 • 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
PythonMobileoutros dispositivos IpodIPhonePythonCE
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. Filtro Sobel defsobelEdgeDetect(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)returnsqrt(Gx**2 + Gy**2) http://www.cs.lth.se/home/Calle_Lejdfors/pygpu/
Python e GamesPyGame • Estende a biblioteca SDL. Greyhawk: Temple of Elemental Evil http://www.greyhawkgame.com/ http://pygame.org/