História do Go
Esta aula apresenta a história da linguagem Go, desde sua criação por Rob Pike, Ken Thompson e Robert Griesemer no Google em 2007 até seu futuro promissor. Entenderemos as motivações por trás do desenvolvimento da linguagem e sua evolução ao longo dos anos.
Bem-vindo à primeira aula do nosso curso de Go! Nesta aula, vamos explorar a história da linguagem Go, entendendo quem a criou, por que ela surgiu e para onde está caminhando. Go é uma linguagem moderna, criada para resolver problemas reais do desenvolvimento de software em escala.
Introdução
Go (também conhecida como Golang) é uma linguagem de programação compilada, estaticamente tipada, com sintaxe semelhante ao C, mas com recursos modernos como garbage collection, concorrência nativa e gerenciamento de dependências. Foi projetada para ser eficiente, produtiva e adequada para sistemas de grande porte.
Pessoas e cronologia (Rob Pike, Ken Thompson, Robert Griesemer, Google)
O Go foi criado por três renomados engenheiros do Google:
- Rob Pike: conhecido por seu trabalho no Plan 9, na linguagem Limbo e no sistema de janelas Blit. Também é coautor de livros sobre programação.
- Ken Thompson: um dos criadores do Unix e da linguagem B, predecessor do C. Recebeu o Prêmio Turing em 1983.
- Robert Griesemer: trabalhou em sistemas de máquinas virtuais e em linguagens como Java (HotSpot) e V8.
A cronologia do Go:
- 2007: O projeto começa como uma iniciativa interna no Google para criar uma nova linguagem que atendesse às necessidades de infraestrutura da empresa.
- 2008: O compilador e a runtime começam a ser desenvolvidos. A linguagem ainda não tem nome oficial.
- 2009: Em novembro, o Go é anunciado publicamente como um projeto open source. O nome "Go" é escolhido.
- 2012: A versão 1.0 é lançada, trazendo estabilidade e compatibilidade com versões anteriores.
- 2022: Go 1.18 introduz genéricos, um dos recursos mais solicitados pela comunidade.
Por que o Go surgiu
O Go surgiu para resolver problemas enfrentados no Google ao desenvolver sistemas de grande escala:
- Compilação lenta: C++ demorava muito para compilar projetos enormes. Go foi projetado para compilar rapidamente.
- Dependências complexas: O gerenciamento de dependências em C++ era complicado. Go introduziu um sistema simples de módulos.
- Concorrência difícil: A programação concorrente em C++ era propensa a erros. Go oferece goroutines e canais para concorrência segura e eficiente.
- Falta de produtividade: Recursos como inferência de tipos, garbage collection e ferramentas integradas (fmt, gofmt) aumentam a produtividade.
Exemplo de código em Go que demonstra concorrência com goroutines:
package main
import (
"fmt"
"time"
)
func say(s string) {
for i := 0; i < 5; i++ {
time.Sleep(100 * time.Millisecond)
fmt.Println(s)
}
}
func main() {
go say("world")
say("hello")
}Neste exemplo, a palavra "world" é impressa concorrentemente com "hello".
Futuro da linguagem
Go continua evoluindo com foco em simplicidade, desempenho e escalabilidade. As versões recentes trouxeram:
- Genéricos (1.18): permitem escrever funções e tipos que funcionam com qualquer tipo.
- Melhorias no gerenciamento de dependências (módulos).
- Suporte a WebAssembly.
- Ferramentas de análise estática como o vet e o gofmt.
A comunidade Go é ativa e a linguagem é usada em grandes projetos como Docker, Kubernetes, Terraform e o próprio site do Google. O futuro reserva mais otimizações, suporte a novos paradigmas e expansão do ecossistema.
Referências
Exercícios
- Quem são os três criadores do Go?Rob Pike, Ken Thompson e Robert Griesemer.
- Em que ano o Go foi anunciado publicamente?2009.
- Cite duas razões pelas quais o Go foi criado.Compilação lenta de C++ e dificuldade de gerenciar dependências.
- Qual é o recurso de concorrência nativa do Go?Goroutines e canais.
- Em qual versão do Go foram introduzidos os genéricos?Go 1.18 (lançada em 2022).