Python na Ciência da Computação - FLISOL 2011

Post on 19-May-2015

1.128 views 6 download

Transcript of Python na Ciência da Computação - FLISOL 2011

Uso de Python em cursos de Ciencia daComputacao

Estruturas, bibliotecas e ferramentas

Marco Andre Lopes Mendes <marcoandre@gmail.com>

9 de abril de 2011

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao

ApresentacaoQuem e esse cara?

1 Mestre em Ciencia da Computacao pela UFSC

2 Professor desde 1995

1 Usuario Unix desde 1992 e Linux desde 1999

2 Entusiasta de software de codigo aberto

1 Membro da comunidade Python desde 2004

2 Membro-fundador da Associacao Python Brasil (APyB)

3 Membro da diretoria da APyB

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao

Uma breve introducaoSobre a linguagem

1 Criada por Guido van Rossum em 1991

2 Origem do nome: grupo de humoristasMonty Python

3 Linguagem de altıssimo nıvel (VHLL)

4 Sintaxe de facil leitura

5 Orientada a objetos, estruturada e funcional

6 Tipagem forte e dinamica

7 Multiplataforma

8 Interpretada

9 Ambiente interativo

10 Licenca compatıvel com a GPL

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao

Estruturas de dados nativas

1 Strings

2 Listas

3 Tuplas

4 Dicionarios

5 Sets

6 Frozensets

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao

NumPyMatematica

1 Poderoso array N-dimensional de objetos

2 integracao com codigo C/C++ e Fortran

3 funcoes de algebra linear, transformada de Fourier e numerosaleatorios

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao

SciPyMatematica

1 Utiliza como base o NumPy para lidar eficientemente comgrandes quantidades de numeros

2 Implementa: Estatısticas, otimizacao, integracao numerica,processamento de sinais e imagens, solucao de equacoesdiferenciais, funcoes especiais (Bessel, etc.), polinomios, etc.

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao

SageMatematica

1 Aplicativo de matematica GPL

2 Combina o poder de muitos pacotes de codigo abertoexistentes em uma interface Python comum

3 Missao: Criar uma alternativa livre e de codigo aberto paraMagma, Maple, Mathematica e Matlab.

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao

PyODEComputacao Grafica

1 PyODE e um binding de ODE para Python

2 ODE: simulacao de dinamica de objetos rıgidos

3 Juncoes e deteccao de colisao com friccao

4 Simulacao de veıculos, objetos e criaturas em ambientesvirtuais

5 Jogos de computador, ferramentas de autoria 3D e desimulacao

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao

PyOpenGLComputacao Grafica

1 PyOpenGL: binding de OpenGL para Python

2 OpenGL: API livre utilizada na computacao grafica

3 Desenvolvimento de aplicativos graficos, ambientes 3D, jogos,entre outros

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao

PIL - Python Image LibraryProcessamento de Imagens

1 suporte a abertura e gravacao de muitos formatos de imagemdiferentes

2 formatos suportados: PNG, TIFF, BMP, EPS e GIF

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao

PyGletComputacao Grafica, animacao e jogos

1 Desenvolvimento de jogos e aplicacoes visualmente ricas

2 Suporte para eventos de mouse e teclado

3 Pode carregar diversos formatos de arquivos de multimıdia

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao

Cocos 2DAnimacao e jogos

1 Framework para a construcao de jogos, demos e outrasaplicacoes graficas e interativas em 2D

2 Utiliza PyGlet e OpenGL

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao

PyGameAnimacao e jogos

1 Modulo multi-plataforma projetado para escrever jogos.

2 Inclui bibliotecas de computacao grafica de som.

3 E construıda sobre a biblioteca SDL (Simple DirectMediaLayer)

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao

Panda 3DAnimacao e jogos

1 Motor de jogo 3D escrito em C++ para ser usado com Python

2 Desenvolvido pela Disney e Carnegie Mellon University’sEntertainment Technology Center

3 Possui motor de fısica, texturas animadas, suporte a shaders esom 2D e 3D

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao

AIMAInteligencia Artificial

1 Codigo em Python dos algoritmos do livro ArtificialIntelligence: a Modern Approach, de Peter Norvig

2 O livro-texto apresenta os algoritmos em pseudo-codigo

3 Existem os codigos em Lisp tambem, para comparacao

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao

PeachInteligencia Artificial

1 Modulo escrito puramente em Python, baseado nas bibliotecascientıficas SciPy e NumPy

2 Implementacao de algoritmos de inteligencia computacional eaprendizado de maquina

3 Redes neurais artificiais, logica fuzzy, algoritmos geneticos,inteligencia de enxames e muito mais

4 Objetivo primariamente educacional

5 Cuidado com a eficiencia na implementacao

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao

Compiladores

1 PLY: Python Lex-Yacc

2 PyParsing

3 Parsing: Python parser generator module

4 ANTLR: ANother Tool for Language Recognition

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao

PyDot e GraphvizGrafos

1 pydot e uma interface da linguagem de pontos Graphviz’spara Python

2 Permite a criacao facil de grafos dirigidos e nao dirigidos

3 Grafos abstratos e redes podem ser criados automaticamente

4 Desenvolvido pelos laboratorios de pesquisa da AT&T

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao

NetworkXGrafos

1 Criacao, manipulacao e estudo da estrutura, dinamica efuncoes das redes complexas

2 Adequado para operacao em grandes graficos reais (p.e. maisde 10 milhoes de nos e 100 milhoes de bordas)

3 Utiliza dicionarios de dicionarios de Python como estrutura

4 Pode ser usado para analises de redes e de redes sociais

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao

PyMetricGrafos

1 Simulacao interativa de rede e ferramenta devisualizacao

2 Traca caminhos dado um conjunto de nos eenlaces com metricas

3 Simulacao de mudancas do sistema metrico,falhas de roteador e interrupcoes de enlaces,mudancas na topologia e roteamento

4 Considera cargas em enlaces e mudancasque afetam a distribuicao de carga

5 Estatısticas sobre a topologia: caminhos decusto-igual, ligacoes com custosassimetricos, caminho mais longo

6 Sugere mudancas metricas em engenharia detrafego

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao

PL/PythonBanco de Dados e SQL

1 ”O banco de dados livre mais avancado do mundo”

2 Stored procedures (em PL/PgSQL), triggers, domains

3 Programacao de procedures: uso de outras linguagens deprogramacao

4 Atualmente suportadas: python, ruby, tcl, perl, Java, PHP e C

5 Python: simples, poderosa e com muitas bibliotecasdisponıveis

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao

ZODB - Zope Object Data BaseBanco de Dados Orientado a Objetos

1 Banco de dados transacional orientado a objetos livre utilizadopelo servidor de aplicacao Zope para armazenamentotransparente de objetos Python

2 Pode ser usado independentemente

3 Caracterısticas: transacoes, historico/cancelamento,armazenamento transparente conectavel, cache embutido,controle de concorrencia multiversao (MVCC) e escalabilidadeatraves da rede (usando ZEO)

4 Repositorio de dados Python maduro que possui centenas demilhares de sistemas rodando sobre ele atualmente

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao

TwistedProtocolos de redes

1 Framework de rede de codigo aberto escrito inteiramente emPython

2 Permite a criacao de proxies SMTP, HTTP e servidores SSH(e mais) em Python com o mınimo esforco

3 E assıncrono e dirigido a eventos

4 Nao exige o uso de modelos tradicionais de threading

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao

Socket e AsyncoreProtocolos de redes

Socket

1 Interface de rede de baixo nıvel

2 Fornece interface semelhante a BSD

Asyncore

1 Infra-estrutura basica para escrever servicos de socketassıncrono para clientes e servidores

2 Meio termo entre socket e Twisted

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao

PyRO - Python Remote ObjectsSistemas Distribuıdos

1 Comunicacao de objetos em rede de forma simples

2 Acesso a objetos em diferentes maquinas na rede como sefossem locais

3 Lembra Java Remote Method Invocation (RMI).

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao

MultithreadingProcessamento distribuıdo, paralelo e multiprocessamento

1 threading: primitivas de baixo nıvel para trabalhar commultiplos threads

2 Qeue: filas LIFO, FIFO e de prioridade com multi-produtores econsumidores

3 multiprocessing: oferece concorrencia local e remoto, usandosubprocessos em vez de threads

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao

Python Cryptography ToolkitCriptografia

1 Algoritmos de criptografia: RC4, Blowfish, DES, Diamond,IDEA, LOKI91, RC5, REDOC III, Sapphire.

2 Algoritmos de hash: MD2, MD4, MD5, Secure HashAlgorithm

3 Algoritmos de chave publica: ElGamal, RSA

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao

Lista de discussao

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao

Python Brasil[7]Encontro brasileiro da comunidade Python

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao

Comunidade Python BrasilAcesse e assine nossa lista

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao

Dorneles Tremea: 1979 - 2011

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao

1 Estes slides: slideshare.com/marrcandre

2 google*: marcoandre@gmail.com

3 twitter: @marrcandre

4 blog: marrcandre.blogspot.com

random.choice([’pergunta’, ’duvida’, ’discussao’])

Marco Andre Lopes Mendes <marcoandre@gmail.com> Uso de Python em cursos de Ciencia da Computacao