Python-Fenalivre-Imed

359 views

Published on

Python - Fenalivre - Imed - Passo Fundo

Published in: Software
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
359
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Python-Fenalivre-Imed

  1. 1. Python[NOW] Fenalivre - IMED - Passo Fundo Maio, 2014 Luciano Camargo Cruz Dr. João Luís Tavares da Silva
  2. 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. 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
  4. 4. Comunidades !Comunidades ! TcheLinux
  5. 5. Comunidade - Python ● Associação Python Brasil – http://associacao.python.org.br/ – [APyB] apyb-associados@googlegroups.com – @apyb ● PythonBrasil – Conferência anual de programadores Python. – http://www.pythonbrasil.org.br/ Comunidades !Comunidades !
  6. 6. Comunidade - Python ● Plone – http://plone.org/ – [Plone-Users] - plone-users@lists.sourceforge.net – IRC Chat ● #plone - (freenode) ● TchêLinux – http://tchelinux.org/ – [TcheLinux] tchelinux.googlegroups.com – IRC Chat – freenode - ● #tchelinux - (freenode) Comunidades !Comunidades !
  7. 7. PYTHON É LEGAL !PYTHON É LEGAL !
  8. 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. 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.
  10. 10. PYTHONPYTHON ● Documentação http://docs.python.org/ ● Qualidade ● Produtividade ● Integração ● Guia de Style http://www.python.org/dev/peps/pep-0008/ ● Comunidade
  11. 11. PYTHONPYTHON “O importante é usar Python” Dorneles Treméa
  12. 12. PYTHONPYTHON Camargo e Tavares “Com Python, você só se preocupa com o problema” Luciano Camargo Cruz
  13. 13. TEM OUTROS MOTIVOS ?TEM OUTROS MOTIVOS ?
  14. 14. POPULARIDADE PYTHON !POPULARIDADE PYTHON ! ● The RedMonk Programming Language Rankings http://redmonk.com/sogrady/2014/01/22/language-rankings-1-14/
  15. 15. POPULARIDADE PYTHON !POPULARIDADE PYTHON ! ● Ohloh Programming Language Comparison 2014 https://www.ohloh.net/languages/compare
  16. 16. POPULARIDADE PYTHON !POPULARIDADE PYTHON ! ● Linux Journal Reader's Choice Awards 2013 http://www.linuxjournal.com/rc2013?page=42
  17. 17. POPULARIDADE PYTHON !POPULARIDADE PYTHON ! ● Programming Language Popularity LangPop.com 2011LangPop.com Last data update: Fri Oct 25 17:17:19 -0400 2013
  18. 18. POPULARIDADE PYTHON !POPULARIDADE PYTHON ! ● TIOBE Programming Community Index 2014 http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
  19. 19. QUEM USA PYTHON ?QUEM USA PYTHON ?
  20. 20. APRENDENDO PYTHON !APRENDENDO PYTHON !
  21. 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. 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
  23. 23. APRENDENDO PYTHON !APRENDENDO PYTHON ! class HelloWorld { public static void main(String[] args) { System.out.println("Hello, world!"); } } >>> print “Hello, world!” ● Simplicidade
  24. 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)
  25. 25. 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
  26. 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. 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 }
  28. 28. APRENDENDO PYTHON !APRENDENDO PYTHON ! ● Classes – Entre outros...By LCCruz
  29. 29. APRENDENDO PYTHON !APRENDENDO PYTHON ! ● Artificial Intelligence: a Modern Approach – https://code.google.com/p/aima-python/
  30. 30. EMPREENDENDO COM PYTHON !EMPREENDENDO COM PYTHON !
  31. 31. QUEM USA PYTHON ?QUEM USA PYTHON ?
  32. 32. PRODUTIVIDADE PYTHON !PRODUTIVIDADE PYTHON ! ● Tempo para ser produtivo: ● Linguagem C : 2 anos ● Linguagem Java : 6 meses ● Linguagem Python : 1 mês
  33. 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. 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. 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. 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. 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
  38. 38. QUEM USA PYTHON ?QUEM USA PYTHON ?
  39. 39. DEMANDA PYTHON !DEMANDA PYTHON ! ● Job Trends 2013 http://www.indeed.com/jobtrends
  40. 40. CASE PYTHON !CASE PYTHON ! ● Otics 2007 – Portal do Observatório Nacional de Saúde – Python/Zope/Plone – UCS-UFRGS-FIOCRUZ
  41. 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. 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. 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
  44. 44. Equipe no FISL15Equipe no FISL15 Molon | Pereira | João | Camargo | Davi
  45. 45. Python[NOW] Fenalivre - Passo Fundo Maio, 2014 luciano@hadi.com.br joaoluis.tavares@hadi.com.br Obrigado!

×