Python - Programando em alto nível

5,433 views
5,249 views

Published on

Visão geral do que é a linguagem de programação Python, como usá-la e onde usá-la.

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,433
On SlideShare
0
From Embeds
0
Number of Embeds
358
Actions
Shares
0
Downloads
255
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

Python - Programando em alto nível

  1. 1. Programando em alto nível Igor Sobreira www.igorsobreira.com
  2. 2. Eu te conheço? • Me chamo Igor Sobreira • Faço TSI no IFPB (antigo CEFET-PB) • Programo em Python a uns 3, 4 anos • Trabalho com Python pra web (Django) • Smart Nuts Technology (www.smartnutstechnology.com) • Velejo de windsurf (quando dá...)
  3. 3. Python começou ... • ... em 1991, o primeiro release: 0.9.0 • Multi-paradigma • Multi-plataforma • Tipagem dinâmica e forte • Biblioteca padrão extensa • Fácil de aprender • Preza pela beleza de código ... beleza?
  4. 4. Beleza Importa!
  5. 5. Código bonito é código legível mais fácil de manter http://www.fickr.com/photos/jorgenjuul/2315754513/
  6. 6. VHLL Linguagem de Altíssimo Nível http://www.fickr.com/photos/carpe_feline/539715666/
  7. 7. Para os humanos
  8. 8. Interpretador interativo
  9. 9. Onde estamos? Pra onde vamos? • Python 3.0: quebra de compatibilidade • 2to3 ajuda na migração • ainda pouco usada (poucos módulos externos) • Versão atual 2.6.2: compatível com a família 2.x • traz algumas novidades do Python 3.0 • lança warnings de features depreciadas
  10. 10. Variáveis http://www.fickr.com/photos/mangtronix/404043506/
  11. 11. Objetos. Eles estão em todos os lugares Eles estão em todos os lugares
  12. 12. Tipagem Dinâmica “ ... executam em tempo de execução muitos comportamentos que outras linguagens realizam em tempo de compilação” Wikipedia • não é preciso declarar o tipo de uma variável • mas é preciso inicializá-la
  13. 13. ... e Forte
  14. 14. O que eu tenho disponível?
  15. 15. • listas [ coleção, de, objetos ] • tuplas (listas, imutáveis) • dicionários { chave: valor } • “strings” • u’unicode’, • r’string cruasn’
  16. 16. Baterias Inclusas Quase tudo que você precisa vem embutido http://www.fickr.com/photos/fensterj/138774850/
  17. 17. http://docs.python.org/library/ re StringIO weakref datetime decimal calendar itertools random math csv os.path os robotparser pdb email sqlite3 gzip json shelve pickle xml.* urllib/urllib2 tarfle hashlib threading multiprocessing
  18. 18. Multiplataforma
  19. 19. • Linux • Maemo - PyMaemo • Unix • S60 - PyS60 • Windows • Android • OS X • E também na JVM e .NET
  20. 20. Python Implementação X Especifcação Implementação X Especifcação
  21. 21. CPython • Implementação de referência, ofcial • Escrita em C • Versão atual: 3.0.1 / 2.6.2
  22. 22. Jython • Python na JVM • Implementação em Java • Versão atual: 2.5.0
  23. 23. IronPython • Python na .NET e Silverlight • Versão atual: 2.0.1 • Compatível com CPython 2.5
  24. 24. Stackless Python • Um python “melhorado” • Microthreads • Threads mais “leves” • Não são threads reais • Um round robin scheduler embutido executa as tasklets
  25. 25. Pypy • “... framework para produção de implementações de linguagens dinâmicas” • “implementação da linguagem Python rápida, fexível e compatível, usando esse framework para permitir novas funcionalidades avançadas sem precisar codifcar detalhes de baixo nível” • Python em (R)Python! • Geração de um compilador JIT!!
  26. 26. Unladen Swallow • Branch do CPython feito pelo Google • Meta? ser 5x mais rápido que o CPython • Como? usando o JIT da LLVM • Boa sorte google :-) • Desenvolvimento ativo
  27. 27. Programação Funcional
  28. 28. flter()
  29. 29. zip()
  30. 30. E muito mais... • Python tem um exelente suporte a programação funcional • Muitas funções embutidas muito úteis • http://docs.python.org/library/functions.html • functools, itertools • O tratamento de parâmetros é muito fexível • Funções são objetos de primeira classe • Closures
  31. 31. Decorators • Modifcam, incrementam uma função ou método • Fazem alguma coisa antes e/ou depois da função real • Filtram parâmetros e/ou valores de retorno • A partir do Python 2.6 podem decorar classes!
  32. 32. Programação Orientada a Objetos
  33. 33. Métodos estáticos e de classe
  34. 34. Herança Múltipla Robô Carro falar() acelerar() Trânsformer
  35. 35. Metaclasses • Uma classe constrói objetos • Uma metaclasse constrói classes
  36. 36. Classes Abstratas • Novidade no Python 2.6 • Defnem a interface de um objeto • É uma forma de organizar as interfaces de suas classes, simplifcando a refexão • Classes abstratas + herança múltipla torna desnecessário um tipo interface, como existe linguagems como Java e PHP
  37. 37. collections.Container
  38. 38. Properties • Evite getters e setters desnecessários • Use-os somente quando precisar • E quando usar, seja transparente • Não precisa encapsular algo que (ainda) não existe!
  39. 39. Isso é só começo ... • OO em python é simples e poderoso! • é fácil deixar seu objeto parecido com um tipo nativo • sobrecarga de operadores (+, -, /, *) • descriptors • alto nível de refexão
  40. 40. Persistência de Dados
  41. 41. • pickle e cPickle: serializa objetos • shelve: objeto dictionary-like persistente • o valor pode ser qualquer objeto pickleble • Unix dbm: pares chave-valor • chaves e valores são strings
  42. 42. Bancos Relacionais • Python DB API (PEP 0242) • sqlite3 (builtin!) • MySQL - mysqldb • PostgreSQL - psycopg2 • Oracle - cx_Oracle • Microsoft SQL Server - pymssql
  43. 43. ORMs • SQLAlchemy • Django ORM • DejaVu • Storm • SQLObject • Autumm
  44. 44. Banco de Dados OO • ZODB • Durus • pod - Pickled Object Database
  45. 45. couchdb-python http://code.google.com/p/couchdb-python/
  46. 46. Programação Concorrente
  47. 47. subprocess • inicar processos e analisar input/output/error • subprocess.call( [‘ls’, ‘-la’] )
  48. 48. threading • Fácil manipulação de threads • Semáforos • Locks • Eventos
  49. 49. GIL
  50. 50. Global Interpreter Lock • Não permite que duas threads executem em paralelo na mesma VM!! • threads são concorrentes, mas não paralelas • facilita muito a implementação, e módulos externos em C/C++ • Paralelismo real? Use processos.
  51. 51. multiprocessing • quase a mesma interface de threading • mas com processos, e não threads • abstrai criação, interação entre processos ...
  52. 52. • Desenvolvimento web: frameworks • frameworks full-stack ou componentes separados • Web Services • python conversa com: JSON, XML,YAML • SOAP, RPC, REST
  53. 53. Fazendo uma busca no Web Service do twitter.com
  54. 54. Testes Automatizados
  55. 55. doctests • as docstrings viram testes reais • documentação e teste num só lugar • basta simular uma sessão no interpretador interativo ( >>> )
  56. 56. unittest • Testes automatizados • A versão em Python do JUnit • Sua aplicação é formada por pequenas unidades testáveis
  57. 57. E por fora? http://www.fickr.com/photos/autobahn/377694041/
  58. 58. • Nose • py.test Eles procuram e rodas os testes para você. E ainda extendem o unittest padrão http://www.fickr.com/photos/rabbitriot/2910866645/
  59. 59. • python-mock • minimock Não teste objetos externos. Falsifque-os, e espere o melhor deles. Ou simplesmente. Monkeypatch :-)
  60. 60. Conversa com outras linguagens • C/C++ • Jython (Java) • IronPython (.NET)
  61. 61. Onde usar?
  62. 62. • Web • GUI • Mobile • Games e 3D • Comp. Gráfca • Ciência e Educação • Rede • Adm. de Sistemas
  63. 63. Quem usa?
  64. 64. www.youtube.com
  65. 65. www.cia.gov
  66. 66. www.brasil.gov.br
  67. 67. www.vericia.com
  68. 68. Aync - Stoq. Gestão comercial
  69. 69. InVersalius
  70. 70. Blender
  71. 71. Inkscape
  72. 72. INdT - Nokia
  73. 73. Documentação
  74. 74. python.org.br docs.python.org
  75. 75. Python para desenvolvedores http://ark4n.wordpress.com/python/
  76. 76. A Comunidade Text
  77. 77. Encontro Brasileiro • I PyconBrasil (2005) Unicamp, São Paulo/SP • II PyconBrasil (2006) Interlegis, Brazília/DF • III PyconBrasil (2007) SOCIESC, Joinville/SC • Pyconbrasil [4] (2008) UVA, Rio de Janeiro/RF • Pythonbrasil [5] UCS, Caxias do Sul/RS • 10 a 12 de Setembro de 2009
  78. 78. • python.org.br • Grupos • python-brasil - 2960 • django-brasil - 1034 • zope-pt - 1047 • IRC • #python-br • #django-br • #qualquer-ferramenta-ou-framework
  79. 79. Bem vindo ao mundo Python
  80. 80. Obrigado. Dúvidas? Igor Sobreira www.igorsobreira.com http://www.fickr.com/photos/pocar/3285251509/

×