porque python? semana acadêmica utfpr 2011

29
Por que Python? 10 raz˜ oes para aprender Python Marco Andr´ e Lopes Mendes <[email protected]> 23 de agosto de 2011 Marco Andr´ e Lopes Mendes <[email protected]> Por que Python?

Upload: marco-mendes

Post on 29-Jun-2015

456 views

Category:

Education


1 download

TRANSCRIPT

Page 1: Porque Python? Semana Acadêmica UTFPR 2011

Por que Python?10 razoes para aprender Python

Marco Andre Lopes Mendes <[email protected]>

23 de agosto de 2011

Marco Andre Lopes Mendes <[email protected]> Por que Python?

Page 2: Porque Python? Semana Acadêmica UTFPR 2011

Python Brasil[7]Encontro brasileiro da comunidade Python

Marco Andre Lopes Mendes <[email protected]> Por que Python?

Page 3: Porque Python? Semana Acadêmica UTFPR 2011

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 Membro da diretoria da APyB

Marco Andre Lopes Mendes <[email protected]> Por que Python?

Page 4: Porque Python? Semana Acadêmica UTFPR 2011

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]> Por que Python?

Page 5: Porque Python? Semana Acadêmica UTFPR 2011

1 - Python e legal

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")

for dominio in dominios.keys ():

registro = "%s;%s\n" %(dominio , dominios[dominio ])

arquivo.write(registro)

arquivo.close ()

1 Simples

2 Legıvel

3 Clara

4 Simplificada

5 Sofisticada

6 Poderosa

Marco Andre Lopes Mendes <[email protected]> Por que Python?

Page 6: Porque Python? Semana Acadêmica UTFPR 2011

2 - Python ja vem com os acessorios

Marco Andre Lopes Mendes <[email protected]> Por que Python?

Page 7: Porque Python? Semana Acadêmica UTFPR 2011

3 - Python e utilizado la fora

Marco Andre Lopes Mendes <[email protected]> Por que Python?

Page 8: Porque Python? Semana Acadêmica UTFPR 2011

3 - Python e utilizado la fora

Marco Andre Lopes Mendes <[email protected]> Por que Python?

Page 9: Porque Python? Semana Acadêmica UTFPR 2011

3 - Python e utilizado la fora

Marco Andre Lopes Mendes <[email protected]> Por que Python?

Page 10: Porque Python? Semana Acadêmica UTFPR 2011

4 - Python e utilizado aqui dentro

LZT: AutoSystem

Async: Stoq

Instituto Nokia de Tecnologia

InVesalius

Marco Andre Lopes Mendes <[email protected]> Por que Python?

Page 11: Porque Python? Semana Acadêmica UTFPR 2011

5 - Python e utilizado na web ao redor do mundo

Marco Andre Lopes Mendes <[email protected]> Por que Python?

Page 12: Porque Python? Semana Acadêmica UTFPR 2011

5 - Python e utilizado na web ao redor do mundo

Diversos frameworks

Marco Andre Lopes Mendes <[email protected]> Por que Python?

Page 13: Porque Python? Semana Acadêmica UTFPR 2011

6 - Python e utilizado na web aqui no Brasil

globo.com

uiner.com

vericia.com

brasil.gov.br

Marco Andre Lopes Mendes <[email protected]> Por que Python?

Page 14: Porque Python? Semana Acadêmica UTFPR 2011

6 - Python e utilizado na web aqui no Brasilucs.br

serpro.gov.br

certsign.com.br

atepassar.com.br

Marco Andre Lopes Mendes <[email protected]> Por que Python?

Page 15: Porque Python? Semana Acadêmica UTFPR 2011

7 - Tem emprego para programadores Pythonpython.org/community/jobs

twitter.com/python_jobs

empregos.trovitbrasil.com.br/python

google.com.br/intl/en/jobs/

Marco Andre Lopes Mendes <[email protected]> Por que Python?

Page 16: Porque Python? Semana Acadêmica UTFPR 2011

8 - Python conversa com as outras linguagens

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?

Page 17: Porque Python? Semana Acadêmica UTFPR 2011

8 - Python conversa com as outras linguagens

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)

Marco Andre Lopes Mendes <[email protected]> Por que Python?

Page 18: Porque Python? Semana Acadêmica UTFPR 2011

8 - Python conversa com as outras linguagens

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 ())

Marco Andre Lopes Mendes <[email protected]> Por que Python?

Page 19: Porque Python? Semana Acadêmica UTFPR 2011

8 - Python conversa com as outras linguagens

Marco Andre Lopes Mendes <[email protected]> Por que Python?

Page 20: Porque Python? Semana Acadêmica UTFPR 2011

9 - Python e multiplataforma

Ate aqui, nada de surpreendente, certo?

Marco Andre Lopes Mendes <[email protected]> Por que Python?

Page 21: Porque Python? Semana Acadêmica UTFPR 2011

9 - Python e multiplataforma

XO/OLPCGrande parte do projeto e desenvolvida em Python, incluindo:

1 A interface grafica Sugar

2 Varias aplicacoes e jogos

3 O sistema de arquivos

Marco Andre Lopes Mendes <[email protected]> Por que Python?

Page 22: Porque Python? Semana Acadêmica UTFPR 2011

9 - Python e multiplataforma

Dispositivos moveis

Maemo

Android

Iphone

Symbian

Marco Andre Lopes Mendes <[email protected]> Por que Python?

Page 23: Porque Python? Semana Acadêmica UTFPR 2011

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?

Page 24: Porque Python? Semana Acadêmica UTFPR 2011

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?

Page 25: Porque Python? Semana Acadêmica UTFPR 2011

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)

Marco Andre Lopes Mendes <[email protected]> Por que Python?

Page 26: Porque Python? Semana Acadêmica UTFPR 2011

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

Marco Andre Lopes Mendes <[email protected]> Por que Python?

Page 27: Porque Python? Semana Acadêmica UTFPR 2011

Bonus 2: 12 - Existe uma comunidade fortevoce tem com quem contar

1 Lista python-brasil: +3650 membros, 500 mensagens/mes.

2 Associacao Python Brasil: amadurecimento da comunidade

3 PythonBrasil[7]: Sao Paulo

4 FISL, Latinoware: trilhas de Python

5 Grupos de Usuarios, PythOn Campus, #horaextra

Marco Andre Lopes Mendes <[email protected]> Por que Python?

Page 28: Porque Python? Semana Acadêmica UTFPR 2011

Dorneles Tremea: 1979 - 2011

Marco Andre Lopes Mendes <[email protected]> Por que Python?

Page 29: Porque Python? Semana Acadêmica UTFPR 2011

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]> Por que Python?