conhencendo python e por que ela importa?

81
Conhecendo Python e Por que ele importa? Marcel Pinheiro Caraciolo X Encontro do PUG-PE 1

Upload: marcel-caraciolo

Post on 19-May-2015

4.002 views

Category:

Technology


10 download

DESCRIPTION

Palestra realizada no dia 10/02/2011 no X Encontro do Grupo de Usuários de Python na Livraria Cultura (Recife -Pernambuco). Palestra com o título: "Conhecendo Python e por que ela importa ? " Lecture presented at February 09th at X Meeting of Pernambuco Python User Group at Livraria Cultura (Recife - Pernambuco - Brazil) with the title: ' Meeting Python and why does it care ? "

TRANSCRIPT

Page 1: Conhencendo Python e por que ela importa?

Conhecendo Python e Por que ele importa?

Marcel Pinheiro Caraciolo

X Encontro do PUG-PE

1

Page 2: Conhencendo Python e por que ela importa?

Quem é o palestrante ?

• Marcel Pinheiro Caraciolo - @marcelcaraciolo

• Atualmente: Diretor de Pesquisa e Desenvolvimento (P&D) da Orygens

• Mestrando em ciência da computação pela UFPE

• Engenheiro da Computação pela POLI/UPE. (2008)

Experiência com computação móvel e inteligente:

• Blog Mobidéia: (http://www.mobideia.com) - Mobile

• Blog A.I. in motion (http://aimotion.blogspot.com) - I.A.

• Experiência com Python há mais de 2 anos. (Contribuições em frameworks I.A / mobile na comunidade open-source).

Membro e Moderador do Grupo de Usuários de Python de Pernambuco (PUG-PE)

X Encontro do PUG-PE

2

Page 3: Conhencendo Python e por que ela importa?

O que é python ?

‘Cobra’ em inglês ?

Sim, também!

X Encontro do PUG-PE

3

Page 4: Conhencendo Python e por que ela importa?

O que é python ?

!

!"#$%&'$!()*"+,

! -"+)($!()*"+.

! /0)1$2#"3&)454313'$6'7)&3"7$348'9$:;<=>$9147$%&'$?@?AA$'$

B151C

! D'E4F404313'$3'$GH34E"

! IJG40$12#'+34813"

! I1G409'+)'$'>)'+7K5'0$6?@?AAL$B151C

! M2'+$N"&#G'

! -13&#1L$3'73'$<OO<$6<P$1+"7C

Linguagem criada por Guido van Rossum em 1991

Nome inspirado no seriado Monty Python

X Encontro do PUG-PE

4

Page 5: Conhencendo Python e por que ela importa?

O que é python ?

X Encontro do PUG-PE

5

Page 6: Conhencendo Python e por que ela importa?

O que é python ?

É fácil

X Encontro do PUG-PE

5

Page 7: Conhencendo Python e por que ela importa?

Python é simples e legívelSemelhança ao pseudo-código

X Encontro do PUG-PE

6

Page 8: Conhencendo Python e por que ela importa?

Hello World Classíco... ‘hello world’ - Python vs { Java, C, PHP e Pascal }

X Encontro do PUG-PE

7

Page 9: Conhencendo Python e por que ela importa?

Hello World Classíco.... Em Python ....

print “Hello World”

X Encontro do PUG-PE

8

Page 10: Conhencendo Python e por que ela importa?

O que é python ?

É fácil

X Encontro do PUG-PE

9

Page 11: Conhencendo Python e por que ela importa?

O que é python ?

É fácil

É poderoso

X Encontro do PUG-PE

9

Page 12: Conhencendo Python e por que ela importa?

Canivete suíçoTipagem dinâmica

Biblioteca padrão completa

Multi-paradigma

Multi-plataforma

Facilmente extensível

Free Software (GPL)

X Encontro do PUG-PE

10

Page 13: Conhencendo Python e por que ela importa?

...E já vem com acessórios import urllib2from BeautifulSoup import BeautifulSoup

url = "http://www.google.com"

request = urllib2.Request(url)response = urllib2.urlopen(request)document = response.read()soup = BeautifulSoup(document) #normaliza o documento para que o mesmo seja acessível via objetos

links = soup.findAll('a') # retorna uma lista com todos os links do documento

for link in links: print link['href']

X Encontro do PUG-PE

11

Page 14: Conhencendo Python e por que ela importa?

...E já vem com acessórios Persistência de Objetos

Banco de Dados

Geração de Pdfs

Protocolos de Rede

Criptografia

etc.

X Encontro do PUG-PE

12

Page 15: Conhencendo Python e por que ela importa?

O que é python ?

É fácil

É poderosoÉ poderoso

X Encontro do PUG-PE

13

Page 16: Conhencendo Python e por que ela importa?

O que é python ?

É fácil

É poderosoÉ poderoso

É divertido

X Encontro do PUG-PE

13

Page 17: Conhencendo Python e por que ela importa?

Fácil e poderoso!

lista = ['laranja', 'banana', 'uva']

lista.sort()

 

for item in lista:

    print item.capitalize()

X Encontro do PUG-PE

14

Page 18: Conhencendo Python e por que ela importa?

Hun, sei o que é Python!

...E agora como eu começo ?

X Encontro do PUG-PE

15

Page 19: Conhencendo Python e por que ela importa?

E como eu começo ?!Interpretador Python disponível para diversas plataformas.

http://www.python.org/download

http://www.python.org/X Encontro do PUG-PE

16

Page 20: Conhencendo Python e por que ela importa?

E como eu começo ?!

X Encontro do PUG-PE

17

Page 21: Conhencendo Python e por que ela importa?

E como eu começo ?!

Diversos editores com suporte para desenvolvimento em Python

X Encontro do PUG-PE

18

Page 22: Conhencendo Python e por que ela importa?

E como eu começo ?!

Diversos editores com suporte para desenvolvimento em Python

X Encontro do PUG-PE

18

Page 23: Conhencendo Python e por que ela importa?

... e por que Python ?

X Encontro do PUG-PE

19

Page 24: Conhencendo Python e por que ela importa?

... e por que Python ?

8 motivos !

X Encontro do PUG-PE

19

Page 25: Conhencendo Python e por que ela importa?

... e por que Python ?

1. Python é fácil e divertido

X Encontro do PUG-PE

20

Page 26: Conhencendo Python e por que ela importa?

Python é legal!

list_of_infiles = [‘file1.txt’, ‘file2.txt’, ‘file3.txt’]for file in list_of_infiles: file = open(file, ‘r’).read().replace(‘;’,’t’) out = open(‘fileOut.txt’,‘a’).write(file) out.close() file.close()

X Encontro do PUG-PE

Com alguns comandos e eu posso copiar, ler e escrever arquivos!

21

Page 27: Conhencendo Python e por que ela importa?

... e por que Python ?

2. Python é poderoso

X Encontro do PUG-PE

22

Page 28: Conhencendo Python e por que ela importa?

Python é multi-paradigma

def partition(list, l, e, g): if list == []: return (l, e, g) else: head = list[0] if head < e[0]: return partition(list[1:], l + [head], e, g) elif head > e[0]: return partition(list[1:], l, e, g + [head]) else: return partition(list[1:], l, e + [head], g)

• Programação Estruturada

X Encontro do PUG-PE

23

Page 29: Conhencendo Python e por que ela importa?

Python é multi-paradigma

class Quicksort(object):

def __init__(self,list): self.list = list

def partition(self,list,l, e, g): if self.list == []: return (l, e, g) else: head = self.list[0] if head < e[0]: return partition(self.list[1:], l + [head], e, g) elif head > e[0]: return partition(self.list[1:], l, e, g + [head]) else: return partition(self.list[1:], l, e + [head], g)

• Programação orientada a objetos

X Encontro do PUG-PE

24

Page 30: Conhencendo Python e por que ela importa?

Python é multi-paradigma

• Programação funcional

def qsort(L): if len(L) <= 1: return L return qsort( [ lt for lt in L[1:] if lt < L[0] ] ) + [ L[0] ] + \ qsort( [ ge for ge in L[1:] if ge >= L[0] ] )

X Encontro do PUG-PE

25

Page 31: Conhencendo Python e por que ela importa?

Python é multi-paradigma

• Programação pythônica

list.sort()

X Encontro do PUG-PE

26

Page 32: Conhencendo Python e por que ela importa?

Python é multi-plataforma

Linux, Unix, Windows, Mac OS...

Até aqui nada surpreendente, certo ?

X Encontro do PUG-PE

27

Page 33: Conhencendo Python e por que ela importa?

Python é multi-plataforma• Python em dispositivos móveis

• Python for Symbian (PyS60), PySide (Maemo), ASE (Android)

X Encontro do PUG-PE

28

Page 34: Conhencendo Python e por que ela importa?

Python é multi-plataforma

• PyMT

• Python Multi Touch

• Especialmente criado para ambientes multi-touch

X Encontro do PUG-PE

http://pymt.eu/

29

Page 35: Conhencendo Python e por que ela importa?

Python é multi-plataforma

• E até no Iphone!!

• Django portado para Iphone

http://www.webmonkey.com/2007/08/running_django_on_the_iphone/

http://leepa.github.com/django-iphone-push/

http://code.google.com/p/django-mobileadmin/

X Encontro do PUG-PE

30

Page 36: Conhencendo Python e por que ela importa?

E tem vários acessórios!

NetworkXhttp://pypi.python.org/pypi

X Encontro do PUG-PE

31

Page 37: Conhencendo Python e por que ela importa?

... e por que Python ?

3. Python é utilizado ao redor do mundo

X Encontro do PUG-PE

32

Page 38: Conhencendo Python e por que ela importa?

Python é utilizado lá fora

II Encontro Livre - Recife - PernambucoX Encontro do PUG-PE

33

Page 39: Conhencendo Python e por que ela importa?

... e aqui no Brasil também!

X Encontro do PUG-PE

34

Page 40: Conhencendo Python e por que ela importa?

Python entre as 10 + !

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

X Encontro do PUG-PE

35

Page 41: Conhencendo Python e por que ela importa?

Depoimentos sobre PythonGoogle:

Industrial Light & Magic:

"Python tem tido um papel importante dentro do Google desde o início, e continua sendo à medida que nosso sistema cresce e evolui. Hoje vários engenheiros do Google usam Python, e nós estamos procurando mais pessoas com habilidades nesta linguagem.” - Peter Norvig, Diretor de Qualidade de Pesquisa, Google Inc.

“Python desempenha um papel fundamental em nosso esquema de produção. Sem ele um projeto do tamanho do filme Star Wars: Episode II seria impossível sair do papel. Desde renderização de personagens a processamento em lote na composição da trilha, Python integra tudo facilmente.” - Tommy Burnette, Diretor Técnico Senior, Industrial Light&Magic Inc.

X Encontro do PUG-PE

36

Page 42: Conhencendo Python e por que ela importa?

Depoimentos sobre PythonMameluco - Projeto Social Cats

Orygens:

Instituto Nokia de Tecnologia:[...] “Desenvolvemos bindings de Qt(C++) para Python: PySide. Python me chamou atenção por ser usado na maioria dos projetos open source dos quais sou usuário. Aprender Python foi muito rápido e o código é muito agradável de ler.[...] Recomendaria Python a qualquer um, [...] creio que só não recomendaria para

quem gosta de declarar os tipos e suas variáveis previamente.” Marcelo Lira, Desenvolvedor, INDT

“Escolhemos Python nos nossos projetos por ser uma linguagem madura e de fácil aprendizado e com uma comunidade ativa de usuários. Além de atender nossas necessidades, até nosso designer está aprendendo

desenvolver em Python/Django e está achando muito simples. Nós prentendemos usá-lo em vários outros projetos da Orygens [...]. Além da simplicação do desenvolvimento web, [...] reduziu a complexidade e

tempo em um novo projeto”. Rafael Carício - CTO - http://atepassar.com

“Nós da Mameluco escolhemos Python desde o início do nosso primeiro projeto, o website CATS. [..] Conseguimos instalar a plataforma de desenvolvimento, configurá-lo no IDE Eclipse e escrever um ‘Hello

World’ em questão de minutos. [...] Durante o desenvolvimento do CATS, trabalhei muito com JavaEE em outro projeto. A dificuldade de configuração, necessidade de ler centenas de páginas e pouca expressividade

me fizeram abandonar Java como Primeira linguagem. Foi Python mesmo que encontrei a maneira mais natural de programar servidores, clientes HTTP e serviços REST.” Flávio Juvenal - CTO - Mameluco

X Encontro do PUG-PE

37

Page 43: Conhencendo Python e por que ela importa?

PyGame e Jogos

http://www.pygame.org/news.html

X Encontro do PUG-PE

38

Page 44: Conhencendo Python e por que ela importa?

Aplicativos Desktop

http://svn.softwarepublico.gov.br/trac/invesalius

X Encontro do PUG-PE

39

Page 45: Conhencendo Python e por que ela importa?

Aplicativos Desktop

http://www.blender.org/

X Encontro do PUG-PE

40

Page 46: Conhencendo Python e por que ela importa?

Aplicativos Desktop

http://www.stoq.com.br/

X Encontro do PUG-PE

http://taskcoach.org/

41

Page 47: Conhencendo Python e por que ela importa?

Aplicativos Desktop

Python + Qt + Qml

X Encontro do PUG-PE

42

Page 48: Conhencendo Python e por que ela importa?

... e por que Python ?

4. Python é utilizado na web ao redor do mundo

X Encontro do PUG-PE

43

Page 49: Conhencendo Python e por que ela importa?

Web lá fora!

http://www.nationalgeographic.com/

http://www.youtube.com/

http://sourceforge.net/

X Encontro do PUG-PE

http://pt.reddit.com/

44

Page 50: Conhencendo Python e por que ela importa?

Web aqui dentro!

http://www.receita.fazenda.gov.br/ http://atepassar.com/

http://www.brasil.gov.br/, http://www.vericia.com/, http://www.dapress.com.br/, http://filmow.com , etc.

X Encontro do PUG-PE

45

Page 51: Conhencendo Python e por que ela importa?

... e por que Python ?

5. Há empregos para desenvolvedores Python

X Encontro do PUG-PE

46

Page 52: Conhencendo Python e por que ela importa?

Por aqui...

X Encontro do PUG-PE

47

Page 53: Conhencendo Python e por que ela importa?

Por aqui...

http://empregos.trovitbrasil.com.br/python,

X Encontro do PUG-PE

listas de discussão, ...

48

Page 54: Conhencendo Python e por que ela importa?

Por lá...

http://www.python.org/community/jobs/

X Encontro do PUG-PE

49

Page 55: Conhencendo Python e por que ela importa?

Por lá...

http://www.python.org/community/jobs/

0

15

30

45

60

49

37

56

19Nov-2010

Dec-2010Jan-2011

Feb-2011

Número de ofertas de emprego

X Encontro do PUG-PE

50

Page 56: Conhencendo Python e por que ela importa?

Até em casa!

http://www.freelancer.com/projects/

X Encontro do PUG-PE

51

Page 57: Conhencendo Python e por que ela importa?

... e por que Python ?

6. Conversa bem com outras linguagens

X Encontro do PUG-PE

52

Page 58: Conhencendo Python e por que ela importa?

Python e C/C++static PyObject *my_callback = NULL;

static PyObject *my_set_callback(PyObject *dummy, PyObject *args){ PyObject *result = NULL; PyObject *temp;

if (PyArg_ParseTuple(args, "O:set_callback", &temp)) { if (!PyCallable_Check(temp)) { PyErr_SetString(PyExc_TypeError, "parameter must be callable"); return NULL; } Py_XINCREF(temp); /* Add a reference to new callback */ Py_XDECREF(my_callback); /* Dispose of previous callback */ my_callback = temp; /* Remember new callback */ /* Boilerplate to return "None" */ Py_INCREF(Py_None); result = Py_None; } return result;}

Você pode extender Python ou usá-lo em

códigos C/C++

http://docs.python.org/extending/extending.html

X Encontro do PUG-PE

53

Page 59: Conhencendo Python e por que ela importa?

Python e Java

import javax.swing as sshwingfirstNum = sshwing.JOptionPane.showInputDialog(“Enter an integer:”)scndNum = sshwing.JOptionPane.showInputDialog(“Enter an integer:”)sum = int(firstNum) +   int(scndNum)sshwing.JOptionPane.showMessageDialog(None, “The sum of your integers is %d “ % sum)

http://www.jython.org/

X Encontro do PUG-PE

54

Page 60: Conhencendo Python e por que ela importa?

Python e .Net

import syssys.path.append(r’C:\Python25\Lib’)import clrclr.AddReference(“System.Windows.Forms”)from System.Windows.Forms import Application,Formclass Hello World(Form): def __init__(self): self.Text = ʻHello Worldʼ self.Name = ʻHello Worldʼ

form = HelloWorld(Form)Application.Run(Form

http://ironpython.net/

X Encontro do PUG-PE

55

Page 61: Conhencendo Python e por que ela importa?

Python e muito mais!

http://claymore.engineer.gvsu.edu/~steriana/Python/pymat.html

PyMat - Matlab

http://rpy.sourceforge.net/

http://code.google.com/p/pyswip/

http://appscript.sourceforge.net/

X Encontro do PUG-PE

56

Page 62: Conhencendo Python e por que ela importa?

Interpretada, e o desempenho?

0

50

100

150

200

Sun JDK 1.6.0 C++ 4.13 Python + Psyco Python 2.5.1

Lines of codeTime per iteration (ms)

“Não fique apenas com o conhecimento que você tem do código.”

Módulos para Python escritos em C. (Extensões): Ex: PyRex

PyPy: Implementação da linguagem Python em Python (Otimizando a linguagem).

Psyco: Compilador para Python que gera código nativo da máquina (2x - 100x)

http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/

X Encontro do PUG-PE

http://pypy.org

http://psyco.sourceforge.net/

57

Page 63: Conhencendo Python e por que ela importa?

... e por que Python ?

7. Uma boa linguagem para quem está começando!

X Encontro do PUG-PE

58

Page 64: Conhencendo Python e por que ela importa?

Aprendar programar com Python

http://ark4n.wordpress.com/python/ http://www.aprendendodjango.com/

http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-00Fall-2008/CourseHome/index.htm

X Encontro do PUG-PE

59

Page 65: Conhencendo Python e por que ela importa?

Aprendar programar com Python

Universidade Federal Rural de Pernambuco já adota Python

Bacharelado em Sistemas de Informação

Licenciatura em Física

Licenciatura em Computação

[...] O curso BSI-UFRPE tem como Python a LP oficial do curso! Todas as disciplinas que envolvem programação [...], usam Python! Recentemente tenho experimentado usar algo que é fantástico em Python para ensinar a programar: Python é híbrida. [...] O resultado desta experiência está sendo organizado em um texto [...], e

pretendo transformá-lo até o fim do ano em um livro, cujo título provisório é ‘Python como Primeira LP: Uma abordagem Imperativa, Funcional e Orientada a Objetos”. Prof. PHD Wilson Rosa - Pesquisador UFRPE

X Encontro do PUG-PE

60

Page 66: Conhencendo Python e por que ela importa?

... e por que Python ?

8. Uma comunidade forte com que você pode contar!

X Encontro do PUG-PE

61

Page 67: Conhencendo Python e por que ela importa?

24 hrs ao seu dispor!

http://br.groups.yahoo.com/group/python-brasil/

X Encontro do PUG-PE

62

Page 68: Conhencendo Python e por que ela importa?

PUG - PE

Grupo de usuários de Python de Pernambuco

http://groups.google.com/group/pug-pe?hl=pt-BRX Encontro do PUG-PE

63

Page 69: Conhencendo Python e por que ela importa?

Razão bônus!

9. Permite expor suas idéias de forma rápida!

X Encontro do PUG-PE

64

Page 70: Conhencendo Python e por que ela importa?

TransitoRecife (Web)Monitorando o trânsito de algumas vias do Recife

X Encontro do PUG-PE

65

Page 71: Conhencendo Python e por que ela importa?

TransitoRecife (Web)Monitorando o trânsito de algumas vias do Recife

X Encontro do PUG-PE

65

Page 72: Conhencendo Python e por que ela importa?

TransitoRecife (Web)Monitorando o trânsito de algumas vias do Recife

http://twitter.com/transitoRE

X Encontro do PUG-PE

65

Page 73: Conhencendo Python e por que ela importa?

TransitoRecife (Web)Monitorando o trânsito de algumas vias do Recife

http://twitter.com/transitoRE

X Encontro do PUG-PE

65

Page 74: Conhencendo Python e por que ela importa?

TransitoRecife (Web)Monitorando o trânsito de algumas vias do Recife

Apenas 65 linhas de código!http://twitter.com/transitoRE

X Encontro do PUG-PE

65

Page 75: Conhencendo Python e por que ela importa?

TransitoRecife (Celular)... E também via celular!

TransitoRecife no Nokia E63

66

Page 76: Conhencendo Python e por que ela importa?

TransitoRecife (Celular)... E também via celular!

TransitoRecife no Nokia E63

66

Page 77: Conhencendo Python e por que ela importa?

TransitoRecife (Celular)... E também via celular!

TransitoRecife no Nokia E63

66

Page 78: Conhencendo Python e por que ela importa?

TransitoRecife (Celular)... E também via celular!

TransitoRecife no Nokia E63

66

Page 80: Conhencendo Python e por que ela importa?

Chegamos ao fim !!

Hora da random.choice([pergunta, dúvida, discussão]) !!

X Encontro do PUG-PE

68

Page 81: Conhencendo Python e por que ela importa?

Conhecendo Python e Por que ele importa?

Marcel Pinheiro Caracioloemail: [email protected]

twitter: marcelcaraciolo

X Encontro do PUG-PE

69