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

32
Uso de Python em cursos de Ciˆ encia da Computa¸c˜ ao Estruturas, bibliotecas e ferramentas Marco Andr´ e Lopes Mendes <[email protected]> 9 de abril de 2011 Marco Andr´ e Lopes Mendes <[email protected]> Uso de Python em cursos de Ciˆ encia da Computa¸ ao

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

Page 1: 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 <[email protected]>

9 de abril de 2011

Marco Andre Lopes Mendes <[email protected]> Uso de Python em cursos de Ciencia da Computacao

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

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 <[email protected]> Uso de Python em cursos de Ciencia da Computacao

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

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 <[email protected]> Uso de Python em cursos de Ciencia da Computacao

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

Estruturas de dados nativas

1 Strings

2 Listas

3 Tuplas

4 Dicionarios

5 Sets

6 Frozensets

Marco Andre Lopes Mendes <[email protected]> Uso de Python em cursos de Ciencia da Computacao

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

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 <[email protected]> Uso de Python em cursos de Ciencia da Computacao

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

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 <[email protected]> Uso de Python em cursos de Ciencia da Computacao

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

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 <[email protected]> Uso de Python em cursos de Ciencia da Computacao

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

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 <[email protected]> Uso de Python em cursos de Ciencia da Computacao

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

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 <[email protected]> Uso de Python em cursos de Ciencia da Computacao

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

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 <[email protected]> Uso de Python em cursos de Ciencia da Computacao

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

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 <[email protected]> Uso de Python em cursos de Ciencia da Computacao

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

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 <[email protected]> Uso de Python em cursos de Ciencia da Computacao

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

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 <[email protected]> Uso de Python em cursos de Ciencia da Computacao

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

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 <[email protected]> Uso de Python em cursos de Ciencia da Computacao

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

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 <[email protected]> Uso de Python em cursos de Ciencia da Computacao

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

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 <[email protected]> Uso de Python em cursos de Ciencia da Computacao

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

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 <[email protected]> Uso de Python em cursos de Ciencia da Computacao

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

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 <[email protected]> Uso de Python em cursos de Ciencia da Computacao

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

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 <[email protected]> Uso de Python em cursos de Ciencia da Computacao

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

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 <[email protected]> Uso de Python em cursos de Ciencia da Computacao

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

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 <[email protected]> Uso de Python em cursos de Ciencia da Computacao

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

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 <[email protected]> Uso de Python em cursos de Ciencia da Computacao

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

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 <[email protected]> Uso de Python em cursos de Ciencia da Computacao

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

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 <[email protected]> Uso de Python em cursos de Ciencia da Computacao

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

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 <[email protected]> Uso de Python em cursos de Ciencia da Computacao

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

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 <[email protected]> Uso de Python em cursos de Ciencia da Computacao

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

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 <[email protected]> Uso de Python em cursos de Ciencia da Computacao

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

Lista de discussao

Marco Andre Lopes Mendes <[email protected]> Uso de Python em cursos de Ciencia da Computacao

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

Python Brasil[7]Encontro brasileiro da comunidade Python

Marco Andre Lopes Mendes <[email protected]> Uso de Python em cursos de Ciencia da Computacao

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

Comunidade Python BrasilAcesse e assine nossa lista

Marco Andre Lopes Mendes <[email protected]> Uso de Python em cursos de Ciencia da Computacao

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

Dorneles Tremea: 1979 - 2011

Marco Andre Lopes Mendes <[email protected]> Uso de Python em cursos de Ciencia da Computacao

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

1 Estes slides: slideshare.com/marrcandre

2 google*: [email protected]

3 twitter: @marrcandre

4 blog: marrcandre.blogspot.com

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

Marco Andre Lopes Mendes <[email protected]> Uso de Python em cursos de Ciencia da Computacao