Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Antes e depois de Python: minhas linguagens favoritas

Antes e depois de Python: minhas linguagens favoritas

Uma conversa sobre estética e linguagens de programação. Apresentada no FISL 2016 - Porto Alegre.

27c093d0834208f4712faaaec38c2c5c?s=128

Luciano Ramalho

July 15, 2016
Tweet

Transcript

  1. Antes e depois de Python: minhas linguagens favoritas FISL, 15

    de julho de 2016 Luciano Ramalho luciano@ramalho.org Twitter: @ramalhoorg
  2. Ou: será que dá para falar sobre estética e linguagens

    de programação na mesma palestra? FISL, 15 de julho de 2016 Luciano Ramalho luciano@ramalho.org Twitter: @ramalhoorg
  3. None
  4. Modernismo

  5. None
  6. None
  7. None
  8. None
  9. None
  10. Design

  11. None
  12. None
  13. None
  14. ☎ U+260E ☏ U+260F ✆ U+2706

  15. None
  16. None
  17. None
  18. None
  19. None
  20. None
  21. None
  22. None
  23. None
  24. None
  25. None
  26. None
  27. None
  28. None
  29. None
  30. None
  31. None
  32. None
  33. None
  34. None
  35. None
  36. None
  37. None
  38. Linguagens

  39. None
  40. None
  41. Antes de Python

  42. None
  43. None
  44. None
  45. None
  46. None
  47. Depois de BASIC • Turbo Pascal • xBase • Smalltalk

    • Hypertalk (parte do Hypercard) • Visual Basic • Delphi • Perl • PHP • Java • JavaScript
  48. Python

  49. Python • Sintaxe simples, regular e altamente legível • Semântica

    altamente consistente • Incrível oferta de bibliotecas robustas para todo tipo de aplicação – exceto mobile :-( • Suporte a abstrações úteis – funções e classes de 1a classe, closures, namespaces, geradores, comprensões, decoradores, sobrecarga de operadores, descritores de atributos...
  50. Fluent Python, meu 1º livro

  51. Estética

  52. None
  53. None
  54. None
  55. None
  56. None
  57. None
  58. None
  59. None
  60. None
  61. None
  62. None
  63. None
  64. Beleza maquinal

  65. None
  66. None
  67. None
  68. None
  69. None
  70. None
  71. Depois de Python

  72. Go (a linguagem) • Sintaxe simples e regular • Semântica

    intencionalmente limitada para reduzir surpresas e excessos de abstração – Sem herança • Interfaces dinâmicas checadas pelo compilador • Implementa o modelo de concorrência CSP (Communicating Sequential Processes – Hoare) – Comunicação entre go-rotinas através de canais (channels) que são objetos de 1a classe • Gera binários executáveis
  73. Clojure • Sintaxe ultra simples e regular • Paradigma funcional

    • Implementa STM (Software Transactional Memory) • Modelo de concorrência baseado em agentes • Incorporou CSP assim que começou o hype sobre Go • Macros sintáticas: novas “formas especiais” • Server-side (JVM) e client-side (ClojureScript)
  74. Elixir • Implementada sobre a máquina virtual de Erlang –

    BEAM • Linguagem funcional • Modelo de concorrência baseado em processos leves trocando mensagens • Aproveita todo o eco-sistema de Erlang, incluindo o framework OTP para sistemas distribuídos de alta confiabilidade • Sintaxe inspirada principalmente por Ruby e Erlang • Macros sintáticas!
  75. None
  76. None
  77. None
  78. None
  79. None
  80. Enfim...

  81. Não estou abandonando Python • Continua sendo minha linguagem favorita

    porque: – Sou fluente nela ;-) – Ultra versátil: largamente utilizada em muitos campos (CGI, DevOps, comp. científica...) – Ainda estou no começo de explorá-la em um vasto campo extremamente promissor: análise e visualização de dados (analytics)
  82. Concorrência em Python • Inovações importantes – asyncio: API padrão

    para loop de eventos de I/O – async/await: nova sintaxe para co-rotinas – uvloop: loop de eventos baseado em libuv • a biblioteca central do Node.js, escrita em C
  83. As próximas linguagens • Elixir: uma interface moderna para programar

    a plataforma Erlang (BEAM+OTP) • Go: uma linguagem de baixo nível moderna implementando CSP • Clojure: um LISP moderno sobre a plataforma Java (com suporte a JS também)
  84. None
  85. O que elas têm em comum • Todas têm foco

    em alta concorrência • Duck typing em Elixir e Clojure • “Duck typing estático” e sistema de tipos simples em Go • Nenhuma delas tem OO com classes!
  86. None
  87. None
  88. None
  89. Meu tema no FISL 2017 será... ...vamos conversando: @ramalhoorg