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 ? "
2. 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
3. O que é python ?
‘Cobra’ em inglês ?
Sim, também!
X Encontro do PUG-PE
3
4. O que é python ?
Linguagem criada por Guido van Rossum em 1991
!
!"#$%&'$!()*"+,
Nome inspirado no seriado Monty 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'
! -13L$3'73'$<OO<$6<P$ X Encontro do PUG-PE
1+"7C
4
13. ...E já vem com acessórios
import urllib2
from 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
14. ...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
15. O que é python ?
É fácil
É poderoso
X Encontro do PUG-PE
13
16. O que é python ?
É fácil
É poderoso
É divertido
X Encontro do PUG-PE
13
18. Hun, sei o que é Python!
...E agora como eu começo ?
X Encontro do PUG-PE
15
19. 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
21. E como eu começo ?!
Diversos editores com suporte para
desenvolvimento em Python
X Encontro do PUG-PE
18
22. E como eu começo ?!
Diversos editores com suporte para
desenvolvimento em Python
X Encontro do PUG-PE
18
23. ... e por que Python ?
X Encontro do PUG-PE
19
24. ... e por que Python ?
8 motivos !
X Encontro do PUG-PE
19
25. ... e por que Python ?
1. Python é fácil e divertido
X Encontro do PUG-PE
20
26. Python é legal!
Com alguns comandos e eu posso copiar, ler e escrever
arquivos!
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
21
27. ... e por que Python ?
2. Python é poderoso
X Encontro do PUG-PE
22
28. Python é multi-paradigma
• Programação Estruturada
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)
X Encontro do PUG-PE
23
29. Python é multi-paradigma
• Programação orientada a objetos
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)
X Encontro do PUG-PE
24
30. 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
32. Python é multi-plataforma
Linux, Unix, Windows, Mac OS...
Até aqui nada surpreendente, certo ?
X Encontro do PUG-PE
27
33. Python é multi-plataforma
• Python em dispositivos móveis
• Python for Symbian (PyS60), PySide (Maemo), ASE (Android)
X Encontro do PUG-PE
28
34. Python é multi-plataforma
• PyMT
• Python Multi Touch
• Especialmente criado para
ambientes multi-touch
http://pymt.eu/
X Encontro do PUG-PE
29
35. 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
36. E tem vários acessórios!
NetworkX
http://pypi.python.org/pypi
X Encontro do PUG-PE
31
37. ... e por que Python ?
3. Python é utilizado ao redor do mundo
X Encontro do PUG-PE
32
38. Python é utilizado lá fora
II Encontro X Encontro do Pernambuco
Livre - Recife - PUG-PE
33
39. ... e aqui no Brasil também!
X Encontro do PUG-PE
34
40. Python entre as 10 + !
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
X Encontro do PUG-PE
35
41. Depoimentos sobre Python
Google:
"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.
Industrial Light & Magic:
“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
42. Depoimentos sobre Python
Mameluco - Projeto Social Cats
“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
Orygens:
“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
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
X Encontro do PUG-PE
37
43. PyGame e Jogos
http://www.pygame.org/news.html
X Encontro do PUG-PE
38
54. Por lá...
http://www.python.org/community/jobs/
X Encontro do PUG-PE
49
55. Por lá...
Número de ofertas de emprego
60
49 56
45
37
30
19
15
Nov-2010
Dec-2010 0
Jan-2011
Feb-2011
http://www.python.org/community/jobs/
X Encontro do PUG-PE
50
56. Até em casa!
http://www.freelancer.com/projects/
X Encontro do PUG-PE
51
57. ... e por que Python ?
6. Conversa bem com outras linguagens
X Encontro do PUG-PE
52
58. 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)) {
Você pode extender
}
PyErr_SetString(PyExc_TypeError, "parameter must be callable");
return NULL; Python ou usá-lo em
Py_XINCREF(temp); /* Add a reference to new callback */
Py_XDECREF(my_callback); /* Dispose of previous callback */
my_callback = temp; /* Remember new callback */
códigos C/C++
/* Boilerplate to return "None" */
Py_INCREF(Py_None);
result = Py_None;
}
return result;
}
http://docs.python.org/extending/extending.html
X Encontro do PUG-PE
53
59. Python e Java
import javax.swing as sshwing
firstNum = 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
60. Python e .Net
import sys
sys.path.append(r’C:Python25Lib’)
import clr
clr.AddReference(“System.Windows.Forms”)
from System.Windows.Forms import Application,Form
class 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
61. Python e muito mais!
PyMat - Matlab
http://claymore.engineer.gvsu.edu/~steriana/Python/pymat.html http://rpy.sourceforge.net/
http://code.google.com/p/pyswip/
http://appscript.sourceforge.net/
X Encontro do PUG-PE
56
62. Interpretada, e o desempenho?
“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).
http://pypy.org
Psyco: Compilador para Python que gera código nativo da máquina (2x - 100x)
http://psyco.sourceforge.net/
200
150
100 Lines of code
Time per iteration (ms)
50
0
Sun JDK 1.6.0 C++ 4.13 Python + Psyco Python 2.5.1
http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/
X Encontro do PUG-PE
57
63. ... e por que Python ?
7. Uma boa linguagem para quem está começando!
X Encontro do PUG-PE
58
64. 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
65. 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
66. ... e por que Python ?
8. Uma comunidade forte com que você pode contar!
X Encontro do PUG-PE
61
67. 24 hrs ao seu dispor!
http://br.groups.yahoo.com/group/python-brasil/
X Encontro do PUG-PE
62
68. PUG - PE
Grupo de usuários de Python de
Pernambuco
http://groups.google.com/group/pug-pe?hl=pt-BR
X Encontro do PUG-PE
63
69. Razão bônus!
9. Permite expor suas idéias de forma rápida!
X Encontro do PUG-PE
64
74. TransitoRecife (Web)
Monitorando o trânsito de algumas vias do Recife
http://twitter.com/transitoRE
Apenas 65 linhas de código!
X Encontro do PUG-PE
65
79. Referências
http://www.slideshare.net/marcoandre/porque-python-fisl-90 (Marcos André - FISL 9)
http://www.slideshare.net/flavioribeiro/introduo-a-linguagem-de-programao-python-presentation
http://www.python.org/
http://www.pythonbrasil.org.br/
http://ark4n.wordpress.com/python/
E-mails, Listas, Fóruns, conversas no Google Talk, etc.
X Encontro do PUG-PE
67
80. Chegamos ao fim !!
Hora da random.choice([pergunta, dúvida, discussão]) !!
X Encontro do PUG-PE
68
81. Conhecendo Python e
Por que ele importa?
Marcel Pinheiro Caraciolo
email: caraciol@gmail.com
twitter: marcelcaraciolo
X Encontro do PUG-PE
69