Características e Aplicações Renato Violin

Slides:



Advertisements
Apresentações semelhantes
Webdesigning em 30 minutos Bruno Afonso 2 Setembro 2005 Comunicar Ciência 2005.
Advertisements

Desenvolvimento de Plug-ins Orientado a Testes
[Material apresentado no SBGames2005]
Django Orientando : Eduardo Gobetti
Iniciando na plataforma Eclipse
Engenharia de Software
Criação de Páginas Web Criação de Páginas Web – KompoZer
PRDS - Programa de Residência em Desenvolvimento de Software Laboratório de Engenharia de Software (LES) da PUC-Rio Carlos Lucena
Sistema para Gerenciamento de Redes Baseado em Agentes Móveis
Introdução aos Serviços Web
Sistemas de Gerenciamento de Conteúdo
Alexandre Parra Site: Linguagem Java Alexandre Parra Site:
Área de Desenvolvimento de Sistemas
INTERNET O que é ? História da Internet Internet no Brasil
Introdução a Linguagem JAVA
WebWork e JSP Keven andrade
LINUX.
Curso EFA de técnico de Informática e Sistemas
Conhecendo o Visual Studio.NET
Introdução ao C# e ao visual studio
Camada de Transporte: Portas, Sockets, Aplicações em Rede
Semana 1 Conceitos Básicos e Infra-estrutura
Aplicativos Web Com Orientação a Objetos
Introdução a linguagem Python
A Linguagem de Programação LUA
Linguagem de Programação C#
Introdução ao Desenvolvimento Web
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Introdução ao Framework Django
Programação de SCRIPTS
Ruby Viviane Souza (vess).
Conceitos de J2EE para a WEB
Faculdade de Tecnologia SENAC Pelotas
Cristiano Soares Rafael di Lego Roberto Nemirovsky Thiago Nascimento
Adriano Melo Introdução ao ASP.NET Adriano Melo
Prof. Alexandre Monteiro Recife
Professor: Márcio Amador
02/08/2011 Professor Leomir J. Borba- –
Definição A rigor, tudo o que pode ser armazenado eletronicamente pode ser chamado de software. Consideraremos aqui, como software, apenas os conjuntos.
Aula 1 - Fundamentos Java SE Instituto Metodista Izabela Hendrix Curso de Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Gilmar Medeiros – Agosto/2009.
Luiz Antonio Torres, Maio/2014
Universidade de Mogi das Cruzes Tec
Curso Técnico em Informática Disciplina: Programação Web 2 - PHP
Paradigma funcional.
Paradigmas da Programação – Semestre 1 – Aula 9 Professor: Eduardo Mantovani )
Arquitetura de Desenvolvimento Web MVC vs. Three Tiers
3/4/2015 Prof. Msc George Cabral Bacharelado em Sistema de Informação Ambientes de Desenvolvimento de Software.
Implementação MVC Pedro Antonino.
Aplicações Web com Orientação a Objetos
Tutor Inteligente  Problemas:  Conteúdos para o aprendiz estudar sozinho.  Aprendizes com dificuldades de estudarem e aprenderem sozinhos.  Abandono.
Marcel Pinheiro Caraciolo
José Francisco PHP & MySQL. Os slides originais são parte do material de cursos anteriores do curso de PHP, ministrados por Sérgio Clemente.
PROGRAMAÇÃO WEB AULA 01 Prof. Gustavo Linhares
Padrões de Interação com o Usuário
Unidade 1 – Introdução a J2EE Prof.: Henrique Santos
SQLite Banco de Dados II.
Introdução JAVA Faculdade Mauricio de Nassau
Linguagem de programação. Histórico  Concebida em 1993 por Yukihiro Matsumoto  Primeiro livro em inglês saiu em setembro de 2000  Ruby on Rails é lançado.
Trabalho de Seminários em Informática
Linguagem de Programação JAVA Professora Michelle Nery Nomeclaturas.
Carlos E. V. Matos Fernando L. Caretti. Desenvolvida por Yukihiro Matsumoto, no Japão, início da década de 90. Lançada oficialmente em Multi-plataforma,
ZK RIA com ZK Framework.
1 Baseado em whitepapers/eclipse-overview.pdf Nelson Lago IME/USP 04/2003 A Plataforma Eclipse.
Student Tech Clubs Desenvolvimento WEB Antonio Ladeia Graduando em Tecnologia em Análise e Desenvolvimento de Sistemas Instituto Federal da Bahia Introdução.
Universidade Federal de Sergipe Departamento de Sistemas de Informação Bruno Cruz Jessica Rodrigo Aragão – ASP.NET MVC 3.
ARQUITETURA WEB SERVICE TGM
Desenvolvimento WEB II Ajax – Utilização de Frameworks Javascript Professora: Kelly de Paula Cunha.
1 Projeto Piloto Conclusão em Agenda Projeto Piloto –Descrição –Execução da aplicação –Implementação de requisitos funcionais e não- funcionais.
UNIVERSIDADE CATÓLICA DE PELOTAS CENTRO POLITÉCNICO CURSO DE CIÊNCIA DA COMPUTAÇÃO Redes de Computadores Ferramenta NTop (Network Traffic Probe) Explorador.
Rhizome. Roteiro Definição Metas Características Arquitetura Tecnologias envolvidas Referências.
Transcrição da apresentação:

Características e Aplicações Renato Violin 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 ABC, linguagem utilizada para ensinar programação. Apenas didáticas. Amoeba: ia ser a linguagem script padrão.

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). Propósito geral: script, web, desktop, Forte: existe tipos. Se não existisse seria fracamente tipada

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 C é uma lista. Conjunto não repete os elementos. Permite operações matemáticas sobre conjuntos (união, intersecção etc.) Tupla parecido com lista mas não tem métodos (por isso é estática) e é imutavel (não acrescenta, modifica, apaga valores). Pode estar entre parênteses.

Orientação a objetos apesar do self a sintaxe é reduzida __ atributo privado Não é necessário declarar os atributos. Basta usá-los

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 A função reduce aplica acumuladamente uma função sobre uma lista até que sobre apenas um resultado. Zip forma tuplas tomando os elementos de cada lista na mesma posição.

Outros Recursos Testes de Unidades Threads Sockets SPADE – Agente inteligente A multi-agent system (MAS) is a system composed of several software agents, collectively capable of reaching goals that are difficult to achieve by an individual agent or monolithic system.

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 ... Persistência -> Shelve Banco -> Oracle, MySQL, Postgre Protocolo de redes -> manipular XML, RPC, CGI, SMS 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. Um nome A não tem tipo, quando você inicializar A = 1, ou A = Cliente, ai sim ele tem tipo. Tudo em python é um objeto. Por exemplo, a.__abs__() Porem, melhor utilizar abs(a).

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. Em C/C++: quando você faz A = B, B será copiado em A. Ambos objetos. Em Java/Python: significa que A refere-se ao mesmo objeto que B está referenciando, não há cópia.

Python e Java com Jython

Python e Java comparando: código em Java para fatorial 4 linhas x 13 linhas

Python e .NET com IronPython Mais umas 50 linhas de 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 Gentoo, gerenciador de pacotes “Portage”.

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 Utilizou 1000 desktop linux para renderizar. 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. É um framework web escrito para desenvolvimento em Python que permite o desenvolvimento agil. Model -> Camada de mapeamento objeto relacional. View -> a Lógica de negócio. Controler do MVC Template -> a camada que apresenta os dados. View do MVC. O controler é o próprio sistema.

Django Mapeamento Objeto-Relacional. 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 Esse cache é adicional ao cache do Squid ou do servidor web.

Grok grok.zope.org/ Baseado no framework Zope 3 Orientado a objetos Fácil aprendizado Desenvolvimento ágil Componentes plugáveis Agil: não necessita de editar arquivos de configuração. Programe em Python e crie seus templates em HTML.

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. WSGi: devido à vários frameworks Python, surgiu o padrão para fazer com que um projeto possa rodar em outro framework. Exemplo: Java tem o servlet. Helpers: gera formulários HTML baseado no modelo de objeto dado. Analisa o modelo e cria os inputs.

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/ Front (inclui ferramentas de Javascript) Back (bando de dados)

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. Django: herda as habilidades de criar forms a partir de tabelas do banco e cria validadores. Não precisa instalar, só descompactar.

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 Marinha dos EUA – sistema interno.

Plone http://plone.org/ Aplicativo CMS – Content Management System. Baseado no Zope SERPRO http://www.serpro.gov.br/ Sistema de gerenciamento de conteúdo. Serviço Federal de processamento de dados. Presta serviços de TI para o setor público.

Breve comparativo Objetivo: Frameworks: Construir uma aplicação simples para rastrear a entrada e o tempo de permanência no site. Frameworks: J2EE, Rails, Zope/Plone, TurboGears, Django. Um nome tem 0 ou mais entradas no site. Vídeo disponível em: http://oodt.jpl.nasa.gov/better-web-app.mov

J2EE comparativo Headaches (dor de cabeça) mensagens de erro que não Arquivos e Linhas de código. Interface: escrever manualmente. XML para mapeamento objeto relacional. Docs: excelente.

Rails comparativo Make MySQL tables in SQL Gerar os controlers automaticamente baseado no banco. Gera views automaticamente. Gera paginas para adicionar e editar o conteúdo. Tempo: 13 minutos

Zope/Plone comparativo Criar o banco a partir do model. Cria a interface automaticamente. Usar Tagged values colocar icones na tela, validação dos campos. Zero configuração. Faz autenticação automaticamente. Tempo: 7 minutos.

Turbo Gears comparativo Você Escreve o modelo em Python e ele gera as tabelas MySQL. Você Escreve os controles e os templates para mostrar os dados. Não gera paginas automaticamente. Tempo: 59 minutos.

Django comparativo Escreva o modelo em Python. Ele gera as tabelas. Gera os forms para add e edit. Tempo: 16 minutos.

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. Python é mais lento que C++, porém, muito do trabalho árduo é feito pela engine ou pela biblioteca gráfica. 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 3D visualização científica PyGLPlot Programa de visualização 3D de funções matemáticas. OpenGL e Gimp toolkit. http://www.dominik-epple.de/pyglplot/

Python 3D visualização científica MayaVi Visualizador de dados científicos. Biblioteca gráfica VTK. Escrito em Python http://mayavi.sf.net/

Python 3D no Brasil InVesalius – Reconstrução 3D de imagens médicas Inicio do projeto: 2001, não existia esse tipo de software livre. Biblioteca VTK Desenvolvido por: PROMED (Prototipagem Rápida na Medicina) E cenPRA (Centro de pesquisas do governo federal) 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 Sobel: filtro para detecção de bordas. Convolução: multiplicação de uma matriz pelos pixels 1024x1024 com matriz 3x3 = 27milhoes mult + 24 milhoes add + 3 milhoes div. = 54 milhoes de operações. 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. SDL: Simple DirectMedia Layer. É usada para fazer leitura do teclado, joystick, play audio, etc. Assim permite uma maior multiplataforma. SDL escrito em C. Bastante conhecida pelo port do Civilization para o Linux. Greyhawk: Temple of Elemental Evil http://www.greyhawkgame.com/ http://pygame.org/

Python e Games Pyglet Biblioteca baseada em OpenGL. Delta-V Imagens, sons Windows, MAC, Linux Free Delta-V http://www.partiallydisassembled.net/deltav/ http://www.pyglet.org/

Python e Games Python-Ogre Trabalha junto à biblioteca Ogre 3D. Legend:  Because of PythonOgre, our development and debugging time has decreased dramatically. World: Primeiro escrito em C++, foi convertido para Python utilizando esta biblioteca. Tibor: inspirado no Super Mário. Python é mais lento, porém o trabalho que usa mais CPU é feito pela biblioteca. Então não houve impacto na performance Legend of Crystal Valley http://locv.cateia.com/ World under Siege http://wus.cateia.com/ Tibor: Tale of a Kind vampire 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. Team balancing: vai atualizado a dificuldade do jogo. EVE: numa galáxia a 20.000 anos.

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; .... wxPython usa o sistema GUI do SO. 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. Autor de Thinking in Java e Thinking in C++. Agora ele anda Thinking in Python. Desordem reduzida: Você lê programas mais do que escreve eles (sintaxe reduzida e simples). Caso do C++: algumas características já propostas ainda não foram implementadas. Pensamentos: é mais rápido digitar o que você acha correto do que procurar na documentação. 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-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

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