python em um curso de ciência da computação - calcomp - furb - 2010
TRANSCRIPT
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Lista de discussao
Marco Andre Lopes Mendes <[email protected]> Uso de Python em cursos de Ciencia da Computacao
Pythn Brasil[6]Encontro brasileiro da comunidade Python
Marco Andre Lopes Mendes <[email protected]> Uso de Python em cursos de Ciencia da Computacao
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