Introdução

0

Introdução

A linguagem Go, também connhecida como GoLang, é uma linguagem de programação compilada e coletada a lixo, desenvolvida pela Google em 2007, concebida por uma equipe de renomados engenheiros (Robert Griesemer, Rob Pike e Ken Thompson) e lançada oficialmente em 2009. Com sua primeira versão estável lançada em 2012.

Motivações para o desenvolvimento:

  • Produtividade
  • Concorrência Nativa
  • Desempenho
  • Backend
Gopher Coding

História

0

História

Frustados com a complexidade e compilação lenta de linguagens como C++ para sistemas do Google, os engenheiros decidiram criar uma linguagem que combinasse o melhor dos dois mundos: a eficiência de C/C++ e a simplicidade de Python.

Após dois anos de desenvolvimento, Go foi oficialmente lançado em 2009 como um projeto de código aberto. Sua simplicidade, performance e o seu poderoso sistema de concorrência rapidamente conquistaram a comunidade de desenvolvedores e também grandes empresas como Netflix, Uber e Dropbox que adotaram Go para construir sistemas escaláveis e de alto desempenho.

Go creators

Tecnologias

0

Tecnologias

A linguagem Go é amplamente utilizada em diversas áreas da tecnologia, com sua combinação única de simplicidade, performance e um modelo de concorrência excepcional, se estabeleceu como uma ferramenta poderosa para uma variedade de aplicações no mundo da tecnologia moderna.

Abaixo estão algumas das tecnologias e ferramentas mais notáveis que utilizam Go:

  • Desenvolvimento Web e APIs
  • Acesso a Banco de Dados
  • Infraestrutura e Nuvem (Cloud-Native)

Utilização

0

Utilização

A linguagem Go, se estabeleceu como uma ferramenta poderosa para uma variedade de aplicações no mundo da tecnologia moderna. Alguns softwares e ferramentas que utilizam o Go:

  • Uber: Suporte a lógica de roteamento de corridas, cálculo de preços e telemetria em tempo real
  • Dropbox: Serviços de sincronização e transferência de arquivos, otimizados com Go para performance de I/O
  • SoundCloud: Ingestão de uploads de áudio e orquestração de transcodificação em massa
  • Docker: Plataforma de conteinerização que empacota aplicações e suas dependências em “containers” leves e portáteis
  • Hugo: Gerador de sites estáticos ultrarrápido
  • Caddy: Servidor web avançado e de código aberto, criado em Go, que oferece HTTPS automático por padrão
Gophers Playing

Especificação

0

Especificação

O linguagem Go, mais precisamente, sua gramática, é definida completamente em https://go.dev/ref/spec. Enquanto a documentação está disponível em https://go.dev/doc/.

Go segue uma filosofia minimalista, tendo, por exemplo, apenas 25 palavras-chaves: break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var.

O Go tem os tipos primitivos: bool byte rune int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 float32 float64 complex64 complex128 string e error.

Paradigma

0

Paradigma

Go é uma linguagem de programação multiparadigma, o que significa que suporta diferentes estilos de programação. Os principais paradigmas suportados pelo Go são:

  • Programação Imperativa: o estilo mais comum, onde o programador descreve passo a passo como o programa deve ser executado
  • Programação Funcional: suporte a funções de primeira classe, permitindo passar funções como argumentos e retornar funções de outras
  • Programação Orientada a Objetos: embora Go não tenha classes, ele suporta tipos e métodos, permitindo encapsulamento, e, de certa forma, herança
  • Programação Concorrente: com goroutines e canais, Go facilita a escrita de programas que podem executar várias tarefas ao mesmo tempo

Ambientes de Desenvolvimento

0
Go's Gopher

Ambientes de Desenvolvimento

Para programar em Go, você pode usar qualquer editor de texto, mas existem algumas ferramentas que facilitam muito a vida dos desenvolvedores.

Essas ferramentas ajudam a escrever código mais rápido, encontrar erros e entender melhor o que está acontecendo no programa.

  • Visual Studio Code: Um editor de código muito popular com suporte a Go
  • GoLand: Um IDE específico para Go, com muitas funcionalidades avançadas
  • Vim/Emacs: Editores de texto que também têm suporte a Go
  • Go Playground: Um site onde você pode escrever e executar código Go diretamente no navegador

Ambientes de Desenvolvimento

0

Ambientes de Desenvolvimento

Os comandos e estruturas fundamentais que formam a base para construir qualquer aplicação em Go, desde a linha de comando até sistemas complexos que interagem com dependências na nuvem:

  • go run: Compila e executa um ou mais arquivos de código-fonte Go
  • go build: Compila os pacotes e suas dependências, gerando um arquivo executável
  • go get: Baixa e instala pacotes de repositórios remotos, como o GitHub
  • go fmt: Formata o código Go de acordo com as convenções de estilo da linguagem
  • go mod: Gerencia dependências e módulos em projetos Go
Go's Gopher

Exemplos de Programas

0

Exemplos de Programas

0

Coletor de Lixo

0

Coletor de Lixo

O garbage collector (GC) em Go é responsável por gerenciar automaticamente a memória. Ele identifica e libera objetos que não são mais utilizados pelo programa, evitando vazamentos de memória.

Coletor de Lixo

Concorrência

0

Concorrência em Go

Concorrência é quando o programa consegue realizar várias tarefas ao mesmo tempo. Imagine um restaurante com vários garçons atendendo clientes ao mesmo tempo, isso é concorrência!

Em Go, usamos algo chamado goroutine para isso. Cada goroutine é como um garçom: ela faz um trabalho separado sem atrapalhar os outros.

Para os garçons (goroutines) se comunicarem entre si, usamos canais. Um canal é como um tubo por onde um manda mensagem para o outro.

O legal é que o Go cuida disso tudo automaticamente, sem que a gente precise se preocupar com detalhes complicados.

A ideia principal do Go é: "Em vez de brigar por acesso à memória, as partes do programa conversam entre si de forma organizada."

Concorrência

0

Concorrência

0

Vantagens e Desvantagens

0

Vantagens

  • Desempenho: compilação rápida
  • Simplicidade: sintaxe clara e fácil de aprender
  • Concorrência Nativa: suporte robusto para concorrência
  • Portabilidade: código em Go pode ser executado em diferentes arquiteturas e sistemas operacionais
  • Curva de Aprendizado: fácil de aprender para iniciantes

Desvantagens

  • Falta de Recursos Avançados: não possui recursos como herança, operador ternário e sobrecarga de funcões
  • Bibliotecas Limitadas: ecossistema ainda em crescimento
  • Coletor de lixo: torna o gerenciamento de memória menos eficiente
  • Curva de Aprendizado: Pode ser difícil para iniciantes devido à concorrência e gerenciamento de memória

Conclusão

0

Conclusão

Ao adentrarmos nossa jornada pela linguagem Go, fica claro que nao estamos falando apenas de mais uma ferramenta no vasto universo da programação. Go nasceu de uma necessidade real, de uma frustração de seus criadores com as ferramentas existentes, e sua solução foi prática: simplicidade aliada á performance.

Go nos ensina uma lição valiosa, na complexidade de software modernos, as vezes a solução mais sofisticada é uma mais simples.

Fim da apresentação