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

Go: cadê o paradigma?

Go: cadê o paradigma?

Qual o paradigma da linguagem Go? Isso é uma boa pergunta? Vamos ver um jeito melhor de entender linguagens a fundo.

Luciano Ramalho

November 17, 2017
Tweet

More Decks by Luciano Ramalho

Other Decks in Technology

Transcript

  1. Te o r i a n a p r á

    t i c a CADÊ O PARADIGMA? Qual o paradigma da linguagem Go? Isso é uma boa pergunta? Vamos ver um jeito melhor de entender linguagens a fundo. Luciano Ramalho @ramalhoorg
  2. FLUENT PYTHON, MEU 1º LIVRO Fluent Python (O’Reilly, 2015) Python

    Fluente (Novatec, 2015) Python к вершинам
 мастерства (DMK, 2015) 流暢的 Python (Gotop, 2016) também em Polonês, Coreano… 3 4.7 stars na
 Amazon.com
  3. REVISÃO TÉCNICA DA TRADUÇÃO PT-BR DO GOPL GOPL:
 A Linguagem

    de Programação Go (Novatec, 2016) Donovan & Kernighan 4
  4. 8

  5. OUTRO LIVRO Princípios de Linguagens de Programação
 (2003) Ana Cristina

    Vieira de Melo Flávio Soares Corrêa da Silva 16
  6. 17

  7. Lisp (CLOS) C Java Python Go Funções de 1ª classe

    ✔ ∗ ✔ ✔ ✔ Tipos de 1ª classe ✔ ✔ Iteradores ∗ ✔ ✔ ∗ Modelo de variáveis referência valor* valor e referência referência valor** Tipagem dinâmica estática estática dinâmica estática Tipos estruturais nominais nominais estruturais estruturais ALGUMAS CARACTERÍSTICAS X LINGUAGENS 34
  8. Lisp (CLOS) C Java Python Go Funções de 1ª classe

    ✔ ∗ ✔ ✔ ✔ Tipos de 1ª classe ✔ ✔ Iteradores ∗ ✔ ✔ ∗ Modelo de variáveis referência valor* valor e referência referência valor** Tipagem dinâmica estática estática dinâmica estática Tipos estruturais nominais nominais estruturais estruturais ALGUMAS CARACTERÍSTICAS X LINGUAGENS 35 Funções como objetos “Classes” como objetos
  9. ALGUMAS CARACTERÍSTICAS X LINGUAGENS 36 Lisp (CLOS) C Java Python

    Go Funções de 1ª classe ✔ ∗ ✔ ✔ ✔ Tipos de 1ª classe ✔ ✔ Iteradores ∗ ✔ ✔ ∗ Modelo de variáveis referência valor* valor e referência referência valor** Tipagem dinâmica estática estática dinâmica estática Tipos estruturais nominais nominais estruturais estruturais
  10. ALGUMAS CARACTERÍSTICAS X LINGUAGENS 37 Lisp (CLOS) C Java Python

    Go Funções de 1ª classe ✔ ∗ ✔ ✔ ✔ Tipos de 1ª classe ✔ ✔ Iteradores ∗ ✔ ✔ ∗ Modelo de variáveis referência valor* valor e referência referência valor** Tipagem dinâmica estática estática dinâmica estática Tipos estruturais nominais nominais estruturais estruturais
  11. ALGUMAS CARACTERÍSTICAS X LINGUAGENS 38 Lisp (CLOS) C Java Python

    Go Funções de 1ª classe ✔ ∗ ✔ ✔ ✔ Tipos de 1ª classe ✔ ✔ Iteradores ∗ ✔ ✔ ∗ Modelo de variáveis referência valor* valor e referência referência valor** Tipagem dinâmica estática estática dinâmica estática Tipos estruturais nominais nominais estruturais estruturais
  12. ALGUMAS CARACTERÍSTICAS X LINGUAGENS 39 Lisp (CLOS) C Java Python

    Go Funções de 1ª classe ✔ ∗ ✔ ✔ ✔ Tipos de 1ª classe ✔ ✔ Iteradores ∗ ✔ ✔ ∗ Modelo de variáveis referência valor* valor e referência referência valor* e referência Tipagem dinâmica estática estática dinâmica estática Tipos estruturais nominais nominais estruturais estruturais
  13. GOF: O LIVRO DA “GANGUE DOS 4” Design Patterns: Elements

    of Reusable Object-Oriented Software (1995) Erich Gamma
 Richard Helm
 Ralph Johnson
 John Vlissides 41
  14. NEM TODOS OS PATTERNS SÃO UNIVERSAIS Erich Gamma, Richard Helm,

    Ralph Johnson, and John Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software (Addison-Wesley, 1995), p. 4. 43
  15. NEM TODOS OS PATTERNS SÃO UNIVERSAIS Erich Gamma, Richard Helm,

    Ralph Johnson, and John Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software (Addison-Wesley, 1995), p. 4. 44
  16. 45

  17. 46

  18. 47

  19. INTERFACE X FUNÇÕES DE 1ª CLASSE Mas o pacote http

    suporta os dois estilos de programação*: 63 *Kumar Iyer (ThoughtWorks): Higher-order functions vs interfaces in golang http://bit.ly/2j39uKh
  20. PORQUE APRENDER OS FUNDAMENTOS* Aprender mais facilmente novas linguagens Aproveitar

    melhor as características da linguagem Saber escolher formas alternativas de implementação Fazer bom uso de padrões de projeto Depurar bugs complicados Imitar características úteis em linguagens onde elas faltam 65 Inspirado por Programming Language Pragmatics Michael L. Scott *
  21. VAMOS APRENDER A TEORIA CODANDO? Programming Languages: An Interpreter-based Approach

    (1990) Samuel Kamin Dica da bibliografia de Peter Norvig 66