Python, a arma secreta do Google

5.183 visualizações

Publicada em

Pelestra de divulgação da linguagem Python. Além dos slides, são feitas várias demonstrações ao vivo, que não aparecem nos slides.

  • Seja o primeiro a comentar

Python, a arma secreta do Google

  1. 1. a arma secreta do GoogleLuciano Ramalholuciano@ramgarlic.com
  2. 2. Google em 1998
  3. 3. O que é PythonLinguagem de uso geral Web, desktop, redes, computação gráfica e científicaMulti-plataforma Linux, Windows, Mac, Unix, Nokia S-60...Amplo suporte de fornecedores de TI Google, IBM, Oracle, Microsoft, RedHat, Amazon...Sintaxe simples e clara mas muito expressiva Aprendizagem rápida, produtividade em dias
  4. 4. LinguagemExpressiva? O que isso significa na prática? Linguagem COBOL
  5. 5. Java
  6. 6. JavaPython
  7. 7. Python tem sido uma parteimportante do Google desdeo início, e continua sendo àmedida que o sistema crescee evolui... estamos procurandomais pessoas com habilidadenesta linguagem.Peter Norvig, Google, Inc.
  8. 8. http://aima.cs.berkeley.edu/code.html
  9. 9. lis.py: interpretador Lisp (Scheme) em113 linhas de Python, por Peter Norvig
  10. 10. >>> from lis import repl>>> repl()lis.py> (* 7 3)21 Demo: lis.pylis.py> (define resposta (* 6 7))lis.py> resposta42lis.py> (define ! (lambda (n) (if (= n 0) 1 (* n (! (- n 1))))))lis.py> (! 4)24lis.py> (! 5)120lis.py> (! 197)100078405584080821221303894971344736599047761241456431563720437191558734323562679929991407036696693556694737848195477238497746661367777918006944650646265409257583733981874437495228286501182991424477395086576066353467353335798727837835328694280439305522603073118823862831864630209655642361092292378406702568679608855350476800000000000000000000000000000000000000000000000lis.py> !<function <lambda> at 0x1004cbd70>lis.py>
  11. 11. Exemplo: relógio gráficoimport Tkinterfrom time import strftimerelogio = Tkinter.Label()relogio.pack()relogio[font] = Helvetica 120 boldrelogio[text] = strftime(%H:%M:%S)def tictac(): agora = strftime(%H:%M:%S) if agora != relogio[text]: relogio[text] = agora relogio.after(100, tictac)tictac()relogio.mainloop()
  12. 12. Exemplo: cliente Twitterimport sysimport urllibimport jsonif len(sys.argv) == 2: busca = sys.argv[1]else: print Informe o texto da busca: {0} "texto".format(__file__) sys.exit(1)url = http://search.twitter.com/search.json?q=+buscaresposta = urllib.urlopen(url).read()documento = json.loads(resposta)resultados = documento[results]for resultado in resultados: print u{from_user}: {text}n.format(**resultado)print {0} resuldados exibidos.format(len(resultados))
  13. 13. Exemplo: servidor TCP/IPfrom twisted.internet.protocol import Protocol, Factoryfrom twisted.internet import reactorfrom time import asctimeclass ServidorHora(Protocol): def dataReceived(self, data): self.transport.write(asctime())f = Factory()f.protocol = ServidorHorareactor.listenTCP(9999, f)reactor.run()Para testar:$ telnet 127.0.0.1 9999
  14. 14. Quem usa Python?
  15. 15. Áreas de aplicaçãodesenvolvimento Webcomputação gráficaadministração de sistemasintegração de sistemas (glue language)computação científicagames
  16. 16. YouTube
  17. 17. Globo.com
  18. 18. Mozilla Firefox Add-Ons
  19. 19. Dropbox
  20. 20. Google App Engine
  21. 21. The Foundry, NUKE
  22. 22. Industrial Light & Magic
  23. 23. Autodesk Maya
  24. 24. Invesalius
  25. 25. Civilization IV
  26. 26. Frets on Fire
  27. 27. FBI e CIA
  28. 28. brasil.gov.br
  29. 29. Câmara dos Deputados
  30. 30. Projetos Open Source
  31. 31. Características Não obriga a declarar variáveis, mas obriga a inicializar >>> a = 10 >>> c = a + b Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name b is not defined Tipagem dinâmica forte, obriga conversões explícitas >>> a = 9 >>> b = 10 >>> c = a + b Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: cannot concatenate str and int objects
  32. 32. Características 2 Orientada a objetos, mas não obriga a criar classes Suporta sobrecarga de operadores e herança múltipla Usa exceções, mas não obriga a declarar ou tratar Usa namespaces, módulos e pacotes Compilada para bytecode, como Java
  33. 33. ImplementaçõesCPython: o interpretador python padrão,implementando em C pré-instalado na maioria dos Linux e no OSXJython: implementado em Java, roda sobre a JVMIronPython: implementado em C#, roda sobre .net CLRPyPy: implementado em Python, compilação JIT melhor desempenho que o CPython em muitos testes poderá substituir CPython como interpretador principal
  34. 34. Porque aprenderLinguagem acessível, resultados em pouco tempoCampos de atuação muito diversificados, em expansãoDominar novos conceitos e paradigmasDiversão e realização pessoalResumindo: um ótimo investimento em você
  35. 35. diveintopython3.ep.io
  36. 36. Khan Academy
  37. 37. Khan Academy
  38. 38. code.google.com/edu/languages
  39. 39. Onde aprender maispython.org, python.org.brpythonbrasil.org.br (slideshare.net #pythonbrasil)Google Groups: python-brasilIntrodução à Programação com Python, Nilo MenezesPython e Django, Osvaldo Santana e Thiago GalesiCurso Gratuito 18/10, 19h-22h (metrô Paraíso): Desenvolvimento Web fácil com Python e Django Reservas: Globalcode.com.br 11-3145-2230
  40. 40. AgradecimentosGuido van Rossum, pela linguagem PythonTodo mundo que vem colaborando com PythonGoogle, por pagar o salário de Guido, Peter, AlexMartelli e tantos outros pythonistas da pesadaRodrigo Senra, Marco André, Xiru, Pamela Fox e PeterNorvig por exemplos, imagens e inspiraçãoComunidade Python Brasil, pela troca de idéias,amizade e arbustosAgradecimento especial a você que ficou até o fim!

×