SlideShare una empresa de Scribd logo
1 de 46
a arma secreta do Google

Luciano Ramalho
luciano@ramgarlic.com
Google em 1998
O que é Python
Linguagem de uso geral
  Web, desktop, redes, computação gráfica e
  científica
Multi-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
Linguagem
Expressiva?

  O que isso
   significa
  na prática?




       Linguagem
         COBOL
Java
Java


Python
Python tem sido uma parte
importante do Google desde
o início, e continua sendo à
medida que o sistema cresce
e evolui... estamos procurando
mais pessoas com habilidade
nesta linguagem.




Peter Norvig, Google, Inc.
http://aima.cs.berkeley.edu/code.html
lis.py: interpretador
   Lisp (Scheme) em
113 linhas de Python,
      por Peter Norvig
>>> from lis import repl
>>> repl()
lis.py> (* 7 3)
21
                                    Demo: lis.py
lis.py> (define resposta (* 6 7))
lis.py> resposta
42
lis.py> (define ! (lambda (n) (if (= n 0) 1 (* n (! (- n 1))))))
lis.py> (! 4)
24
lis.py> (! 5)
120
lis.py> (! 197)
10007840558408082122130389497134473659904776124145643156372043719
15587343235626799299914070366966935566947378481954772384977466613
67777918006944650646265409257583733981874437495228286501182991424
47739508657606635346735333579872783783532869428043930552260307311
88238628318646302096556423610922923784067025686796088553504768000
00000000000000000000000000000000000000000000
lis.py> !
<function <lambda> at 0x1004cbd70>
lis.py>
Exemplo: relógio gráfico

import Tkinter
from time import strftime

relogio = Tkinter.Label()

relogio.pack()
relogio['font'] = 'Helvetica 120 bold'
relogio['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()
Exemplo: cliente Twitter
import sys
import urllib
import json

if 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='+busca
resposta = 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))
Exemplo: servidor TCP/IP
from twisted.internet.protocol import Protocol, Factory
from twisted.internet import reactor
from time import asctime

class ServidorHora(Protocol):
    def dataReceived(self, data):
        self.transport.write(asctime())

f = Factory()
f.protocol = ServidorHora

reactor.listenTCP(9999, f)
reactor.run()



Para testar:
$ telnet 127.0.0.1 9999
Quem usa Python?
Áreas de aplicação

desenvolvimento Web
computação gráfica
administração de sistemas
integração de sistemas (glue language)
computação científica
games
YouTube
Globo.com
Mozilla Firefox Add-Ons
Dropbox
Google App Engine
The Foundry, NUKE
Industrial Light & Magic
Autodesk Maya
Invesalius
Civilization IV
Frets on Fire
FBI e CIA
brasil.gov.br
Câmara dos Deputados
Projetos Open Source
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
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
Implementações
CPython: o interpretador python padrão,
implementando em C
  pré-instalado na maioria dos Linux e no OSX
Jython: implementado em Java, roda sobre a JVM
IronPython: implementado em C#, roda sobre .net CLR
PyPy: implementado em Python, compilação JIT
  melhor desempenho que o CPython em muitos testes
  poderá substituir CPython como interpretador principal
Porque aprender

Linguagem acessível, resultados em pouco tempo
Campos de atuação muito diversificados, em expansão
Dominar novos conceitos e paradigmas
Diversão e realização pessoal
Resumindo: um ótimo investimento em você
diveintopython3.ep.io
Khan Academy
Khan Academy
code.google.com/edu/languages
Onde aprender mais
python.org, python.org.br
pythonbrasil.org.br (slideshare.net #pythonbrasil)
Google Groups: python-brasil

Introdução à Programação com Python, Nilo Menezes

Python e Django, Osvaldo Santana e Thiago Galesi
Curso Gratuito 18/10, 19h-22h (metrô Paraíso):
  Desenvolvimento Web fácil com Python e Django
  Reservas: Globalcode.com.br 11-3145-2230
Agradecimentos
Guido van Rossum, pela linguagem Python
Todo mundo que vem colaborando com Python
Google, por pagar o salário de Guido, Peter, Alex
Martelli e tantos outros pythonistas da pesada
Rodrigo Senra, Marco André, Xiru, Pamela Fox e Peter
Norvig por exemplos, imagens e inspiração
Comunidade Python Brasil, pela troca de idéias,
amizade e arbustos
Agradecimento especial a você que ficou até o fim!

Más contenido relacionado

La actualidad más candente

Exercicios resolvidos visuAlg
Exercicios resolvidos visuAlgExercicios resolvidos visuAlg
Exercicios resolvidos visuAlgWillians Miyabara
 
Python Course | Python Programming | Python Tutorial | Python Training | Edureka
Python Course | Python Programming | Python Tutorial | Python Training | EdurekaPython Course | Python Programming | Python Tutorial | Python Training | Edureka
Python Course | Python Programming | Python Tutorial | Python Training | EdurekaEdureka!
 
Fluxograma (Lógica de Programação)
Fluxograma (Lógica de Programação)Fluxograma (Lógica de Programação)
Fluxograma (Lógica de Programação)Gercélia Ramos
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução BásicaChristian Perone
 
Lista de exercícios em portugol
Lista de exercícios em portugolLista de exercícios em portugol
Lista de exercícios em portugolGabriel Faustino
 
Algoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoAlgoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoMauro Pereira
 
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するそうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するshigeki_ohtsu
 
Palestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesPalestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesMarcos Thomaz
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em PythonLuciano Ramalho
 
Interactive Python PPT with animations
Interactive Python PPT with animationsInteractive Python PPT with animations
Interactive Python PPT with animationsShauryaChawla4
 
Python: a primeira mordida
Python: a primeira mordidaPython: a primeira mordida
Python: a primeira mordidaLuciano Ramalho
 
Concurrency in Golang
Concurrency in GolangConcurrency in Golang
Concurrency in GolangOliver N
 
C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編道化師 堂華
 
Informatica Básica Parte 3 conhecendo o Excel 2010
Informatica Básica Parte 3 conhecendo o Excel 2010 Informatica Básica Parte 3 conhecendo o Excel 2010
Informatica Básica Parte 3 conhecendo o Excel 2010 Maurício V.Pires
 
Informática Básica - Planilha Eletronica - Microsoft Excel 2010
Informática Básica - Planilha Eletronica - Microsoft Excel 2010Informática Básica - Planilha Eletronica - Microsoft Excel 2010
Informática Básica - Planilha Eletronica - Microsoft Excel 2010Joeldson Costa Damasceno
 
Introdução à programação
Introdução à programação Introdução à programação
Introdução à programação João Piedade
 
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかYuki Miyatake
 
Informática Básica parte 1 - Introdução à informática e windows 7 - Inclusão...
Informática Básica parte 1 - Introdução à informática e windows 7 -  Inclusão...Informática Básica parte 1 - Introdução à informática e windows 7 -  Inclusão...
Informática Básica parte 1 - Introdução à informática e windows 7 - Inclusão...Maurício V.Pires
 
Introdução à Programação
Introdução à ProgramaçãoIntrodução à Programação
Introdução à ProgramaçãoMario Sergio
 

La actualidad más candente (20)

Exercicios resolvidos visuAlg
Exercicios resolvidos visuAlgExercicios resolvidos visuAlg
Exercicios resolvidos visuAlg
 
Python Course | Python Programming | Python Tutorial | Python Training | Edureka
Python Course | Python Programming | Python Tutorial | Python Training | EdurekaPython Course | Python Programming | Python Tutorial | Python Training | Edureka
Python Course | Python Programming | Python Tutorial | Python Training | Edureka
 
Fluxograma (Lógica de Programação)
Fluxograma (Lógica de Programação)Fluxograma (Lógica de Programação)
Fluxograma (Lógica de Programação)
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução Básica
 
Lista de exercícios em portugol
Lista de exercícios em portugolLista de exercícios em portugol
Lista de exercícios em portugol
 
Algoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoAlgoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigo
 
Computação forense
Computação forenseComputação forense
Computação forense
 
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解するそうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
 
Palestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesPalestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas Aplicações
 
Orientação a Objetos em Python
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em Python
 
Interactive Python PPT with animations
Interactive Python PPT with animationsInteractive Python PPT with animations
Interactive Python PPT with animations
 
Python: a primeira mordida
Python: a primeira mordidaPython: a primeira mordida
Python: a primeira mordida
 
Concurrency in Golang
Concurrency in GolangConcurrency in Golang
Concurrency in Golang
 
C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編
 
Informatica Básica Parte 3 conhecendo o Excel 2010
Informatica Básica Parte 3 conhecendo o Excel 2010 Informatica Básica Parte 3 conhecendo o Excel 2010
Informatica Básica Parte 3 conhecendo o Excel 2010
 
Informática Básica - Planilha Eletronica - Microsoft Excel 2010
Informática Básica - Planilha Eletronica - Microsoft Excel 2010Informática Básica - Planilha Eletronica - Microsoft Excel 2010
Informática Básica - Planilha Eletronica - Microsoft Excel 2010
 
Introdução à programação
Introdução à programação Introdução à programação
Introdução à programação
 
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうか
 
Informática Básica parte 1 - Introdução à informática e windows 7 - Inclusão...
Informática Básica parte 1 - Introdução à informática e windows 7 -  Inclusão...Informática Básica parte 1 - Introdução à informática e windows 7 -  Inclusão...
Informática Básica parte 1 - Introdução à informática e windows 7 - Inclusão...
 
Introdução à Programação
Introdução à ProgramaçãoIntrodução à Programação
Introdução à Programação
 

Destacado

Introduction to Python for Symbian S60
Introduction to Python for Symbian S60Introduction to Python for Symbian S60
Introduction to Python for Symbian S60Marcel Caraciolo
 
Mini-Curso Python para Symbian
Mini-Curso Python para SymbianMini-Curso Python para Symbian
Mini-Curso Python para SymbianMarcel Caraciolo
 
Python com baterias incluídas v2.0
Python com baterias incluídas v2.0Python com baterias incluídas v2.0
Python com baterias incluídas v2.0Jonh Edson
 
Desenvolvimento web com Python, Zope e Plone
Desenvolvimento web com Python, Zope e PloneDesenvolvimento web com Python, Zope e Plone
Desenvolvimento web com Python, Zope e PloneJacson Tiola
 
Preparando-se para a prova da Certificação Zend PHP 5.3
Preparando-se para a prova da Certificação Zend PHP 5.3Preparando-se para a prova da Certificação Zend PHP 5.3
Preparando-se para a prova da Certificação Zend PHP 5.3klaussilveira
 
Desenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyDesenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyRelsi Maron
 
QGIS 2.8: Classificação de Campos com Python
QGIS 2.8: Classificação de Campos com PythonQGIS 2.8: Classificação de Campos com Python
QGIS 2.8: Classificação de Campos com PythonJorge Santos
 
Trabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonTrabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonJanderson Campêlo
 
2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com PythonJardel Weyrich
 
04 programando em python - listas
 04   programando em python - listas 04   programando em python - listas
04 programando em python - listasVictor Marcelino
 
Análise estática de código Python
Análise estática de código PythonAnálise estática de código Python
Análise estática de código PythonGuilherme Vierno
 
17 arvores binarias de busca
17   arvores binarias de busca17   arvores binarias de busca
17 arvores binarias de buscaRicardo Bolanho
 
Ensinando a programar através do Python turtle graphics
Ensinando a programar através do Python turtle graphicsEnsinando a programar através do Python turtle graphics
Ensinando a programar através do Python turtle graphicsGuilherme Medeiros
 

Destacado (20)

Introduction to Python for Symbian S60
Introduction to Python for Symbian S60Introduction to Python for Symbian S60
Introduction to Python for Symbian S60
 
Python na Web
Python na WebPython na Web
Python na Web
 
Mini-Curso Python para Symbian
Mini-Curso Python para SymbianMini-Curso Python para Symbian
Mini-Curso Python para Symbian
 
Python com baterias incluídas v2.0
Python com baterias incluídas v2.0Python com baterias incluídas v2.0
Python com baterias incluídas v2.0
 
Desenvolvimento web com Python, Zope e Plone
Desenvolvimento web com Python, Zope e PloneDesenvolvimento web com Python, Zope e Plone
Desenvolvimento web com Python, Zope e Plone
 
Python
PythonPython
Python
 
Preparando-se para a prova da Certificação Zend PHP 5.3
Preparando-se para a prova da Certificação Zend PHP 5.3Preparando-se para a prova da Certificação Zend PHP 5.3
Preparando-se para a prova da Certificação Zend PHP 5.3
 
Python e MongoDB - Ensol
Python e MongoDB - EnsolPython e MongoDB - Ensol
Python e MongoDB - Ensol
 
Introducao python 2010
Introducao python 2010Introducao python 2010
Introducao python 2010
 
Diversidade na Comunidade Python
Diversidade na Comunidade PythonDiversidade na Comunidade Python
Diversidade na Comunidade Python
 
Rumo à Certificação PHP
Rumo à Certificação PHPRumo à Certificação PHP
Rumo à Certificação PHP
 
Desenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2pyDesenvolvimento web ágil com python e web2py
Desenvolvimento web ágil com python e web2py
 
QGIS 2.8: Classificação de Campos com Python
QGIS 2.8: Classificação de Campos com PythonQGIS 2.8: Classificação de Campos com Python
QGIS 2.8: Classificação de Campos com Python
 
Trabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonTrabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - Python
 
2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python2016/01/27 - Aprendendo a programar com Python
2016/01/27 - Aprendendo a programar com Python
 
04 programando em python - listas
 04   programando em python - listas 04   programando em python - listas
04 programando em python - listas
 
Análise estática de código Python
Análise estática de código PythonAnálise estática de código Python
Análise estática de código Python
 
17 arvores binarias de busca
17   arvores binarias de busca17   arvores binarias de busca
17 arvores binarias de busca
 
Ensinando a programar através do Python turtle graphics
Ensinando a programar através do Python turtle graphicsEnsinando a programar através do Python turtle graphics
Ensinando a programar através do Python turtle graphics
 
TWP45 Hackeando o Facebook com Python
TWP45 Hackeando o Facebook com PythonTWP45 Hackeando o Facebook com Python
TWP45 Hackeando o Facebook com Python
 

Similar a Python, a arma secreta do Google

Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonAlvaro Oliveira
 
Cherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações webCherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações webAlvaro Oliveira
 
A lógica do Python e seus termos
A lógica do Python e seus termosA lógica do Python e seus termos
A lógica do Python e seus termosValore I/O
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Pythonrodrigopex
 
Python: Cabe no seu bolso, no seu micro, no seu cérebro.
Python: Cabe no seu bolso, no seu micro, no seu cérebro.Python: Cabe no seu bolso, no seu micro, no seu cérebro.
Python: Cabe no seu bolso, no seu micro, no seu cérebro.Rodrigo Senra
 
Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação PythonJunior Sobrenome
 
Curso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsCurso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsHelio Colombe
 
Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Marcel Caraciolo
 
Por que você deveria aprender python?
Por que você deveria aprender python?Por que você deveria aprender python?
Por que você deveria aprender python?Felipe Volpone
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Motalucianacmota
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 2
Implementação de Aplicações Móveis e Jogos com Python - Aula 2Implementação de Aplicações Móveis e Jogos com Python - Aula 2
Implementação de Aplicações Móveis e Jogos com Python - Aula 2Flávio Ribeiro
 
Python No Terra (2006-12-21)
Python No Terra  (2006-12-21)Python No Terra  (2006-12-21)
Python No Terra (2006-12-21)Rudá Moura
 
Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4CDS
 
Introdução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowIntrodução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowpichiliani
 
Introdução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowIntrodução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowMauro Pichiliani
 
Minicurso-Python-01.pptx
Minicurso-Python-01.pptxMinicurso-Python-01.pptx
Minicurso-Python-01.pptxPapirusDig
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1Flávio Ribeiro
 
Python Training #1 ed.6
Python Training #1 ed.6 Python Training #1 ed.6
Python Training #1 ed.6 Fabio Spanhol
 

Similar a Python, a arma secreta do Google (20)

Programando para web com python - Introdução a Python
Programando para web com python - Introdução a PythonProgramando para web com python - Introdução a Python
Programando para web com python - Introdução a Python
 
Cherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações webCherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações web
 
Python, CPython, Pythonico, Cython
Python, CPython, Pythonico, CythonPython, CPython, Pythonico, Cython
Python, CPython, Pythonico, Cython
 
M2ti - Python Brasil
M2ti - Python BrasilM2ti - Python Brasil
M2ti - Python Brasil
 
A lógica do Python e seus termos
A lógica do Python e seus termosA lógica do Python e seus termos
A lógica do Python e seus termos
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Python
 
Python: Cabe no seu bolso, no seu micro, no seu cérebro.
Python: Cabe no seu bolso, no seu micro, no seu cérebro.Python: Cabe no seu bolso, no seu micro, no seu cérebro.
Python: Cabe no seu bolso, no seu micro, no seu cérebro.
 
Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação Python
 
Curso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsCurso de Python (Básico) - Português
Curso de Python (Básico) - Português
 
Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?
 
Por que você deveria aprender python?
Por que você deveria aprender python?Por que você deveria aprender python?
Por que você deveria aprender python?
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Mota
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 2
Implementação de Aplicações Móveis e Jogos com Python - Aula 2Implementação de Aplicações Móveis e Jogos com Python - Aula 2
Implementação de Aplicações Móveis e Jogos com Python - Aula 2
 
Python No Terra (2006-12-21)
Python No Terra  (2006-12-21)Python No Terra  (2006-12-21)
Python No Terra (2006-12-21)
 
Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4
 
Introdução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowIntrodução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlow
 
Introdução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowIntrodução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlow
 
Minicurso-Python-01.pptx
Minicurso-Python-01.pptxMinicurso-Python-01.pptx
Minicurso-Python-01.pptx
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1
 
Python Training #1 ed.6
Python Training #1 ed.6 Python Training #1 ed.6
Python Training #1 ed.6
 

Más de Luciano Ramalho

Iteráveis e geradores (versão RuPy)
Iteráveis e geradores (versão RuPy)Iteráveis e geradores (versão RuPy)
Iteráveis e geradores (versão RuPy)Luciano Ramalho
 
Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)Luciano Ramalho
 
Encapsulamento com descritores
Encapsulamento com descritoresEncapsulamento com descritores
Encapsulamento com descritoresLuciano Ramalho
 
Arduino: hardware hacking & coding dojo
Arduino: hardware hacking & coding dojoArduino: hardware hacking & coding dojo
Arduino: hardware hacking & coding dojoLuciano Ramalho
 
Objetos Pythonicos - compacto
Objetos Pythonicos - compactoObjetos Pythonicos - compacto
Objetos Pythonicos - compactoLuciano Ramalho
 
Iteraveis e geradores em Python
Iteraveis e geradores em PythonIteraveis e geradores em Python
Iteraveis e geradores em PythonLuciano Ramalho
 
Encapsulamento com Descritores em Python
Encapsulamento com Descritores em PythonEncapsulamento com Descritores em Python
Encapsulamento com Descritores em PythonLuciano Ramalho
 
Python: Iteraveis, geradores etc
Python: Iteraveis, geradores etcPython: Iteraveis, geradores etc
Python: Iteraveis, geradores etcLuciano Ramalho
 
Jython no JavaOne Latin America 2011
Jython no JavaOne Latin America 2011Jython no JavaOne Latin America 2011
Jython no JavaOne Latin America 2011Luciano Ramalho
 
Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Luciano Ramalho
 
OO em Python sem sotaque
OO em Python sem sotaqueOO em Python sem sotaque
OO em Python sem sotaqueLuciano Ramalho
 
Alex Martelli's Python Design Patterns
Alex Martelli's Python Design PatternsAlex Martelli's Python Design Patterns
Alex Martelli's Python Design PatternsLuciano Ramalho
 

Más de Luciano Ramalho (20)

Wiki-wiki S/A
Wiki-wiki S/AWiki-wiki S/A
Wiki-wiki S/A
 
Mongodb: agregação
Mongodb: agregaçãoMongodb: agregação
Mongodb: agregação
 
Iteráveis e geradores (versão RuPy)
Iteráveis e geradores (versão RuPy)Iteráveis e geradores (versão RuPy)
Iteráveis e geradores (versão RuPy)
 
Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)
 
Encapsulamento com descritores
Encapsulamento com descritoresEncapsulamento com descritores
Encapsulamento com descritores
 
Iteraveis e geradores
Iteraveis e geradoresIteraveis e geradores
Iteraveis e geradores
 
Arduino: hardware hacking & coding dojo
Arduino: hardware hacking & coding dojoArduino: hardware hacking & coding dojo
Arduino: hardware hacking & coding dojo
 
Objetos Pythonicos - compacto
Objetos Pythonicos - compactoObjetos Pythonicos - compacto
Objetos Pythonicos - compacto
 
Iteraveis e geradores em Python
Iteraveis e geradores em PythonIteraveis e geradores em Python
Iteraveis e geradores em Python
 
Encapsulamento com Descritores em Python
Encapsulamento com Descritores em PythonEncapsulamento com Descritores em Python
Encapsulamento com Descritores em Python
 
Dojo com Processing
Dojo com ProcessingDojo com Processing
Dojo com Processing
 
Dojo com Arduino
Dojo com ArduinoDojo com Arduino
Dojo com Arduino
 
Python: Iteraveis, geradores etc
Python: Iteraveis, geradores etcPython: Iteraveis, geradores etc
Python: Iteraveis, geradores etc
 
Open Library no Mongodb
Open Library no MongodbOpen Library no Mongodb
Open Library no Mongodb
 
Jython no JavaOne Latin America 2011
Jython no JavaOne Latin America 2011Jython no JavaOne Latin America 2011
Jython no JavaOne Latin America 2011
 
Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)
 
OO em Python sem sotaque
OO em Python sem sotaqueOO em Python sem sotaque
OO em Python sem sotaque
 
Modelos ricos
Modelos ricosModelos ricos
Modelos ricos
 
Ensinando OO com Python
Ensinando OO com PythonEnsinando OO com Python
Ensinando OO com Python
 
Alex Martelli's Python Design Patterns
Alex Martelli's Python Design PatternsAlex Martelli's Python Design Patterns
Alex Martelli's Python Design Patterns
 

Python, a arma secreta do Google

  • 1. a arma secreta do Google Luciano Ramalho luciano@ramgarlic.com
  • 3.
  • 4. O que é Python Linguagem de uso geral Web, desktop, redes, computação gráfica e científica Multi-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
  • 5. Linguagem Expressiva? O que isso significa na prática? Linguagem COBOL
  • 8. Python tem sido uma parte importante do Google desde o início, e continua sendo à medida que o sistema cresce e evolui... estamos procurando mais pessoas com habilidade nesta linguagem. Peter Norvig, Google, Inc.
  • 10. lis.py: interpretador Lisp (Scheme) em 113 linhas de Python, por Peter Norvig
  • 11. >>> from lis import repl >>> repl() lis.py> (* 7 3) 21 Demo: lis.py lis.py> (define resposta (* 6 7)) lis.py> resposta 42 lis.py> (define ! (lambda (n) (if (= n 0) 1 (* n (! (- n 1)))))) lis.py> (! 4) 24 lis.py> (! 5) 120 lis.py> (! 197) 10007840558408082122130389497134473659904776124145643156372043719 15587343235626799299914070366966935566947378481954772384977466613 67777918006944650646265409257583733981874437495228286501182991424 47739508657606635346735333579872783783532869428043930552260307311 88238628318646302096556423610922923784067025686796088553504768000 00000000000000000000000000000000000000000000 lis.py> ! <function <lambda> at 0x1004cbd70> lis.py>
  • 12. Exemplo: relógio gráfico import Tkinter from time import strftime relogio = Tkinter.Label() relogio.pack() relogio['font'] = 'Helvetica 120 bold' relogio['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()
  • 13. Exemplo: cliente Twitter import sys import urllib import json if 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='+busca resposta = 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))
  • 14. Exemplo: servidor TCP/IP from twisted.internet.protocol import Protocol, Factory from twisted.internet import reactor from time import asctime class ServidorHora(Protocol): def dataReceived(self, data): self.transport.write(asctime()) f = Factory() f.protocol = ServidorHora reactor.listenTCP(9999, f) reactor.run() Para testar: $ telnet 127.0.0.1 9999
  • 16.
  • 17.
  • 18.
  • 19.
  • 20. Áreas de aplicação desenvolvimento Web computação gráfica administração de sistemas integração de sistemas (glue language) computação científica games
  • 36. 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
  • 37. 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
  • 38. Implementações CPython: o interpretador python padrão, implementando em C pré-instalado na maioria dos Linux e no OSX Jython: implementado em Java, roda sobre a JVM IronPython: implementado em C#, roda sobre .net CLR PyPy: implementado em Python, compilação JIT melhor desempenho que o CPython em muitos testes poderá substituir CPython como interpretador principal
  • 39. Porque aprender Linguagem acessível, resultados em pouco tempo Campos de atuação muito diversificados, em expansão Dominar novos conceitos e paradigmas Diversão e realização pessoal Resumindo: um ótimo investimento em você
  • 40.
  • 45. Onde aprender mais python.org, python.org.br pythonbrasil.org.br (slideshare.net #pythonbrasil) Google Groups: python-brasil Introdução à Programação com Python, Nilo Menezes Python e Django, Osvaldo Santana e Thiago Galesi Curso Gratuito 18/10, 19h-22h (metrô Paraíso): Desenvolvimento Web fácil com Python e Django Reservas: Globalcode.com.br 11-3145-2230
  • 46. Agradecimentos Guido van Rossum, pela linguagem Python Todo mundo que vem colaborando com Python Google, por pagar o salário de Guido, Peter, Alex Martelli e tantos outros pythonistas da pesada Rodrigo Senra, Marco André, Xiru, Pamela Fox e Peter Norvig por exemplos, imagens e inspiração Comunidade Python Brasil, pela troca de idéias, amizade e arbustos Agradecimento especial a você que ficou até o fim!

Notas del editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n