Linguagem Python Caractersticas e Aplicaes Renato Violin http

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

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?

Conteúdo § Histórico § Características § Python e outras linguagens § Quem usa Python? § Python para Web § § § Python mobile Python 3 D e Games Interface gráfica IDE’s Referências

Histórico § Criada por Guido Van Rossum em 1991 § Baseado no linguagem ABC

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

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 one -obvious way to do it. […]

Características da Linguagem § Legível – Identação obrigatória § Interpretada – Compila bytecode e

Características da Linguagem § Legível – Identação obrigatória § Interpretada – Compila bytecode e interpreta (. pyc, . pyo) § Multiplataforma – Windows, Linux/Unix, Mac. OS § Tipagem forte e dinâmica § Multiparadigma – Procedural, Funcional e Orientado a Objetos. § Usada em várias aplicações: Web, desktop, sistemas embarcados, sistemas 3 D. § Não há declarações, apenas instruções (ações).

Legível sintaxe simples e identação obrigatória

Legível sintaxe simples e identação obrigatória

Tipagem forte e dinâmica <type 'int'> <type 'str'> <type 'bool'> <type 'list'>

Tipagem forte e dinâmica <type 'int'> <type 'str'> <type 'bool'> <type 'list'>

Estruturas de alto nível

Estruturas de alto nível

Orientação a objetos apesar do self a sintaxe é reduzida

Orientação a objetos apesar do self a sintaxe é reduzida

Características Funcionais Saída Lambda: função sem nome 9 Lambda. : 27 Map: aplica uma

Características Funcionais Saída Lambda: função sem nome 9 Lambda. : 27 Map: aplica uma função a cada item de uma lista MAP. . : [1, 8, 27, 64, 125] Reduce: faz um somatório de uma lista REDUCE. : 24 Filter: aplica uma condição em cada item da lista Filter. : [3, 4, 5, 6, 7, 8, 9] Zip: agrupa elementos entre listas Zip. . : [(1, 4, 7), (2, 5, 8)]

Outros Recursos § § Testes de Unidades Threads Sockets SPADE – Agente inteligente

Outros Recursos § § Testes de Unidades Threads Sockets SPADE – Agente inteligente

Bibliotecas § § § § Persistência de objetos Banco de dados Geração de PDFs

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/Cook. Book

Python conversa com outras linguagens C/C++ - Swig Fortran – Py. Fort Java –

Python conversa com outras linguagens C/C++ - Swig Fortran – Py. Fort Java – Jython . NET – Iron. Python

Python vs. Java/C++ § § § “Não desperdiça pixels” Não utiliza { } em

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

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 com Jython

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

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

Python e. NET com Iron. Python Trecho de código incompleto. Falta declaração dos outros

Python e. NET com Iron. Python Trecho de código incompleto. Falta declaração dos outros objetos.

Quem usa Python

Quem usa Python

Google "Python tem sido uma parte importante do Google desde o início, e permance

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/Python. No. Google […] 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/af 75 a 3 e 91 a 03 ec 18/

Youtube “Python é rapido suficiente para nosso site e permite produzir e manter características

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/af 75 a 3 e 91 a 03 ec 18/

Red Hat A distribuição linux Red Hat usa Python no instalador (Anaconda) e seus

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 py. Gtk http: //wiki. python. org/moin/Organizations. Using. Python

Dream. Works “Gostariamos de ter tudo Python, mas ainda temos muito de Perl”. Ed

Dream. Works “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.

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

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 utiliza a linguagem Python. Através dos scripts Python é possível acessar todas os

Blender utiliza a linguagem Python. Através dos scripts Python é possível acessar todas os dados 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

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/Organizations. Using. Python

Python para Web

Python para Web

Django www. djangoproject. com/ § Framework Web de alto nível. § Segue o padrão

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:

Django características § Mapeamento Objeto-Relacional. § Interface de administração automática. § URLs elegantes http: //noticias. terra. com. br/brasil/noticias/0, , OI 4072763 -EI 306, 00 Indios+encontram+aviao+da+FAB+e+relatam+que+ha+sobreviventes. html http: //www 2. 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

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.

Pylons pylonshq. com § § § Um dos primeiros a adotar o padrão WSGI. Permite mapeamento objeto relacional. Templates. Helpers: Web. Helpers e Form. Alchemy. URLs elegantes. Padrão MVC.

Turbo Gears http: //www. turbogears. org/ § § § Surgiu em 2005. Framework Front-to-back.

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. o 3 magazine. com/pastissues/issue 5/

Web 2 py http: //mdp. cti. depaul. edu/ § Foi inspirado no Ruby on

Web 2 py 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

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

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

Breve comparativo § Objetivo: • Construir uma aplicação simples para rastrear a entrada e o tempo de permanência no site. § Frameworks: • J 2 EE, Rails, Zope/Plone, Turbo. Gears, Django. Vídeo disponível em: http: //oodt. jpl. nasa. gov/better-web-app. mov

J 2 EE comparativo

J 2 EE comparativo

Rails comparativo

Rails comparativo

Zope/Plone comparativo

Zope/Plone comparativo

Turbo Gears comparativo

Turbo Gears comparativo

Django comparativo

Django comparativo

Python Mobile Py. S 60 § Python para celulares baseado no Symbian. § Acessa

Python Mobile Py. S 60 § Python para celulares baseado no Symbian. § Acessa “alguns” recursos do celular: • • • Recursos gráficos 3 D. Som (texto -> voz) Câmera, Vídeo. Bluetooth. Wireless. GPS. Sensor movimento. Touch. Screen. . . http: //mobilenin. com/pys 60/menu. htm http: //wiki. forum. nokia. com/index. php/Category: Python http: //wiki. opensource. nokia. com/projects/Py. S 60_applications

Python Mobile outros dispositivos Ipod IPhone Python. CE

Python Mobile outros dispositivos Ipod IPhone Python. CE

Python 3 D open. GL § Py. Open. GL • Biblioteca que fornece acesso

Python 3 D open. GL § Py. Open. GL • Biblioteca que fornece acesso ao Open. GL. 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 3 D visualização científica § Py. GLPlot http: //www. dominik-epple. de/pyglplot/

Python 3 D visualização científica § Py. GLPlot http: //www. dominik-epple. de/pyglplot/

Python 3 D visualização científica § Maya. Vi http: //mayavi. sf. net/

Python 3 D visualização científica § Maya. Vi http: //mayavi. sf. net/

Python 3 D no Brasil § In. Vesalius – Reconstrução 3 D de imagens

Python 3 D no Brasil § In. Vesalius – Reconstrução 3 D de imagens médicas http: //www. cti. gov. br/promed/software. htm

Python na GPU Py. GPU § É um compilador de Python que permite escrever

Python na GPU Py. GPU § É um compilador de Python que permite escrever programas de processamento de imagens para serem executados direto na GPU. Filtro Sobel def sobel. Edge. Detect(im=DImage, p=Position): w. X = outerproduct([1, 2, 1], [-1, 0, 1]) w. Y = transpose(w. X) Gx = convolve(w. X, im, p) Gy = convolve(w. Y, im, p) return sqrt(Gx**2 + Gy**2) http: //www. cs. lth. se/home/Calle_Lejdfors/pygpu/

Python e Games Py. Game § Estende a biblioteca SDL. Greyhawk: Temple of Elemental

Python e Games Py. Game § Estende a biblioteca SDL. Greyhawk: Temple of Elemental Evil http: //www. greyhawkgame. com/ http: //pygame. org/

Python e Games Pyglet § Biblioteca baseada em Open. GL. Delta-V http: //www. partiallydisassembled.

Python e Games Pyglet § Biblioteca baseada em Open. GL. Delta-V http: //www. partiallydisassembled. net/deltav/ http: //www. pyglet. org/

Python e Games Python-Ogre § Trabalha junto à biblioteca Ogre 3 D. Legend of

Python e Games Python-Ogre § Trabalha junto à biblioteca Ogre 3 D. Legend of Crystal Valley http: //locv. cateia. com/ World under Siege http: //wus. cateia. com/ http: //www. pythonogre. com/ Tibor: Tale of a Kind vampire http: //tibor. cateia. com/

Python e Games jogos que fazem uso de Python § Battle. Field 2 (http:

Python e Games jogos que fazem uso de Python § Battle. Field 2 (http: //bf 2. 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/Organizations. Using. Python#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; Py. GTK

Interface Gráfica - GUI’s Tkinter - Módulo padrão para GUI no Python; Py. GTK - interface para a biblioteca GTK; Py. QT - interface para a biblioteca QT; wx. Python - interface para a biblioteca wx. Widgets; . . http: //wiki. python. org/moin/Gui. Programming

IDE's Eclipse - plugin Py. Dev; Py. Scripter. Net. Beans – plugin Python. Visual

IDE's Eclipse - plugin Py. Dev; Py. Scripter. Net. Beans – plugin Python. Visual Studio – plugin Iron. Python. Eric 3 - código aberto, baseado em QT; Boa Constructor - código aberto, baseado em wx. Python; Komodo – comercial. Wingware - comercial. . . http: //www. python. org. br/wiki/Ides. Python

Comentários sobre Python Bruce Eckel § Produtividade é mais importante que performance. § Desordem

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/Love. Python. zip

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

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

Documentação livros http: //www. amazon. com/

Documentação livros http: //www. amazon. com/

Documentação sites § http: //www. python. org/doc/ § Todos os docs em um único

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/Documentacao. Python? action=Attach. File&do =get&target=python 24. pdf

Conclusão § § § § Fácil aprendizagem Flexível: Multiplataforma, Multiparadigma Conversa com outras linguagens

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 §

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-programmerspart-i

Dúvidas § Contato: renatoviolin@gmail. com § Apresentação disponível em: www. dc. ufscar. br/~renato_violin

Dúvidas § Contato: renatoviolin@gmail. com § Apresentação disponível em: www. dc. ufscar. br/~renato_violin