O documento apresenta Python como uma linguagem de programação poderosa e fácil de aprender, discutindo sua sintaxe simples, comunidades ativas e usos em diversas empresas e projetos.
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
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
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
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)
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
}
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
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 !