SlideShare una empresa de Scribd logo
1 de 38
COM PYTHON !COM PYTHON !
EMPREEMPRE
APRAPRENDENDOENDENDO
TcheLinux Caxias do Sul
31/08/2013
JOAOLUIS.TAVARES@gmail.com
SOBRE !SOBRE !
● João Luís Tavares da Silva....joaoluis.tavares@gmail.com
– Tecnólogo em PD (UNISINOS)
– Mestre em IA (PUCRS)
– Doutor em Informática (UJF-França)
– Pós-Doutor em IE (UFRGS)
– Professor Licenciado UCS (Ciência da Computação)
– Diretor Instituto Communitas
– Diretor HaDi.Com
PYTHON É LEGAL !PYTHON É LEGAL !
PYTHON !PYTHON !
● Guido Van Rossum (1991)
● Linguagem de alto nível
● Sintaxe simples e clara, poucas keywords
● Orientada à objetos, estruturada e funcional
● Linguagem dinâmica com tipagem dinâmica
● Multiplataforma, interpretada
● Portabilidade
● Extensível
PORQUE PYTHON ?PORQUE PYTHON ?
● Qualidade de Software
– código legível, reutilizável e de fácil manutenção
● Produtividade
– 1/3 ou 1/5 do tamanho do código em C/C++ ou Java.
Execução em tempo real;
● Portabilidade
– interface gráfica com usuário, acesso a banco de dados,
sistemas baseados na web, sistemas para dispositivos
móveis, todos portáveis;
PORQUE PYTHON ?PORQUE PYTHON ?
● Bibliotecas
– Batteries included;
– http://docs.python.org/2/library/
● Integração
– invoca bibliotecas e código C e C++, Java. SOAP, XML-
RPC, e CORBA;
● Aproveitamento
– facilidades e auto-ferramentas
COMUNIDADE PYTHON ?COMUNIDADE PYTHON ?
– http://python.org/psf/
– http://www.python.org
– http://www.python.org.br
– http://associacao.python.org.br/
– http://2013.pythonbrasil.org.br/pythonbrasil
TEM OUTROS MOTIVOS ?TEM OUTROS MOTIVOS ?
POPULARIDADE PYTHON !POPULARIDADE PYTHON !
● Linux Journal Reader's Choice Awards 2012
http://redmonk.com/sogrady/2011/09/06/dataists-anguage-rankings/
POPULARIDADE PYTHON !POPULARIDADE PYTHON !
● Linux Journal Reader's Choice Awards 2012
http://www.linuxjournal.com/slideshow/readers-choice-2012
POPULARIDADE PYTHON !POPULARIDADE PYTHON !
● Programming Language Popularity
LangPop.com
POPULARIDADE PYTHON !POPULARIDADE PYTHON !
● TIOBE Programming Community Index 2013
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
QUEM USA PYTHON ?QUEM USA PYTHON ?
APRENDENDO PYTHON !APRENDENDO PYTHON !
PYTHON PRIMEIRO ?PYTHON PRIMEIRO ?
● JAVA e C são mais simples depois de Python
● Python → Foco na lógica básica de programação
● Depois da lógica qualquer linguagem é mais fácil
PYTHON PRIMEIRO ?PYTHON PRIMEIRO ?
● Computer Programming for Everybody:
– Projeto submetido à DARPA por van Rossum em 1999
● Premissas:
– Linguagem fácil e intuitiva tão poderosa quanto as
existentes
– open source, para que todos pudessem contribuir
– Sintaxe compreensível como Inglês padrão
– Adequada para tarefas cotidianas permitindo curto
período de desenvolvimento
APRENDENDO PYTHON !APRENDENDO PYTHON !
class HelloWorld {
public static void main(String[] args)
{
System.out.println("Hello, world!");
}
}
>>> print “Hello, world!”
● Simplicidade
APRENDENDO PYTHON !APRENDENDO PYTHON !
if ( a > b )
if ( b > c )
maior(a);
else
maior(b);
● Simplicidade
– Indentação
if ( a > b ) {
if ( b > c ) {
maior(a);
}
else {
maior(b);
}}
if ( a > b )
if ( b > c )
maior(a);
else
maior(b);
if ( a > b ) {
if ( b > c ) {
maior(a);
}
else {
maior(b);
}
}
if ( a > b ):
if ( b > c ):
maior(a)
else:
maior(b)
APRENDENDO PYTHON !APRENDENDO PYTHON !
● Simplicidade
● Manipulação de estruturas de dados
>>> lst = [1, "cao", 4, "a", "cha"]
>>> lst[0]
1
>>> lst[2:4]
[4, 'a']
>>> lst[2:]
[4, 'a', 'cha']
>>> lst[:4]
[1, 'cao', 4, 'a']
>>> lst[-1]
'dog'
>>> lst[:-2]
[1, 'cao', 4]
import java.util.Vector;
public class ListManipulation {
public static void main(String[] args) {
Vector lst = new Vector();
lst.add(new Integer(1));
lst.add("cao");
lst.add(new Integer(4));
lst.add("a");
lst.add("cha");
System.out.println(lst.get(0));
System.out.println(lst.subList(2, 4));
System.out.println(lst.subList(2, lst.size()));
System.out.println(lst.subList(0, 4));
System.out.println(lst.get(lst.size() - 1));
System.out.println(lst.subList(0, lst.size() - 2));
}
} // ListManipulation
APRENDENDO PYTHON !APRENDENDO PYTHON !
● Simplicidade
● Manipulação de estruturas de dados
● Dicionários
>>> dict = {1: "cao", "cha": "mate", 34: [1, 2, 3]}
>>> dict["cha"]
'mate'
import java.util.HashMap;
import java.util.Vector;
public class Dictionary {
public static void main(String[] args) {
HashMap dict = new HashMap();
dict.put(new Integer(1), "cao");
dict.put("cha", "mate");
Vector lst = new Vector();
lst.add(new Integer(1));
lst.add(new Integer(2));
lst.add(new Integer(3));
dict.put(new Integer(34), lst);
System.out.println("dict = " + dict);
}
} // Dictionary
APRENDENDO PYTHON !APRENDENDO PYTHON !
● Simplicidade
● Manipulação de estruturas de dados
● Dicionários
● Expressões, Fluxos, Loops
def fsort(a, b, c, d):
while not a < b < c < d:
if a > b:
a, b = b, a
elif b > c:
b, c = c, b
elif c > d:
c, d = d, c
return a, b, c, d
class Fsort {
private static int a, b, c, d;
public static void fSort() {
while (! (a < b && b < c && c < d)) {
if (a > b) {
int temp = a;
a = b;
b = temp;
} else if (b > c) {
int temp = b;
b = c;
c = temp;
} else if (c > d) {
int temp = c;
c = d;
d = temp;
} // if
} // while
}
public static void main (String[] args) {
a = 4;
b = 3;
c = 2;
d = 1;
fSort();
System.out.println("" + a + ", " + b + ", " + c + ", " + d);
} // main
}
APRENDENDO PYTHON !APRENDENDO PYTHON !
● Classes
– Entre outros...By LCCruz
APRENDENDO PYTHON !APRENDENDO PYTHON !
● Frameworks
By Marcos Petry
APRENDENDO PYTHON !APRENDENDO PYTHON !
● Artificial Intelligence: a Modern Approach
– https://code.google.com/p/aima-python/
EMPREENDENDO COM PYTHON !EMPREENDENDO COM PYTHON !
QUEM USA PYTHON ?QUEM USA PYTHON ?
PRODUTIVIDADE PYTHON !PRODUTIVIDADE PYTHON !
● Tempo para ser produtivo:
● Linguagem C : 2 anos
● Linguagem Java : 6 meses
● Linguagem Python : 1 mês
PRODUTIVIDADE PYTHON !PRODUTIVIDADE PYTHON !
● Tempo de desenvolvimento
Prechelt, L. An empirical comparison of C, C++, Java, Perl, Python, Rexx, and Tcl. IEEE Computer
PRODUTIVIDADE PYTHON !PRODUTIVIDADE PYTHON !
● O problema de programação: Código do telefone
– Converter números de telefone em cadeias de texto
usando um dicionário de 73.113 palavras realizando um
mapeamento de caracteres do tipo:
“e jnq rwx dsy pés am civ bku lop ghz”
“0 111 222 333 444 55 666 777 888 999”
PRODUTIVIDADE PYTHON !PRODUTIVIDADE PYTHON !
● Tempo para ser produtivo
Média de Horas para Resolver o Problema
Média de Linhas de Código Linhas de Código por hora
CASE PYTHON !CASE PYTHON !
● UCS 2002
– Delphi → Python (alternativas à PHP e JAVA)
– 2001 : X3ng para desenvolver o site da UCS (CMS
próprio da X3ng)
● Motivos UCS:
– curva de aprendizado menor que a do Java
– linguagem mais robusta que o php.
● Teste de produtividade:
– mesma aplicação utilizando as 3 linguagens
CASE PYTHON !CASE PYTHON !
● Métricas:
– facilidade de aprendizagem
– velocidade de desenvolvimento
● Resultados:
– para um programador ficar bom em java: 18-24 meses
estudando e desenvolvendo
– em python um programador ficava bom em 12 meses
– aplicação em python era feita em 1/3 do tempo
aproximadamente.
– estrutura da linguagem e a facilidade de aprendizado
QUEM USA PYTHON ?QUEM USA PYTHON ?
DEMANDA PYTHON !DEMANDA PYTHON !
● Job Trends 2013
http://www.indeed.com/jobtrends
CASE PYTHON !CASE PYTHON !
● Otics 2007
– Portal do Observatório Nacional de Saúde
– Python/Zope/Plone
– UCS-UFRGS-FIOCRUZ
CASE PYTHON !CASE PYTHON !
●
● Instituto Communitas para desenvolvimento
humano e Tecnológico
– Projetos: FIOCRUZ, Ministério da Saúde, UFRGS, Haiti
● HaDi.Com – Habitats Digitais para Comunidades
● Soluções tecnológicas para aprendizagem
colaborativa em comunidades de prática
● Produto de Comunidades baseado em
Python/Zope/Plone
● Equipe de 5 desenvolvedores+profissionais diversos
PARADOXO PYTHON !PARADOXO PYTHON !
● Se uma empresa escolhe escrever seu software
numa linguagem comparativamente esotérica, ela
vai ter a possibilidade de contratar programadores
melhores, pois ela vai atrair somente aqueles que
se interessaram/preocuparam o suficiente para
aprender anteriormente a linguagem.
● E no caso dos programadores o paradoxo é ainda
mais pronunciado: a linguagem a se aprender, se
você quer conseguir um emprego, é a linguagem
que as pessoas não aprendem somente para
conseguir um emprego.
Paul Graham
COM PYTHON !COM PYTHON !
EMPREEMPRE
APRAPRENDENDOENDENDO
TcheLinux Caxias do Sul
31/08/2013JOAOLUIS.TAVARES@gmail.com OBRIGADO !
No Sleep for you !No Sleep for you !

Más contenido relacionado

La actualidad más candente

Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Marcel Caraciolo
 
Por que Python? Latinoware 2011
Por que Python? Latinoware 2011Por que Python? Latinoware 2011
Por que Python? Latinoware 2011Marco Mendes
 
Python, A pílula Azul da programação
Python, A pílula Azul da programaçãoPython, A pílula Azul da programação
Python, A pílula Azul da programaçãoMarcel Caraciolo
 
Palestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesPalestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesMarcos Thomaz
 
Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Marcel Caraciolo
 
Apresentação Python Poli
Apresentação Python PoliApresentação Python Poli
Apresentação Python PoliRodrigo Lira
 
Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011Luiz Aldabalde
 
Porque Python? Semana Acadêmica UTFPR 2011
Porque Python? Semana Acadêmica UTFPR 2011Porque Python? Semana Acadêmica UTFPR 2011
Porque Python? Semana Acadêmica UTFPR 2011Marco Mendes
 
Desvendando o python
Desvendando o pythonDesvendando o python
Desvendando o pythonRodrigo Lira
 
Porque python é legal! d
Porque python é legal!  dPorque python é legal!  d
Porque python é legal! dJoelmir Ribacki
 
Construindo Comunidades Open-Source Bem Sucedidas: Experiências do PUG-PE
Construindo Comunidades Open-Source Bem Sucedidas: Experiências do PUG-PEConstruindo Comunidades Open-Source Bem Sucedidas: Experiências do PUG-PE
Construindo Comunidades Open-Source Bem Sucedidas: Experiências do PUG-PEMarcel Caraciolo
 
Por Que Python - #PUGCE
Por Que Python - #PUGCEPor Que Python - #PUGCE
Por Que Python - #PUGCETiago Freire
 
Porque foi bom aprender com Python
Porque foi bom aprender com PythonPorque foi bom aprender com Python
Porque foi bom aprender com PythonFernando Rocha
 
Introdução à Programação Python e Tk
Introdução à Programação Python e TkIntrodução à Programação Python e Tk
Introdução à Programação Python e TkCarlos Campani
 

La actualidad más candente (20)

Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?
 
Por que Python? Latinoware 2011
Por que Python? Latinoware 2011Por que Python? Latinoware 2011
Por que Python? Latinoware 2011
 
Como tornar-se um programador Python melhor
Como tornar-se um programador Python melhorComo tornar-se um programador Python melhor
Como tornar-se um programador Python melhor
 
Python, A pílula Azul da programação
Python, A pílula Azul da programaçãoPython, A pílula Azul da programação
Python, A pílula Azul da programação
 
Hackeando o Facebook com Python
Hackeando o Facebook com PythonHackeando o Facebook com Python
Hackeando o Facebook com Python
 
Palestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesPalestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas Aplicações
 
Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3Oficina Python: Hackeando a Web com Python 3
Oficina Python: Hackeando a Web com Python 3
 
Canivete python
Canivete pythonCanivete python
Canivete python
 
Apresentação Python Poli
Apresentação Python PoliApresentação Python Poli
Apresentação Python Poli
 
Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011
 
Porque Python? Semana Acadêmica UTFPR 2011
Porque Python? Semana Acadêmica UTFPR 2011Porque Python? Semana Acadêmica UTFPR 2011
Porque Python? Semana Acadêmica UTFPR 2011
 
Python-Fenalivre-Imed
Python-Fenalivre-ImedPython-Fenalivre-Imed
Python-Fenalivre-Imed
 
Desvendando o python
Desvendando o pythonDesvendando o python
Desvendando o python
 
Porque python é legal! d
Porque python é legal!  dPorque python é legal!  d
Porque python é legal! d
 
Construindo Comunidades Open-Source Bem Sucedidas: Experiências do PUG-PE
Construindo Comunidades Open-Source Bem Sucedidas: Experiências do PUG-PEConstruindo Comunidades Open-Source Bem Sucedidas: Experiências do PUG-PE
Construindo Comunidades Open-Source Bem Sucedidas: Experiências do PUG-PE
 
Por Que Python - #PUGCE
Por Que Python - #PUGCEPor Que Python - #PUGCE
Por Que Python - #PUGCE
 
Python Zope Plone - Ftec
Python Zope Plone - FtecPython Zope Plone - Ftec
Python Zope Plone - Ftec
 
Linguagem Python
Linguagem PythonLinguagem Python
Linguagem Python
 
Porque foi bom aprender com Python
Porque foi bom aprender com PythonPorque foi bom aprender com Python
Porque foi bom aprender com Python
 
Introdução à Programação Python e Tk
Introdução à Programação Python e TkIntrodução à Programação Python e Tk
Introdução à Programação Python e Tk
 

Similar a Empreendendo com Python

Ensinando Computação e Fazendo Ciência com Python
Ensinando Computação e Fazendo Ciência com PythonEnsinando Computação e Fazendo Ciência com Python
Ensinando Computação e Fazendo Ciência com PythonLuiz Cláudio Silva
 
Tutorial kturtle iniciante
Tutorial kturtle inicianteTutorial kturtle iniciante
Tutorial kturtle inicianteRodrigo Costa
 
Python: A Arma Secreta do Cientista de Dados
Python: A Arma Secreta do Cientista de DadosPython: A Arma Secreta do Cientista de Dados
Python: A Arma Secreta do Cientista de DadosRodrigo Senra
 
Primeiros passos em Python - Tchelinux Uruguaiana 2011
Primeiros passos em Python - Tchelinux Uruguaiana 2011Primeiros passos em Python - Tchelinux Uruguaiana 2011
Primeiros passos em Python - Tchelinux Uruguaiana 2011Jerônimo Medina Madruga
 
Programação Concorrente - Curso Completo
Programação Concorrente - Curso CompletoProgramação Concorrente - Curso Completo
Programação Concorrente - Curso Completothomasdacosta
 
Projeto TCOS - III ENSOL
Projeto TCOS - III ENSOLProjeto TCOS - III ENSOL
Projeto TCOS - III ENSOLAécio Pires
 
Uma experiência acadêmica com Python
Uma experiência acadêmica com PythonUma experiência acadêmica com Python
Uma experiência acadêmica com PythonHenrique Bastos
 
Python Pythononcampus Uva 060609
Python Pythononcampus Uva 060609Python Pythononcampus Uva 060609
Python Pythononcampus Uva 060609gsroma
 
PARADIGMAS_LINGUAGENS_PROG_aula02.pdf
PARADIGMAS_LINGUAGENS_PROG_aula02.pdfPARADIGMAS_LINGUAGENS_PROG_aula02.pdf
PARADIGMAS_LINGUAGENS_PROG_aula02.pdfAthena542429
 
Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Marcel Caraciolo
 
Introdução ao Python: Desbloqueando o Poder da Programação
Introdução ao Python: Desbloqueando o Poder da ProgramaçãoIntrodução ao Python: Desbloqueando o Poder da Programação
Introdução ao Python: Desbloqueando o Poder da ProgramaçãoMarcelo Fabiano N. de Oliveira
 
Porque Python - PythonBrasil[6]
Porque Python - PythonBrasil[6]Porque Python - PythonBrasil[6]
Porque Python - PythonBrasil[6]Marco Mendes
 
Python - o que, porque, como e quando
Python - o que, porque, como e quandoPython - o que, porque, como e quando
Python - o que, porque, como e quandoGustavo Carvalho
 
NãNãNã Nã - Python Refresca até Pensamento
NãNãNã Nã - Python Refresca até PensamentoNãNãNã Nã - Python Refresca até Pensamento
NãNãNã Nã - Python Refresca até PensamentoOsvaldo Santana Neto
 
Elementos Fundamentais de Linguagens de Programação e a Linguagem Python
Elementos Fundamentais de Linguagens de Programação e a Linguagem PythonElementos Fundamentais de Linguagens de Programação e a Linguagem Python
Elementos Fundamentais de Linguagens de Programação e a Linguagem PythonCaliane Z. Pecenin
 
Python django7semestre
Python django7semestre Python django7semestre
Python django7semestre Denis Vieira
 

Similar a Empreendendo com Python (20)

Ensinando Computação e Fazendo Ciência com Python
Ensinando Computação e Fazendo Ciência com PythonEnsinando Computação e Fazendo Ciência com Python
Ensinando Computação e Fazendo Ciência com Python
 
Tutorial kturtle iniciante
Tutorial kturtle inicianteTutorial kturtle iniciante
Tutorial kturtle iniciante
 
Python: A Arma Secreta do Cientista de Dados
Python: A Arma Secreta do Cientista de DadosPython: A Arma Secreta do Cientista de Dados
Python: A Arma Secreta do Cientista de Dados
 
Primeiros passos em Python - Tchelinux Uruguaiana 2011
Primeiros passos em Python - Tchelinux Uruguaiana 2011Primeiros passos em Python - Tchelinux Uruguaiana 2011
Primeiros passos em Python - Tchelinux Uruguaiana 2011
 
Programação Concorrente - Curso Completo
Programação Concorrente - Curso CompletoProgramação Concorrente - Curso Completo
Programação Concorrente - Curso Completo
 
Projeto TCOS - III ENSOL
Projeto TCOS - III ENSOLProjeto TCOS - III ENSOL
Projeto TCOS - III ENSOL
 
Uma experiência acadêmica com Python
Uma experiência acadêmica com PythonUma experiência acadêmica com Python
Uma experiência acadêmica com Python
 
Python Pythononcampus Uva 060609
Python Pythononcampus Uva 060609Python Pythononcampus Uva 060609
Python Pythononcampus Uva 060609
 
PyFuncemeClimateTools
PyFuncemeClimateToolsPyFuncemeClimateTools
PyFuncemeClimateTools
 
PARADIGMAS_LINGUAGENS_PROG_aula02.pdf
PARADIGMAS_LINGUAGENS_PROG_aula02.pdfPARADIGMAS_LINGUAGENS_PROG_aula02.pdf
PARADIGMAS_LINGUAGENS_PROG_aula02.pdf
 
Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?Python e 10 motivos por que devo conhece-la ?
Python e 10 motivos por que devo conhece-la ?
 
Introdução ao Python: Desbloqueando o Poder da Programação
Introdução ao Python: Desbloqueando o Poder da ProgramaçãoIntrodução ao Python: Desbloqueando o Poder da Programação
Introdução ao Python: Desbloqueando o Poder da Programação
 
Slide
SlideSlide
Slide
 
Python: Por Onde Começar e Aplicações
Python: Por Onde Começar e AplicaçõesPython: Por Onde Começar e Aplicações
Python: Por Onde Começar e Aplicações
 
Porque Python - PythonBrasil[6]
Porque Python - PythonBrasil[6]Porque Python - PythonBrasil[6]
Porque Python - PythonBrasil[6]
 
Python - o que, porque, como e quando
Python - o que, porque, como e quandoPython - o que, porque, como e quando
Python - o que, porque, como e quando
 
NãNãNã Nã - Python Refresca até Pensamento
NãNãNã Nã - Python Refresca até PensamentoNãNãNã Nã - Python Refresca até Pensamento
NãNãNã Nã - Python Refresca até Pensamento
 
Elementos Fundamentais de Linguagens de Programação e a Linguagem Python
Elementos Fundamentais de Linguagens de Programação e a Linguagem PythonElementos Fundamentais de Linguagens de Programação e a Linguagem Python
Elementos Fundamentais de Linguagens de Programação e a Linguagem Python
 
Spring boot
Spring bootSpring boot
Spring boot
 
Python django7semestre
Python django7semestre Python django7semestre
Python django7semestre
 

Último

ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 

Último (9)

ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 

Empreendendo com Python

  • 1. COM PYTHON !COM PYTHON ! EMPREEMPRE APRAPRENDENDOENDENDO TcheLinux Caxias do Sul 31/08/2013 JOAOLUIS.TAVARES@gmail.com
  • 2. SOBRE !SOBRE ! ● João Luís Tavares da Silva....joaoluis.tavares@gmail.com – Tecnólogo em PD (UNISINOS) – Mestre em IA (PUCRS) – Doutor em Informática (UJF-França) – Pós-Doutor em IE (UFRGS) – Professor Licenciado UCS (Ciência da Computação) – Diretor Instituto Communitas – Diretor HaDi.Com
  • 3. PYTHON É LEGAL !PYTHON É LEGAL !
  • 4. PYTHON !PYTHON ! ● Guido Van Rossum (1991) ● Linguagem de alto nível ● Sintaxe simples e clara, poucas keywords ● Orientada à objetos, estruturada e funcional ● Linguagem dinâmica com tipagem dinâmica ● Multiplataforma, interpretada ● Portabilidade ● Extensível
  • 5. PORQUE PYTHON ?PORQUE PYTHON ? ● Qualidade de Software – código legível, reutilizável e de fácil manutenção ● Produtividade – 1/3 ou 1/5 do tamanho do código em C/C++ ou Java. Execução em tempo real; ● Portabilidade – interface gráfica com usuário, acesso a banco de dados, sistemas baseados na web, sistemas para dispositivos móveis, todos portáveis;
  • 6. PORQUE PYTHON ?PORQUE PYTHON ? ● Bibliotecas – Batteries included; – http://docs.python.org/2/library/ ● Integração – invoca bibliotecas e código C e C++, Java. SOAP, XML- RPC, e CORBA; ● Aproveitamento – facilidades e auto-ferramentas
  • 7. COMUNIDADE PYTHON ?COMUNIDADE PYTHON ? – http://python.org/psf/ – http://www.python.org – http://www.python.org.br – http://associacao.python.org.br/ – http://2013.pythonbrasil.org.br/pythonbrasil
  • 8. TEM OUTROS MOTIVOS ?TEM OUTROS MOTIVOS ?
  • 9. POPULARIDADE PYTHON !POPULARIDADE PYTHON ! ● Linux Journal Reader's Choice Awards 2012 http://redmonk.com/sogrady/2011/09/06/dataists-anguage-rankings/
  • 10. POPULARIDADE PYTHON !POPULARIDADE PYTHON ! ● Linux Journal Reader's Choice Awards 2012 http://www.linuxjournal.com/slideshow/readers-choice-2012
  • 11. POPULARIDADE PYTHON !POPULARIDADE PYTHON ! ● Programming Language Popularity LangPop.com
  • 12. POPULARIDADE PYTHON !POPULARIDADE PYTHON ! ● TIOBE Programming Community Index 2013 http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
  • 13. QUEM USA PYTHON ?QUEM USA PYTHON ?
  • 15. PYTHON PRIMEIRO ?PYTHON PRIMEIRO ? ● JAVA e C são mais simples depois de Python ● Python → Foco na lógica básica de programação ● Depois da lógica qualquer linguagem é mais fácil
  • 16. PYTHON PRIMEIRO ?PYTHON PRIMEIRO ? ● Computer Programming for Everybody: – Projeto submetido à DARPA por van Rossum em 1999 ● Premissas: – Linguagem fácil e intuitiva tão poderosa quanto as existentes – open source, para que todos pudessem contribuir – Sintaxe compreensível como Inglês padrão – Adequada para tarefas cotidianas permitindo curto período de desenvolvimento
  • 17. APRENDENDO PYTHON !APRENDENDO PYTHON ! class HelloWorld { public static void main(String[] args) { System.out.println("Hello, world!"); } } >>> print “Hello, world!” ● Simplicidade
  • 18. APRENDENDO PYTHON !APRENDENDO PYTHON ! if ( a > b ) if ( b > c ) maior(a); else maior(b); ● Simplicidade – Indentação if ( a > b ) { if ( b > c ) { maior(a); } else { maior(b); }} if ( a > b ) if ( b > c ) maior(a); else maior(b); if ( a > b ) { if ( b > c ) { maior(a); } else { maior(b); } } if ( a > b ): if ( b > c ): maior(a) else: maior(b)
  • 19. APRENDENDO PYTHON !APRENDENDO PYTHON ! ● Simplicidade ● Manipulação de estruturas de dados >>> lst = [1, "cao", 4, "a", "cha"] >>> lst[0] 1 >>> lst[2:4] [4, 'a'] >>> lst[2:] [4, 'a', 'cha'] >>> lst[:4] [1, 'cao', 4, 'a'] >>> lst[-1] 'dog' >>> lst[:-2] [1, 'cao', 4] import java.util.Vector; public class ListManipulation { public static void main(String[] args) { Vector lst = new Vector(); lst.add(new Integer(1)); lst.add("cao"); lst.add(new Integer(4)); lst.add("a"); lst.add("cha"); System.out.println(lst.get(0)); System.out.println(lst.subList(2, 4)); System.out.println(lst.subList(2, lst.size())); System.out.println(lst.subList(0, 4)); System.out.println(lst.get(lst.size() - 1)); System.out.println(lst.subList(0, lst.size() - 2)); } } // ListManipulation
  • 20. APRENDENDO PYTHON !APRENDENDO PYTHON ! ● Simplicidade ● Manipulação de estruturas de dados ● Dicionários >>> dict = {1: "cao", "cha": "mate", 34: [1, 2, 3]} >>> dict["cha"] 'mate' import java.util.HashMap; import java.util.Vector; public class Dictionary { public static void main(String[] args) { HashMap dict = new HashMap(); dict.put(new Integer(1), "cao"); dict.put("cha", "mate"); Vector lst = new Vector(); lst.add(new Integer(1)); lst.add(new Integer(2)); lst.add(new Integer(3)); dict.put(new Integer(34), lst); System.out.println("dict = " + dict); } } // Dictionary
  • 21. APRENDENDO PYTHON !APRENDENDO PYTHON ! ● Simplicidade ● Manipulação de estruturas de dados ● Dicionários ● Expressões, Fluxos, Loops def fsort(a, b, c, d): while not a < b < c < d: if a > b: a, b = b, a elif b > c: b, c = c, b elif c > d: c, d = d, c return a, b, c, d class Fsort { private static int a, b, c, d; public static void fSort() { while (! (a < b && b < c && c < d)) { if (a > b) { int temp = a; a = b; b = temp; } else if (b > c) { int temp = b; b = c; c = temp; } else if (c > d) { int temp = c; c = d; d = temp; } // if } // while } public static void main (String[] args) { a = 4; b = 3; c = 2; d = 1; fSort(); System.out.println("" + a + ", " + b + ", " + c + ", " + d); } // main }
  • 22. APRENDENDO PYTHON !APRENDENDO PYTHON ! ● Classes – Entre outros...By LCCruz
  • 23. APRENDENDO PYTHON !APRENDENDO PYTHON ! ● Frameworks By Marcos Petry
  • 24. APRENDENDO PYTHON !APRENDENDO PYTHON ! ● Artificial Intelligence: a Modern Approach – https://code.google.com/p/aima-python/
  • 25. EMPREENDENDO COM PYTHON !EMPREENDENDO COM PYTHON !
  • 26. QUEM USA PYTHON ?QUEM USA PYTHON ?
  • 27. PRODUTIVIDADE PYTHON !PRODUTIVIDADE PYTHON ! ● Tempo para ser produtivo: ● Linguagem C : 2 anos ● Linguagem Java : 6 meses ● Linguagem Python : 1 mês
  • 28. PRODUTIVIDADE PYTHON !PRODUTIVIDADE PYTHON ! ● Tempo de desenvolvimento Prechelt, L. An empirical comparison of C, C++, Java, Perl, Python, Rexx, and Tcl. IEEE Computer
  • 29. PRODUTIVIDADE PYTHON !PRODUTIVIDADE PYTHON ! ● O problema de programação: Código do telefone – Converter números de telefone em cadeias de texto usando um dicionário de 73.113 palavras realizando um mapeamento de caracteres do tipo: “e jnq rwx dsy pés am civ bku lop ghz” “0 111 222 333 444 55 666 777 888 999”
  • 30. PRODUTIVIDADE PYTHON !PRODUTIVIDADE PYTHON ! ● Tempo para ser produtivo Média de Horas para Resolver o Problema Média de Linhas de Código Linhas de Código por hora
  • 31. CASE PYTHON !CASE PYTHON ! ● UCS 2002 – Delphi → Python (alternativas à PHP e JAVA) – 2001 : X3ng para desenvolver o site da UCS (CMS próprio da X3ng) ● Motivos UCS: – curva de aprendizado menor que a do Java – linguagem mais robusta que o php. ● Teste de produtividade: – mesma aplicação utilizando as 3 linguagens
  • 32. CASE PYTHON !CASE PYTHON ! ● Métricas: – facilidade de aprendizagem – velocidade de desenvolvimento ● Resultados: – para um programador ficar bom em java: 18-24 meses estudando e desenvolvendo – em python um programador ficava bom em 12 meses – aplicação em python era feita em 1/3 do tempo aproximadamente. – estrutura da linguagem e a facilidade de aprendizado
  • 33. QUEM USA PYTHON ?QUEM USA PYTHON ?
  • 34. DEMANDA PYTHON !DEMANDA PYTHON ! ● Job Trends 2013 http://www.indeed.com/jobtrends
  • 35. CASE PYTHON !CASE PYTHON ! ● Otics 2007 – Portal do Observatório Nacional de Saúde – Python/Zope/Plone – UCS-UFRGS-FIOCRUZ
  • 36. CASE PYTHON !CASE PYTHON ! ● ● Instituto Communitas para desenvolvimento humano e Tecnológico – Projetos: FIOCRUZ, Ministério da Saúde, UFRGS, Haiti ● HaDi.Com – Habitats Digitais para Comunidades ● Soluções tecnológicas para aprendizagem colaborativa em comunidades de prática ● Produto de Comunidades baseado em Python/Zope/Plone ● Equipe de 5 desenvolvedores+profissionais diversos
  • 37. PARADOXO PYTHON !PARADOXO PYTHON ! ● Se uma empresa escolhe escrever seu software numa linguagem comparativamente esotérica, ela vai ter a possibilidade de contratar programadores melhores, pois ela vai atrair somente aqueles que se interessaram/preocuparam o suficiente para aprender anteriormente a linguagem. ● E no caso dos programadores o paradoxo é ainda mais pronunciado: a linguagem a se aprender, se você quer conseguir um emprego, é a linguagem que as pessoas não aprendem somente para conseguir um emprego. Paul Graham
  • 38. COM PYTHON !COM PYTHON ! EMPREEMPRE APRAPRENDENDOENDENDO TcheLinux Caxias do Sul 31/08/2013JOAOLUIS.TAVARES@gmail.com OBRIGADO ! No Sleep for you !No Sleep for you !