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

Go para Pythonistas

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Luciano Ramalho Luciano Ramalho
October 19, 2018
570

Go para Pythonistas

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

Avatar for Luciano Ramalho

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.