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

Por que Python? Latinoware 2011

May 26, 2015

Download

Education

Marco Mendes
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Por que Python? Latinoware 2011

Por que Python?10 razoes para aprender Python

Marco Andre Lopes Mendes <[email protected]>

20 de outubro de 2011

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

Page 2: Por que Python? Latinoware 2011

Uma breve introducaodesse que vos fala

1 Mestre em Ciencia da Computacao pela UFSC

2 Professor do Instituto Federal Catarinense

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)

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

Page 3: Por que Python? Latinoware 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 4: Por que Python? Latinoware 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 5: Por que Python? Latinoware 2011

2 - Python ja vem com os acessorios

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

Page 6: Por que Python? Latinoware 2011

3 - Python e utilizado la fora

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

Page 7: Por que Python? Latinoware 2011

3 - Python e utilizado la fora

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

Page 8: Por que Python? Latinoware 2011

3 - Python e utilizado la fora

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

Page 9: Por que Python? Latinoware 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 10: Por que Python? Latinoware 2011

5 - Python e utilizado na web ao redor do mundo

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

Page 11: Por que Python? Latinoware 2011

5 - Python e utilizado na web ao redor do mundo

Diversos frameworks

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

Page 12: Por que Python? Latinoware 2011

6 - Python e utilizado na web aqui no Brasil

brasil.gov.br

uiner.com

globo.com

vericia.com

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

Page 13: Por que Python? Latinoware 2011

6 - Python e utilizado na web aqui no Brasil

ucs.br

serpro.gov.br

certsign.com.br

atepassar.com.br

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

Page 14: Por que Python? Latinoware 2011

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

empregos.trovitbrasil.com.br/python

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

twitter.com/python_jobs

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

Page 15: Por que Python? Latinoware 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 16: Por que Python? Latinoware 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 17: Por que Python? Latinoware 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 18: Por que Python? Latinoware 2011

8 - Python conversa com as outras linguagens

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

Page 19: Por que Python? Latinoware 2011

9 - Python e multiplataforma

Ate aqui, nada de surpreendente, certo?

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

Page 20: Por que Python? Latinoware 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 21: Por que Python? Latinoware 2011

9 - Python e multiplataforma

Dispositivos moveis

Android

Symbian

Iphone

Meego/Maemo

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

Page 22: Por que Python? Latinoware 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 23: Por que Python? Latinoware 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 24: Por que Python? Latinoware 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 25: Por que Python? Latinoware 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 26: Por que Python? Latinoware 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, 400+ participantes

4 FISL, Latinoware: trilhas de Python

5 Grupos de Usuarios, PythOn Campus, #horaextra

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

Page 27: Por que Python? Latinoware 2011

Python Brasil[7]Encontro brasileiro da comunidade Python

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

Page 28: Por que Python? Latinoware 2011

Dorneles Tremea: 1979 - 2011

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

Page 29: Por que Python? Latinoware 2011

1 Estes slides: slideshare.com/marrcandre

2 google*: [email protected]

3 twitter: @marrcandre

4 blog: marrcandre.blogspot.com

Para mais detalhes:

1 Python, a arma secreta do Google:slideshare.net/ramalho/python-a-arma-secreta-do-google

2 Python: cabe no seu bolso, no seu micro, no seu cerebro:slideshare.net/rodsenra/unicampago2010pdf

random.choice([’pergunta’, ’duvida’, ’discussao’])

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