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 (PUC...
PYTHON É LEGAL !PYTHON É LEGAL !
PYTHON !PYTHON !
● Guido Van Rossum (1991)
● Linguagem de alto nível
● Sintaxe simples e clara, poucas keywords
● Orientad...
PORQUE PYTHON ?PORQUE PYTHON ?
● Qualidade de Software
– código legível, reutilizável e de fácil manutenção
● Produtividad...
PORQUE PYTHON ?PORQUE PYTHON ?
● Bibliotecas
– Batteries included;
– http://docs.python.org/2/library/
● Integração
– invo...
COMUNIDADE PYTHON ?COMUNIDADE PYTHON ?
– http://python.org/psf/
– http://www.python.org
– http://www.python.org.br
– http:...
TEM OUTROS MOTIVOS ?TEM OUTROS MOTIVOS ?
POPULARIDADE PYTHON !POPULARIDADE PYTHON !
● Linux Journal Reader's Choice Awards 2012
http://redmonk.com/sogrady/2011/09/...
POPULARIDADE PYTHON !POPULARIDADE PYTHON !
● Linux Journal Reader's Choice Awards 2012
http://www.linuxjournal.com/slidesh...
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...
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 progra...
PYTHON PRIMEIRO ?PYTHON PRIMEIRO ?
● Computer Programming for Everybody:
– Projeto submetido à DARPA por van Rossum em 199...
APRENDENDO PYTHON !APRENDENDO PYTHON !
class HelloWorld {
public static void main(String[] args)
{
System.out.println("Hel...
APRENDENDO PYTHON !APRENDENDO PYTHON !
if ( a > b )
if ( b > c )
maior(a);
else
maior(b);
● Simplicidade
– Indentação
if (...
APRENDENDO PYTHON !APRENDENDO PYTHON !
● Simplicidade
● Manipulação de estruturas de dados
>>> lst = [1, "cao", 4, "a", "c...
APRENDENDO PYTHON !APRENDENDO PYTHON !
● Simplicidade
● Manipulação de estruturas de dados
● Dicionários
>>> dict = {1: "c...
APRENDENDO PYTHON !APRENDENDO PYTHON !
● Simplicidade
● Manipulação de estruturas de dados
● Dicionários
● Expressões, Flu...
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-pytho...
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...
PRODUTIVIDADE PYTHON !PRODUTIVIDADE PYTHON !
● Tempo de desenvolvimento
Prechelt, L. An empirical comparison of C, C++, Ja...
PRODUTIVIDADE PYTHON !PRODUTIVIDADE PYTHON !
● O problema de programação: Código do telefone
– Converter números de telefo...
PRODUTIVIDADE PYTHON !PRODUTIVIDADE PYTHON !
● Tempo para ser produtivo
Média de Horas para Resolver o Problema
Média de L...
CASE PYTHON !CASE PYTHON !
● UCS 2002
– Delphi → Python (alternativas à PHP e JAVA)
– 2001 : X3ng para desenvolver o site ...
CASE PYTHON !CASE PYTHON !
● Métricas:
– facilidade de aprendizagem
– velocidade de desenvolvimento
● Resultados:
– para u...
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é...
PARADOXO PYTHON !PARADOXO PYTHON !
● Se uma empresa escolhe escrever seu software
numa linguagem comparativamente esotéric...
COM PYTHON !COM PYTHON !
EMPREEMPRE
APRAPRENDENDOENDENDO
TcheLinux Caxias do Sul
31/08/2013JOAOLUIS.TAVARES@gmail.com OBRI...
Próximos SlideShares
Carregando em…5
×

Empreendendo com Python

372 visualizações

Publicada em

Apresentação TcheLinux Caxias do Sul

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
372
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
8
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Empreendendo com Python

  1. 1. COM PYTHON !COM PYTHON ! EMPREEMPRE APRAPRENDENDOENDENDO TcheLinux Caxias do Sul 31/08/2013 JOAOLUIS.TAVARES@gmail.com
  2. 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. 3. PYTHON É LEGAL !PYTHON É LEGAL !
  4. 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. 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. 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. 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. 8. TEM OUTROS MOTIVOS ?TEM OUTROS MOTIVOS ?
  9. 9. POPULARIDADE PYTHON !POPULARIDADE PYTHON ! ● Linux Journal Reader's Choice Awards 2012 http://redmonk.com/sogrady/2011/09/06/dataists-anguage-rankings/
  10. 10. POPULARIDADE PYTHON !POPULARIDADE PYTHON ! ● Linux Journal Reader's Choice Awards 2012 http://www.linuxjournal.com/slideshow/readers-choice-2012
  11. 11. POPULARIDADE PYTHON !POPULARIDADE PYTHON ! ● Programming Language Popularity LangPop.com
  12. 12. POPULARIDADE PYTHON !POPULARIDADE PYTHON ! ● TIOBE Programming Community Index 2013 http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
  13. 13. QUEM USA PYTHON ?QUEM USA PYTHON ?
  14. 14. APRENDENDO PYTHON !APRENDENDO PYTHON !
  15. 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. 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. 17. APRENDENDO PYTHON !APRENDENDO PYTHON ! class HelloWorld { public static void main(String[] args) { System.out.println("Hello, world!"); } } >>> print “Hello, world!” ● Simplicidade
  18. 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. 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. 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. 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. 22. APRENDENDO PYTHON !APRENDENDO PYTHON ! ● Classes – Entre outros...By LCCruz
  23. 23. APRENDENDO PYTHON !APRENDENDO PYTHON ! ● Frameworks By Marcos Petry
  24. 24. APRENDENDO PYTHON !APRENDENDO PYTHON ! ● Artificial Intelligence: a Modern Approach – https://code.google.com/p/aima-python/
  25. 25. EMPREENDENDO COM PYTHON !EMPREENDENDO COM PYTHON !
  26. 26. QUEM USA PYTHON ?QUEM USA PYTHON ?
  27. 27. PRODUTIVIDADE PYTHON !PRODUTIVIDADE PYTHON ! ● Tempo para ser produtivo: ● Linguagem C : 2 anos ● Linguagem Java : 6 meses ● Linguagem Python : 1 mês
  28. 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. 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. 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. 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. 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. 33. QUEM USA PYTHON ?QUEM USA PYTHON ?
  34. 34. DEMANDA PYTHON !DEMANDA PYTHON ! ● Job Trends 2013 http://www.indeed.com/jobtrends
  35. 35. CASE PYTHON !CASE PYTHON ! ● Otics 2007 – Portal do Observatório Nacional de Saúde – Python/Zope/Plone – UCS-UFRGS-FIOCRUZ
  36. 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. 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. 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 !

×