python em um curso de ciência da computação - calcomp - furb - 2010

33
Uso de Python em cursos de Ciˆ encia da Computa¸c˜ ao Estruturas, bibliotecas e ferramentas Marco Andr´ e Lopes Mendes <[email protected]> 24 de setembro de 2010 Marco Andr´ e Lopes Mendes <[email protected]> Uso de Python em cursos de Ciˆ encia da Computa¸ ao

Upload: marco-mendes

Post on 19-May-2015

1.667 views

Category:

Education


6 download

TRANSCRIPT

Page 1: Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

Uso de Python em cursos de Ciencia daComputacao

Estruturas, bibliotecas e ferramentas

Marco Andre Lopes Mendes <[email protected]>

24 de setembro de 2010

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

Page 2: Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

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 em um curso de Ciência da Computação - CALCOMP - FURB - 2010

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 simples e facil de ser assimilada

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 em um curso de Ciência da Computação - CALCOMP - FURB - 2010

StringsEstruturas de dados nativas

1 Armazenam texto (conjuntos de caracteres)

2 Crescem ate o limite da memoria

3 Substituem char e vetor de char

4 Acesso sequencial, em fatias ou direto por ındice

5 Implementadas com listas encadeadas

6 Sao objetos com diversos metodos: procurar, contar, mudarcaixa, etc.

7 Podem ser utilizadas para implementar outras estruturas comopilhas e filas

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

Page 5: Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

Listas e tuplasEstruturas de dados nativas

1 Armazenam colecoes de objetos heterogeneos

2 Crescem ate o limite da memoria

3 Substituem vetores, matrizes, registros e listas encadeadas

4 Acesso sequencial, em fatias ou direto por ındice

5 Implementadas com listas encadeadas

6 Sao objetos com diversos metodos: adicionar, remover,ordenar, procurar, contar

7 Podem ser utilizadas para implementar outras estruturas comopilhas e filas

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

Page 6: Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

DicionariosEstruturas de dados nativas

1 Armazenam pares chave/valor de forma desordenada

2 Crescem ate o limite da memoria

3 Podem ser utilizados para persistir dados

4 Acesso sequencial ou direto pela chave

5 Implementados com tabelas hash

6 Sao objetos com diversos metodos: adicionar, remover,procurar, contar

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

Page 7: Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

Conjuntos (Sets, Frozensets)Estruturas de dados nativas

1 Armazenam colecoes de objetos unicos e desordenados

2 Crescem ate o limite da memoria

3 Acesso atraves de percurso

4 Implementados com tabelas hash

5 Sao objetos com diversos metodos: uniao, disjuncao,diferenca, etc.

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

Page 8: Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

NumPyMatematica

1 Poderoso array N-dimensional de objetos

2 integracao com codigo C/C++ e Fortran

3 funcoes de algebra linear, transformada de Fourier ecapacidades de numeros aleatorios

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

Page 9: Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

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 10: Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

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 11: Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

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 12: Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

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 13: Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

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 14: Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

PyGletComputacao Grafica, animacao e jogos

1 Desenvolvimento de jogos e outras aplicacoes visualmentericas

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 15: Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

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 16: Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

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 17: Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

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 18: Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

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 19: Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

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 20: Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

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 21: Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

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 22: Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

NetworkXGrafos

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

2 E adequado para a operacao em grandes graficos do mundoreal, p.e. com mais de 10 milhoes de nos e 100 milhoes debordas

3 Utiliza dicionarios de dicionarios de Python como estrutura

4 Pode ser usado para analises de redes e de redes sociaisMarco Andre Lopes Mendes <[email protected]> Uso de Python em cursos de Ciencia da Computacao

Page 23: Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

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 24: Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

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 25: Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

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 26: Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

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 27: Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

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 28: Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

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 sefosse local

3 Lembra Java Remote Method Invocation (RMI).

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

Page 29: Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

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 30: Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

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 31: Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

Lista de discussao

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

Page 32: Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

Pythn Brasil[6]Encontro brasileiro da comunidade Python

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

Page 33: Python em um curso de Ciência da Computação - CALCOMP - FURB - 2010

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