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

Go para Pythonistas

Luciano Ramalho
October 19, 2018
510

Go para Pythonistas

Slides apresentados na PythonBrasil[14] em Natal, RN.

Luciano Ramalho

October 19, 2018
Tweet

Transcript

  1. GO PARA PYTHONISTAS Porque aprender Go é um ótimo investimento

    para quem já sabe Python Python + Go FTW
  2. RECADOS • Ainda dá tempo de ir para a palestra

    do Leonardo Rochael • A melhor e maior PythonBrasil de todos os tempos!
  3. 2018: 20 ANOS DE PYTHON PARA MIM Make subheads 24

    Body defaults to 18pt by default. • Bullet One ◦ Bullet Two ▪ Bullet Three ▪ Bullet Four • Bullet Five ◦ Bullet 6
  4. PÁGINA 1 CONSUMINDO DADOS REMOTOS Consumindo recursos preciosos do Zope

    enquanto espera o FTP ZODB Servidor FTP remoto Zope Página 1 Python 1.5.2
  5. PROGRAMAÇÃO ASSÍNCRONA NO PÁGINA 1 ZODB Servidor FTP remoto Script

    assíncrono Zope Página 1 Assim o Zope recebe requisições rápidas (locais) do script Tudo Python 1.5.2
  6. LIÇÕES APRENDIDAS • Nunca faça o seu framework Web esperar

    por serviços externos. Ele é feito para servir HTTP, e não consumir. • Programação assíncrona é muito eficiente para escrever clientes de serviços externos. • Programação concorrente é sempre mais difícil de fazer direito do que a gente imagina.
  7. SOLUÇÕES AO LONGO DO TEMPO • Asyncore e/ou bibliotecas externas

    • Twisted • Tornado ◦ Dilema a cada novo projeto: Twisted ou Tornado? • Node.js: 3ª tentativa de amar JavaScript • asyncio: agora podemos competir com Node! ◦ Em termos... a biblioteca padrão não ajuda • Redescobrindo threads com threadpools
  8. O QUE É I/O BOUND? Um processamento onde o gargalo

    é E/S e não a CPU Exemplos: • acesso a disco (mesmo stat em um SSD) • acesso a rede como cliente • caso extremo, como servidor: responder a clientes com conexões muito lentas A principal vantagem do Node.js sobre o Python 3.7 é que a biblioteca padrão e as bibliotecas externas, todas elas, fazem E/S de forma assíncrona.
  9. SISTEMA I/O BOUND: UM SER IMAGINÁRIO Você pode ter uma

    função I/O bound. Ex: file.read() Um sistema inteiro nunca é apenas I/O bound. Sempre há partes CPU bound.
  10. MORAL DA ESTÓRIA Em um sistma assíncrono, cada pequena função

    CPU bound atrasa o loop de eventos, cumulativamente, até que seu monolito se torna tão lento que precisa ser refeito…
  11. COMO SAIR DESSA SINUCA • Celery (a palestra do Leo

    Rochael) • Reinventar a roda com multiprocessing (ou Node cluster, mesma merda) • Usar outra linguagem para micro-serviços que você já sabe que serão CPU bound
  12. PORQUE RESOLVI ESTUDAR GO PRIMEIRO Mais fácil de aprender, para

    Pythonistas Compila direto para código nativo: não precisa instalar um sistema de runtime Mercado: Go está se popularizando muito rápido e já tem uma grande base de usuários
  13. PALESTRA NO TDC FLORIANÓPOLIS, 2017 Make subheads 24 Body defaults

    to 18pt by default. • Bullet One ◦ Bullet Two ▪ Bullet Three ▪ Bullet Four • Bullet Five ◦ Bullet 6
  14. PALAVRAS FINAIS Não é difícil aprender Go Python é melhor

    que Go em muitos aspectos Go é melhor que Python em muitos aspectos Aprender Go é um excelente investimento em você: resolve certos problemas que Python não resolve tão bem.