No 14º aniversário do lançamento da linguagem Go como projeto open source
- Um dos cofundadores da linguagem Go fez sua última palestra na conferência GopherConAU, realizada em Sydney em 10 de novembro de 2023.
- A palestra celebrou os 14 anos desde o lançamento da linguagem Go como projeto open source e discutiu tanto os sucessos quanto os pontos que merecem reflexão ao longo desse período.
- O palestrante deixou claro que falava em nome pessoal, e não em nome da equipe do Go nem do Google, e agradeceu à comunidade por sua contribuição para o sucesso da linguagem Go.
Fatores de sucesso e pontos de melhoria da linguagem Go
- O objetivo original da linguagem Go não era criar uma nova linguagem de programação, mas melhorar a forma de escrever software.
- A linguagem Go buscou resolver a complexidade da construção de software moderno para servidores, como gerenciamento de dependências, colaboração em equipes grandes, facilidade de manutenção, testes eficientes e uso eficaz de CPUs multicore e redes.
- A linguagem Go não é apenas uma linguagem de programação, mas um projeto para tornar mais fácil e produtiva a construção de software de produção.
O mascote da linguagem Go, o gopher
- O gopher, mascote da linguagem Go, teve um papel importante no sucesso da linguagem.
- O gopher tornou-se o símbolo dos programadores Go e a bandeira da comunidade, sendo essencial para o crescimento do projeto.
- Tornar o design do gopher público sob a licença Creative Commons Attribution ajudou a promover o espírito de comunidade, mas também trouxe dificuldades relacionadas a direitos autorais.
Fatores técnicos de sucesso da linguagem Go
- A redação da especificação oficial, a existência de múltiplas implementações, a portabilidade, a garantia de compatibilidade, uma biblioteca rica, a facilidade de desenvolvimento de ferramentas e a ferramenta automática de formatação de código
gofmt contribuíram para o sucesso da linguagem Go.
- O
gofmt influenciou toda a comunidade de programação e ajudou a criar um cenário em que a maioria das linguagens passou a ter um formatador padrão.
Concorrência e interfaces
- A linguagem Go adotou a concorrência como um dos principais componentes da linguagem, contribuindo para simplificar a estrutura do software de servidores.
- As interfaces são uma ideia característica da linguagem Go, a resposta do Go ao design orientado a objetos, e desempenham um papel importante na biblioteca padrão e no gerenciamento de dependências.
Genéricos e compilador
- A existência das interfaces foi um dos motivos pelos quais levou tanto tempo para adicionar genéricos à linguagem Go.
- O fato de o compilador inicial do Go ter sido escrito em C gerou controvérsia na comunidade de linguagens de programação, mas foi uma escolha adequada para a evolução da linguagem Go.
Gestão do projeto e gerenciamento de pacotes
- Como projeto open source, a linguagem Go teve um desenvolvimento inicial feito de forma privada, mas, após a abertura ao público, as contribuições da comunidade cresceram de forma explosiva.
- O processo de desenvolvimento do gerenciamento de pacotes não foi tranquilo, e faltou compreensão sobre como colaborar com a comunidade.
Documentação e exemplos
- A documentação inicial da linguagem Go não atendeu às expectativas da comunidade, mas depois foi melhorada, inclusive com a oferta de exemplos executáveis na web.
Opinião do GN⁺
- O sucesso da linguagem Go se deve a fatores como uma biblioteca padrão forte, suporte a concorrência, design baseado em interfaces, gerenciamento de pacotes claro, ferramentas rápidas de build e testes, formatação de código consistente, foco em legibilidade e garantia de compatibilidade.
- A linguagem Go trouxe inovação não apenas em suas funcionalidades como linguagem de programação, mas também na forma de desenvolver software, e isso foi possível graças à diversidade e ao apoio da comunidade.
- O processo de desenvolvimento da linguagem Go e as reflexões sobre ele oferecem lições importantes para a operação de projetos open source.
1 comentários
Comentários do Hacker News
Gratidão às pessoas centrais que dedicam tempo à retrospectiva do projeto
Carinho pela linguagem Go e por sua comunidade
Compartilhamento de uma experiência crítica com o sistema de gerenciamento de pacotes do Go
Visão crítica sobre a linguagem Go
Ponto interessante sobre a decisão de Ken Thompson de usar um compilador C
Ênfase na adoção bem-sucedida do gofmt
Compartilhamento da playlist completa como organizador da GopherConAU
Vantagens de usar Go para criar monorepos com facilidade e compilar apps rapidamente
Falta de menção às escolhas de interoperabilidade do Go e ao C FFI
Opinião sobre escrever compiladores na própria linguagem