Post on 19-May-2015
description
Conhecendo Python e Por que ele importa?
Marcel Pinheiro Caraciolo
X Encontro do PUG-PE
1
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
O que é python ?
‘Cobra’ em inglês ?
Sim, também!
X Encontro do PUG-PE
3
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'
! -13L$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
O que é python ?
X Encontro do PUG-PE
5
O que é python ?
É fácil
X Encontro do PUG-PE
5
Python é simples e legívelSemelhança ao pseudo-código
X Encontro do PUG-PE
6
Hello World Classíco... ‘hello world’ - Python vs { Java, C, PHP e Pascal }
X Encontro do PUG-PE
7
Hello World Classíco.... Em Python ....
print “Hello World”
X Encontro do PUG-PE
8
O que é python ?
É fácil
X Encontro do PUG-PE
9
O que é python ?
É fácil
É poderoso
X Encontro do PUG-PE
9
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
...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
...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
O que é python ?
É fácil
É poderosoÉ poderoso
X Encontro do PUG-PE
13
O que é python ?
É fácil
É poderosoÉ poderoso
É divertido
X Encontro do PUG-PE
13
Fácil e poderoso!
lista = ['laranja', 'banana', 'uva']
lista.sort()
for item in lista:
print item.capitalize()
X Encontro do PUG-PE
14
Hun, sei o que é Python!
...E agora como eu começo ?
X Encontro do PUG-PE
15
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
E como eu começo ?!
X Encontro do PUG-PE
17
E como eu começo ?!
Diversos editores com suporte para desenvolvimento em Python
X Encontro do PUG-PE
18
E como eu começo ?!
Diversos editores com suporte para desenvolvimento em Python
X Encontro do PUG-PE
18
... e por que Python ?
X Encontro do PUG-PE
19
... e por que Python ?
8 motivos !
X Encontro do PUG-PE
19
... e por que Python ?
1. Python é fácil e divertido
X Encontro do PUG-PE
20
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
... e por que Python ?
2. Python é poderoso
X Encontro do PUG-PE
22
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
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
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
Python é multi-paradigma
• Programação pythônica
list.sort()
X Encontro do PUG-PE
26
Python é multi-plataforma
Linux, Unix, Windows, Mac OS...
Até aqui nada surpreendente, certo ?
X Encontro do PUG-PE
27
Python é multi-plataforma• Python em dispositivos móveis
• Python for Symbian (PyS60), PySide (Maemo), ASE (Android)
X Encontro do PUG-PE
28
Python é multi-plataforma
• PyMT
• Python Multi Touch
• Especialmente criado para ambientes multi-touch
X Encontro do PUG-PE
http://pymt.eu/
29
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
E tem vários acessórios!
NetworkXhttp://pypi.python.org/pypi
X Encontro do PUG-PE
31
... e por que Python ?
3. Python é utilizado ao redor do mundo
X Encontro do PUG-PE
32
Python é utilizado lá fora
II Encontro Livre - Recife - PernambucoX Encontro do PUG-PE
33
... e aqui no Brasil também!
X Encontro do PUG-PE
34
Python entre as 10 + !
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
X Encontro do PUG-PE
35
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
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
PyGame e Jogos
http://www.pygame.org/news.html
X Encontro do PUG-PE
38
Aplicativos Desktop
http://svn.softwarepublico.gov.br/trac/invesalius
X Encontro do PUG-PE
39
Aplicativos Desktop
http://www.blender.org/
X Encontro do PUG-PE
40
Aplicativos Desktop
http://www.stoq.com.br/
X Encontro do PUG-PE
http://taskcoach.org/
41
Aplicativos Desktop
Python + Qt + Qml
X Encontro do PUG-PE
42
... e por que Python ?
4. Python é utilizado na web ao redor do mundo
X Encontro do PUG-PE
43
Web lá fora!
http://www.nationalgeographic.com/
http://www.youtube.com/
http://sourceforge.net/
X Encontro do PUG-PE
http://pt.reddit.com/
44
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
... e por que Python ?
5. Há empregos para desenvolvedores Python
X Encontro do PUG-PE
46
Por aqui...
X Encontro do PUG-PE
47
Por aqui...
http://empregos.trovitbrasil.com.br/python,
X Encontro do PUG-PE
listas de discussão, ...
48
Por lá...
http://www.python.org/community/jobs/
X Encontro do PUG-PE
49
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
Até em casa!
http://www.freelancer.com/projects/
X Encontro do PUG-PE
51
... e por que Python ?
6. Conversa bem com outras linguagens
X Encontro do PUG-PE
52
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
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
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
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
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
... e por que Python ?
7. Uma boa linguagem para quem está começando!
X Encontro do PUG-PE
58
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
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
... e por que Python ?
8. Uma comunidade forte com que você pode contar!
X Encontro do PUG-PE
61
24 hrs ao seu dispor!
http://br.groups.yahoo.com/group/python-brasil/
X Encontro do PUG-PE
62
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
Razão bônus!
9. Permite expor suas idéias de forma rápida!
X Encontro do PUG-PE
64
TransitoRecife (Web)Monitorando o trânsito de algumas vias do Recife
X Encontro do PUG-PE
65
TransitoRecife (Web)Monitorando o trânsito de algumas vias do Recife
X Encontro do PUG-PE
65
TransitoRecife (Web)Monitorando o trânsito de algumas vias do Recife
http://twitter.com/transitoRE
X Encontro do PUG-PE
65
TransitoRecife (Web)Monitorando o trânsito de algumas vias do Recife
http://twitter.com/transitoRE
X Encontro do PUG-PE
65
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
TransitoRecife (Celular)... E também via celular!
TransitoRecife no Nokia E63
66
TransitoRecife (Celular)... E também via celular!
TransitoRecife no Nokia E63
66
TransitoRecife (Celular)... E também via celular!
TransitoRecife no Nokia E63
66
TransitoRecife (Celular)... E também via celular!
TransitoRecife no Nokia E63
66
Referênciashttp://www.slideshare.net/marcoandre/porque-python-fisl-90 (Marcos André - FISL 9)
http://www.python.org/
http://www.pythonbrasil.org.br/
http://ark4n.wordpress.com/python/
E-mails, Listas, Fóruns, conversas no Google Talk, etc.
http://www.slideshare.net/flavioribeiro/introduo-a-linguagem-de-programao-python-presentation
X Encontro do PUG-PE
67
Chegamos ao fim !!
Hora da random.choice([pergunta, dúvida, discussão]) !!
X Encontro do PUG-PE
68
Conhecendo Python e Por que ele importa?
Marcel Pinheiro Caracioloemail: caraciol@gmail.com
twitter: marcelcaraciolo
X Encontro do PUG-PE
69