Upload
marco-mendes
View
1.093
Download
5
Embed Size (px)
DESCRIPTION
Palestra apresentada na Semana do Curso de Ciência da Computação da FURB em 21/09/2009. Apresenta dez razões para conhecer Python.
Citation preview
Por que Python?10 razoes para aprender Python
Marco Andre Lopes Mendes <[email protected]>
21 de setembro de 2009
Marco Andre Lopes Mendes <[email protected]> Por que Python?
Uma breve introducaodesse que vos fala
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 Atualmente, membro da diretoria da APyB
Marco Andre Lopes Mendes <[email protected]> Por que Python?
Uma breve introducaoSobre a linguagem
1 Criada por Guido van Rossum em 1991
2 Origem do nome: grupo de humoristas Monty Python
3 Linguagem de altıssimo nıvel (VHLL)
4 Sintaxe simples e facil de ser assimilada
5 Linguagem orientada a objetos com suporte aos paradigmasestrutural e funcional
6 Tipagem forte e dinamica
7 Multiplataforma
8 Interpretada: compila para bytecode e interpreta
9 Ambiente interativo
10 Licenca de codigo aberto, compatıvel com a GPL
Marco Andre Lopes Mendes <[email protected]> Por que Python?
1 - Python e legalSimples e legıvel
Exemplos de programas (completos):
# Fibonacci
a=1
b=1
while a < 800:
print a,
a,b = b,a+b
# Primos
ehprimo = True
numero = input("Informe o numero: ")
i = 2
while i < numero:
if numero % i == 0:
ehprimo = False
break
i += 1
if ehprimo:
print "Primo: ", numero
else:
print numero , ’possui fator ’, i
# Fatorial
n = int(raw_input("Fatorial de: "))
fatorial = 1
print "%d! = " %n,
i = n
while i > 0:
fatorial = fatorial * i
print "%d" %i,
if i != 1: print ".",
i -= 1
Marco Andre Lopes Mendes <[email protected]> Por que Python?
1 - Python e legalClara e elegante
from math import sqrt
print "Primos: 2",
c, p, primos , limite = 1, 1, [2,], 1000
for numero in xrange(3,limite +1,2):
ehprimo = 1
for i in primos:
c += 1
if numero % i == 0:
ehprimo = 0
break
if i > sqrt(numero ):
break
if ehprimo:
primos.append(numero)
print numero ,
p += 1
print "\n\nForam encontrados %d numeros primos." %p
print "Foram necessarias %d comparacoes." %c
Marco Andre Lopes Mendes <[email protected]> Por que Python?
1 - Python e legalPoderosa e sofisticada
arquivo = open("emails.txt")
dominios = {}
for contato in arquivo:
resto , dominio = contato.split("@")
dominio = dominio.replace("\r\n", "")
if dominio in dominios:
dominios[dominio] += 1
else:
dominios[dominio] = 1
arquivo.close ()
arquivo = open("dominios.txt", "w")
print "%-30s - %-5s" %("Dominios", "Ocorrencias")
for dominio in dominios.keys ():
print "%-30s - %-5d" %(dominio , dominios[dominio ])
registro = "%s;%s\n" %(dominio , dominios[dominio ])
arquivo.write(registro)
arquivo.close ()
Marco Andre Lopes Mendes <[email protected]> Por que Python?
Razao 2:
Python ja vem com os acessorios
Marco Andre Lopes Mendes <[email protected]> Por que Python?
2 - Python ja vem com os acessoriose eles fazem a diferenca
import urllib
pagina = urllib.urlopen("http ://br-linux.org")
for linha in pagina:
if "node -title" not in linha:
tmp = linha.split(’>’ ,2)[2]
nome = tmp.split(’< ’ ,1)[0]
print nome
pagina.close()
a = set(open("pacotesInstalados -20080827. txt", "r"). readlines ())
b = set(open("pacotesInstalados -20080917. txt", "r"). readlines ())
diferenca = b - a
open("diferenca.txt", "w"). writelines(diferenca)
Marco Andre Lopes Mendes <[email protected]> Por que Python?
2 - Python ja vem com os acessoriose eles fazem a diferenca
arquivo = open("squid.log","r")
lista = arquivo.readlines ()
arquivo.close ()
sites =[]
for linha in lista:
try:
if "DENIED" in linha:
inicio = linha.index("//")
fim = linha.index("/",inicio +2)
site = linha[inicio +2:fim]
sites.append(site)
except:
pass
dicSites = {}
for site in sites:
dicSites[site] = dicSites.get(site ,0) + 1
listaSitesOrdenada = sorted(dicSites.items(), key=itemgetter (1))
Marco Andre Lopes Mendes <[email protected]> Por que Python?
2 - Python ja vem com os acessoriose eles fazem a diferenca
Bibliotecas:
1 persistencia de objetos
2 banco de dados
3 geracao de pdfs
4 geracao de graficos
5 protocolos de redes
6 web
7 criptografia
8 muito mais...
http://www.pythonbrasil.com.br/moin.cgi/CookBook
Marco Andre Lopes Mendes <[email protected]> Por que Python?
3 - Python e utilizado la forapor grandes organizacoes
http://web.archive.org/web/19990204033714/google.stanford.edu/about.html
Marco Andre Lopes Mendes <[email protected]> Por que Python?
3 - Python e utilizado la forapor grandes organizacoes
”Python tem sido uma parte importante do Google desde o inıcio,e permanece assim conforme o sistema cresce e evolui. Hoje,dezenas de engenheiros do Google usam Python, e estamosprocurando por mais pessoas com conhecimento nessalinguagem.”Peter Norvig, diretor de qualidade de busca do Google Inc.
http://www.pythonbrasil.com.br/moin.cgi/PythonNoGoogle
”[...] nossa filosofia geral e ’Python onde podemos, C++ ondesomos obrigados.’ Python nao e definitivamente apenas umpequeno pedaco, nem e usado apenas para tarefas ’de scripting’; seficassemos sem todo nosso codigo Python de uma hora para outra,nossa poderosa infra-estrutura que tem sido descrita como ’a armasecreta do Google’ ficaria abalada.”Alex Martelli, Lıder Tecnico,Sistemas de Producao, Google Inc.
http://groups.google.com/group/comp.lang.python/browse_thread/thread/af75a3e91a03ec18/
Marco Andre Lopes Mendes <[email protected]> Por que Python?
3 - Python e utilizado la forapor grandes organizacoes
Youtube
”Python e rapido o suficiente para o nosso site e permite que nosproduzamos caracterısticas que pode ser mantidas em temporecorde, com um mınimo de desenvolvedores.”Cuong Do, Arquiteto deSoftware, YouTube.com
http://www.python.org/about/quotes/
”O YouTube (uma das propriedades mais valiosas do Google) eessencialmente todo Python [...].”Alex Martelli, Lıder Tecnico, Sistemasde Producao, Google Inc.
http://groups.google.com/group/comp.lang.python/browse_thread/thread/af75a3e91a03ec18/
Marco Andre Lopes Mendes <[email protected]> Por que Python?
3 - Python e utilizado la forapor grandes organizacoes
Industrial Light and Magic
”Python desempenha um papel-chave no nosso esquema deproducao. Sem ela um projeto do tamanho de ’Guerras nasEstrelas: Episodio II’ teria sido muito difıcil de sair. Darenderizacao da multidao ao processamento em lote e acomposicao, Python mantem todas as partes unidas.”TommyBurnette, Diretor Tecnico Senior, ILM
”Quando me transferi [...], todos os membros da equipe [...] meacompanharam — menos Tommy. Ele [...] fora contratado pelaIndustrial Light & Magic[...]. Tommy se tornou um destacadoprogramador de linguagem Python, por sorte dele a linguagemescolhida pela empresa de Lucas. E sorte mesmo e quando opreparo se une a oportunidade. ”Randy Pausch, A Licao Final
http://www.python.org/about/quotes/
http://pythonologia.org/2008/09/24/a-licao-final/
Marco Andre Lopes Mendes <[email protected]> Por que Python?
3 - Python e utilizado la forapor grandes organizacoes
DreamWorks
”Gostarıamos de ser tudo Python, mas hoje ainda temos muito dePerl.”Ed Leonard, Diretor de Tecnologia de Animacao, DreamWorks
”A nossa equipe tem baseado a transicao de Perl para Python nafacilidade. Ha tres razoes primarias para isso. A criacao debindings em Python para uma biblioteca C++ e muito facil [...]. Anatureza orientada a objeto de Python e muito atraente [...]. EPython e uma cidada de primeira classe [...] na nossa industria. ”Darin Grant, Chefe de Producao de Tecnologia, DreamWorks
http://marrcandre.blogspot.com/2007/06/linux-alimentando-o-ogro.html
Marco Andre Lopes Mendes <[email protected]> Por que Python?
3 - Python e utilizado la forapor grandes organizacoes
Weta Digital
Criada por Peter Jackson. Responsavel pelos efeitos visuais datrilogia O Senhor dos Aneis. Ganhou tres Oscar por King Kong.
http://www.wetafx.co.nz/jobs/
Marco Andre Lopes Mendes <[email protected]> Por que Python?
3 - Python e utilizado la forapor grandes organizacoes
Diversos outros exemplos:
1 Nokia
2 RedHat
3 Canonical
4 OpenOffice
5 Blender
6 Gimp
http://www.python.org/about/success/
Marco Andre Lopes Mendes <[email protected]> Por que Python?
3 - Python e utilizado la foraem muitas aplicacoes
http://pt.wikipedia.org/wiki/Python
Marco Andre Lopes Mendes <[email protected]> Por que Python?
Razao 4:
Python e utilizado aqui dentro
Marco Andre Lopes Mendes <[email protected]> Por que Python?
4 - Python e utilizado aqui dentrocom sucesso
Async - Stoq: aplicativos livres para gestao comercial
http://www.async.com.br
Marco Andre Lopes Mendes <[email protected]> Por que Python?
4 - Python e utilizado aqui dentrocom sucesso
LZT - AutoSystem: automacao de postos de combustıvel
http://www.lzt.com.br/autosystem.php
Marco Andre Lopes Mendes <[email protected]> Por que Python?
4 - Python e utilizado aqui dentrocom sucesso
INdT - Instituto Nokia de Tecnologia
http://www.indt.org.br
Marco Andre Lopes Mendes <[email protected]> Por que Python?
4 - Python e utilizado aqui dentrocom sucesso
InVesalius - Reconstrucao 3D de imagens medicas
http://www.cenpra.gov.br/promed/software.htm
Marco Andre Lopes Mendes <[email protected]> Por que Python?
Razao 5:
Python e utilizado na web ao redor do mundo
Marco Andre Lopes Mendes <[email protected]> Por que Python?
5 - Python e utilizado na webao redor do mundo
Novell
http://www.novell.com/
Marco Andre Lopes Mendes <[email protected]> Por que Python?
5 - Python e utilizado na webao redor do mundo
CIA
https://www.cia.gov/
Marco Andre Lopes Mendes <[email protected]> Por que Python?
5 - Python e utilizado na webao redor do mundo
Outros sites:
1 Free Software Foundation
2 Baha’ı International Community
3 Nokia
4 CBS
5 OTAN
6 Oxfam America
7 Trolltech
8 AOL Music Canada
http://plone.net/sites/
http://code.djangoproject.com/wiki/DjangoPoweredSites
Marco Andre Lopes Mendes <[email protected]> Por que Python?
5 - Python e utilizado na webDjango e o Google App Engine
”Django foi a melhor coisa que aconteceu para o Python nosultimos anos.”Luciano Ramalho, Presidente, Associacao Python Brasil
http://code.google.com/intl/pt-BR/appengine/
http://www.djangoproject.com/
Marco Andre Lopes Mendes <[email protected]> Por que Python?
Razao 6:
Python e utilizado na web aqui no Brasil
Marco Andre Lopes Mendes <[email protected]> Por que Python?
6 - Python e utilizado na webaqui no Brasil
IDG Brasil
http://www.idg.com.br/
Marco Andre Lopes Mendes <[email protected]> Por que Python?
6 - Python e utilizado na webaqui no Brasil
Vericia - Busca de Imoveis
http://www.vericia.com
Marco Andre Lopes Mendes <[email protected]> Por que Python?
6 - Python e utilizado na webaqui no Brasil
Republica Federativa do Brasil
http://www.brasil.gov.br
Marco Andre Lopes Mendes <[email protected]> Por que Python?
6 - Python e utilizado na webaqui no Brasil
Muitos outros exemplos:
Camara dos deputados
Carta na Escola
CertiSign
Universidade Metodista
OAB/SP
Politec
Presidencia da Republica
SEBRAE
SERPRO
UNESCO Brasil
Varig
http://webinsider.uol.com.br/index.php/2006/08/28/python-e-opcao-para-desenvolvimento-web/
Marco Andre Lopes Mendes <[email protected]> Por que Python?
Razao 7:
Tem emprego para programadores Python
Marco Andre Lopes Mendes <[email protected]> Por que Python?
7 - Tem emprego para programadores Pythonsem sair daqui
Google Brasil - Belo Horizonte
http://www.google.com.br/support/jobs/bin/answer.py?answer=40943
Marco Andre Lopes Mendes <[email protected]> Por que Python?
7 - Tem emprego para programadores Pythonsem sair daqui
Globo.com
http://www.nabble.com/-Oportunidade-Estagio--globo.com---RJ---Barra-td22506890.html
Marco Andre Lopes Mendes <[email protected]> Por que Python?
7 - Tem emprego para programadores Pythonsem sair daqui
INdT - Recife
http://www.nabble.com/Oportunidade-Imperd%C3%ADvel-de-Emprego-no-Recife-p10955269.html
Marco Andre Lopes Mendes <[email protected]> Por que Python?
7 - Tem emprego para programadores Pythonsem sair daqui
Ao redor do Brasil - talvez da sua casa!
1 Async Open Source
2 LZT Informatica
3 IBM
4 Governo Brasileiro
5 Sebrae
6 SERPRO
7 Simples Consultoria
8 Weimar Consultoria
Bons programadores Python nao ficam sem emprego no Brasil
Marco Andre Lopes Mendes <[email protected]> Por que Python?
Razao 8:
Python conversa com outras linguagens
Marco Andre Lopes Mendes <[email protected]> Por que Python?
8 - Python conversa com as outras linguagense convive bem com elas
C e C++
void initspam(void);
static PyObject *spam_system(PyObject *self , PyObject *args);
static PyObject *spam_system(self , args)
PyObject *self;
PyObject *args; {
char *orden; int sts;
if (! PyArg_ParseTuple(args , "s", &orden))
return NULL;
sts = system(orden );
return Py_BuildValue("i", sts); }
static PyMethodDef SpamMethods [] = {
{"system", spam_system , METH_VARARGS},
{NULL , NULL} };
void
initspam (){( void) Py_InitModule("spam", SpamMethods );}
int main(int argc , char **argv){
Py_SetProgramName(argv [0]);
Py_Initialize ();
initspam ();
return 1; }
Marco Andre Lopes Mendes <[email protected]> Por que Python?
8 - Python conversa com as outras linguagense convive bem com elas
Java: Jython
import javax.swing as libswing
pnumero = libswing.JOptionPane.showInputDialog("Digite um Numero Inteiro: ")
snumero = libswing.JOptionPane.showInputDialog("Digite um Numero Inteiro: ")
soma = int(pnumero) + int(snumero)
libswing.JOptionPane.showMessageDialog(None , "Soma: %d " % soma)
http://www.linhadecodigo.com.br/Artigo.aspx?id=496
Marco Andre Lopes Mendes <[email protected]> Por que Python?
8 - Python conversa com as outras linguagense convive bem com elas
.Net: IronPython
import clr
clr.AddReference("System.Windows.Forms")
from System.Windows.Forms import *
class FormV3(Form):
def __init__(self):
self.Text = ’Hello World ’
self.Controls.Add(Label(Text=’Enter Message:’))
self.txtMessage = TextBox(Left =100)
self.Controls.Add(self.txtMessage)
msgButton = Button(Text=’Message ’, Left =20, Top =25)
msgButton.Click += self.OnMsgButtonClick
self.Controls.Add(msgButton)
def OnMsgButtonClick(self , *args):
MessageBox.Show(self.txtMessage.Text ,"Message")
Application.Run(FormV3 ())
http://www.codeplex.com/IronPython/Wiki/View.aspx?title=Samples
Marco Andre Lopes Mendes <[email protected]> Por que Python?
9 - Python e multiplataforma
1 Linux
2 Unix
3 Windows
4 MacOS
Ate aqui, nada de surpreendente, certo?
Marco Andre Lopes Mendes <[email protected]> Por que Python?
9 - Python e multiplataforma
Maemo
http://www.maemo.org
Marco Andre Lopes Mendes <[email protected]> Por que Python?
9 - Python e multiplataforma
XO/OLPCGrande parte do projeto e desenvolvida em Python, incluindo:
1 A interface grafica Sugar2 Varias aplicacoes e jogos3 O sistema de arquivos
http://wiki.laptop.org/go/Python
http://www.freesoftwaremagazine.com/blogs/olpc_kicks_off_pycon_2007
Marco Andre Lopes Mendes <[email protected]> Por que Python?
9 - Python e multiplataforma
PyS60 - Celulares Nokia Serie 60
http://wiki.opensource.nokia.com/projects/PyS60
Marco Andre Lopes Mendes <[email protected]> Por que Python?
9 - Python e multiplataforma
iPhone
O Django foi uma das primeiras aplicacoes complexas portadas
http://devlog.waltercruz.com/django_rodando_no_iphone
Marco Andre Lopes Mendes <[email protected]> Por que Python?
9 - Python e multiplataforma
Android
O Android permite o uso de Python como linguagem de script
http://www.mobiledev.com.br/2009/01/03/rodando-python-no-android/
Marco Andre Lopes Mendes <[email protected]> Por que Python?
10 - Python e multiparadigma
Programacao Estruturada
import random
def jogaDados ():
dado1 = random.randrange (1,7)
dado2 = random.randrange (1,7)
somaTemp = dado1 + dado2
print "Jogador tirou %d + %d = %d" %(dado1 ,dado2 ,somaTemp)
return somaTemp
soma = jogaDados ()
if soma == 7 or soma == 11:
situacaoJogo = "GANHOU"
elif soma == 2 or soma == 3 or soma == 12:
situacaoJogo = "PERDEU"
else:
situacaoJogo = "CONTINUA"
meuPonto = soma
print "Ponto: ", meuPonto
while situacaoJogo == "CONTINUA":
soma = jogaDados ()
if soma == meuPonto: situacaoJogo = "GANHOU"
elif soma == 7: situacaoJogo = "PERDEU"
if situacaoJogo == "GANHOU": print "Jogador ganha"
else: print "Jogador perde"
Marco Andre Lopes Mendes <[email protected]> Por que Python?
10 - Python e multiparadigma
Programacao Orientada a Objetos
class Fracao(object ):
def __mdc(self , m, n):
if m % n == 0:
return n
else:
return self.__mdc(n, m%n)
def __init__(self , numerador , denominador =1):
g = self.__mdc(numerador , denominador)
self.numerador = numerador / g
self.denominador = denominador / g
def __repr__(self):
return "%d/%d" %(self.numerador ,
self.denominador)
def __mul__(self ,outro):
if isinstance(outro , int):
outro = Fracao(outro)
return Fracao(self.numerador * outro.numerador ,
self.denominador * outro.denominador)
__rmul__ = __mul__
python -i poo -fracoes.py
>>> a = Fracao (5,7)
>>> b = Fracao (3,4)
>> r1 = a * b
>>> print r1
15/28
>>> c = Fracao (3,5)
>> r2 = a * c
>>> print r2
3/7
Marco Andre Lopes Mendes <[email protected]> Por que Python?
10 - Python e multiparadigma
Programacao Funcional
# Primos menores que 1000
print filter(None ,map(lambda y:y*reduce(lambda x,y:x*y!=0,
map(lambda x,y=y:y%x,range(2,int(pow(y,0.5)+1))) ,1) , range (2 ,1000)))
# Fibonacci : 10 primeiros numeros
print map(lambda x,f=lambda x,f:(x<=1) or (f(x-1,f)+f(x-2,f)): f(x,f),
range (10))
# Conjunto de Mandelbrot
print (lambda Ru ,Ro,Iu ,Io,IM,Sx ,Sy:reduce(lambda x,y:x+y,map(lambda y,
Iu=Iu,Io=Io ,Ru=Ru,Ro=Ro,Sy=Sy,L=lambda yc,Iu=Iu ,Io=Io,Ru=Ru,Ro=Ro,i=IM,
Sx=Sx,Sy=Sy:reduce(lambda x,y:x+y,map(lambda x,xc=Ru,yc=yc,Ru=Ru ,Ro=Ro ,
i=i,Sx=Sx,F=lambda xc ,yc,x,y,k,f=lambda xc ,yc,x,y,k,f:(k<=0)or (x*x+y*y
>=4.0) or 1+f(xc ,yc,x*x-y*y+xc ,2.0*x*y+yc,k-1,f):f(xc ,yc,x,y,k,f):chr(
64+F(Ru+x*(Ro-Ru)/Sx ,yc ,0,0,i)),range(Sx))):L(Iu+y*(Io-Iu)/Sy),range(Sy
))))( -2.1 , 0.7, -1.2, 1.2, 30, 80, 24)
http://www.pythonbrasil.com.br/moin.cgi/PythonFuncional
Marco Andre Lopes Mendes <[email protected]> Por que Python?
Bonus 1: 11 - Python e boa como primeira linguagemaprenda a programar com Python
1 Experiencia de ensino desde 2004
2 Varios iniciativas no Brasil e no mundo
3 MIT copiou nossa ideia :)
4 Faz bem a auto-estima do iniciante
5 Uso pode ser extrapolado para outras materias
http://www.amk.ca/diary/2006/11/mit_to_try_python_for_introduc.html
Marco Andre Lopes Mendes <[email protected]> Por que Python?
Bonus 2: 12 - Existe uma comunidade fortevoce tem com quem contar
1 Lista python-brasil: cerca de 500 mensagens por mes.
2 Associacao Python Brasil: amadurecimento da comunidade
3 Python Brasil: 5 edicoes de um evento de alto nıvel tecnico
4 FISL: nosso ”segundo”encontro anual
5 Diversos grupos de usuarios ao redor do Brasil
http://pythonbrasil.com.br
Marco Andre Lopes Mendes <[email protected]> Por que Python?
Agradecimentos
1 Eduardo Dutka
2 Eduardo da Silva
3 Elvis Pfutzenreuter
4 Erico Andrei
5 Humberto Diogenes
6 Mehran Misaghi
7 Osvaldo Santana Neto
8 Rodrigo Curvello
9 Rodrigo Senra
10 Ramiro Luz
E muito obrigado a todos voces pela presenca!
Marco Andre Lopes Mendes <[email protected]> Por que Python?
Discussao
Um de cada vez, por favor ;-)
Contato:
1 google*: [email protected]
2 blog: http://marrcandre.blogspot.com
3 slideshare: http://slideshare.com/marrcandre
4 twitter: @marrcandre
Muito obrigado!
Marco Andre Lopes Mendes <[email protected]> Por que Python?