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.

Luciano Ramalho

July 15, 2016
Tweet

More Decks by Luciano Ramalho

Other Decks in Technology

Transcript

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

    de julho de 2016 Luciano Ramalho [email protected] 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 [email protected] Twitter: @ramalhoorg
  3. Depois de BASIC • Turbo Pascal • xBase • Smalltalk

    • Hypertalk (parte do Hypercard) • Visual Basic • Delphi • Perl • PHP • Java • JavaScript
  4. 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...
  5. 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
  6. 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)
  7. 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!
  8. 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)
  9. 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
  10. 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)
  11. 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!