Python é uma linguagem de programação de alto nível, interpretada e de código aberto. Ela tem sintaxe simples, é multiplataforma e possui uma vasta biblioteca embutida. Sua curva de aprendizagem é baixa e permite alta produtividade. Python é usada por muitas empresas e tem uma forte comunidade de desenvolvedores.
2. SOBRE !SOBRE !● Luciano Camargo Cruz
– Diretor HaDiCom - Habitats Digitais para Comunidades
– Estudante de Ciência da Computação pela UCS - Universidade de Caxias
do Sul
– HaDiCom e no Instituto Communitas:
● Desenvolvedor de software
● Gerente de projetos
● Administrador de portais Python/Zope/Plone
● Configurações de servidores
– Organizador voluntário TcheLinux Caxias do Sul 2013.
– Membro da Associação Python Brasil (APyB) e Plone Foundation.
– Motoqueiro, Pescador...
luciano@hadi.com.br - @__lccruz__
3. 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 HaDiCom
8. PYTHONPYTHON
● Iniciou em 1990.
● Guido van Rossum
– Holandês.
– Matemático e Cientista da Computação.
– Criar um linguagem de nível elevado.
– Sintaxe simples e de fácil compreensão.
● Python Software Foundation
http://www.python.org
● Licença Open Source compatível com GPL
(General Public License)
9. PYTHONPYTHON
● Python é legal.
● Orientação a Objetos (tudo é objeto).
● Multiplataforma.
● Vasta Biblioteca embutida
https://docs.python.org/2/library/index.html
● Tipagem dinâmica.
● Open Source.
● Interpretador Interativo.
● De fácil aprendizado.
● De fácil uso.
● Linguagem Interpretada.
21. 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
22. 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
24. 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)
26. 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
27. 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
}
32. PRODUTIVIDADE PYTHON !PRODUTIVIDADE PYTHON !
● Tempo para ser produtivo:
● Linguagem C : 2 anos
● Linguagem Java : 6 meses
● Linguagem Python : 1 mês
33. PRODUTIVIDADE PYTHON !PRODUTIVIDADE PYTHON !
● Tempo de desenvolvimento
Prechelt, L. An empirical comparison of C, C++, Java, Perl, Python, Rexx, and Tcl. IEEE Computer
34. 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”
35. 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
36. 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
37. 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
40. CASE PYTHON !CASE PYTHON !
● Otics 2007
– Portal do Observatório Nacional de Saúde
– Python/Zope/Plone
– UCS-UFRGS-FIOCRUZ
41. 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 22 desenvolvedores+profissionais diversos
42. 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.
43. PARADOXO PYTHON !PARADOXO PYTHON !
● 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