O início
O livro começa forte com um Tutorial capítulo que apresenta um programa simples “Hello, World” e também mostra algumas das vantagens de usar Go. O minimalismo está fadado a atrair os programadores que estão fartos de bibliotecas inchadas. Você não pode declarar uma variável e não usá-la no resto do seu programa Go. Você não pode importar uma biblioteca e não usá-la em seu código. Simplesmente não compilará. Você não precisa discutir sobre o formato do seu código. Por exemplo, a antiga batalha entre:
func main ()//E
função principal ()
É resolvido pelo compilador que aceita apenas o primeiro e não o último. Outras nuances são resolvidas por ferramentas como o gofmt, que pega seu arquivo de origem Go e o formata de maneira padronizada. Portanto, todos os programas Go seguem a mesma convenção, o que, por sua vez, melhora a legibilidade do código.
O primeiro capítulo enfatiza esses argumentos de venda e faz um trabalho realmente bom em dar aos leitores uma amostra do que Go realmente significa: uma linguagem de propósito geral projetada para gerar binários estáticos com o mínimo de inchaço possível.
Brevidade
Os programadores experientes estão cansados de aprender sobre os mesmos conceitos, como loops for, instruções if-else, etc. repetidamente para diferentes linguagens. O primeiro capítulo esconde todas essas informações tediosas, encorajando os usuários a escrever programas Unix-y simples (como era o caso com a linguagem de programação C).
Uma desvantagem disso introdução rápida é o fato de que novos leitores ficarão completamente confusos com a sintaxe. Os programas começam rapidamente a usar os operadores de ponto e vários conceitos de programação orientada a objetos após dois ou três exemplos no primeiro capítulo. Isso é importante para manter a velocidade e a brevidade da experiência geral de leitura e é uma escolha muito consciente por parte dos escritores.
O livro também pressupõe que os leitores estejam familiarizados com pelo menos uma linguagem de programação, antes de escolherem este livro. Pode ser Python, JavaScript, Java, C ou qualquer outra linguagem de uso geral.
Site complementar
O livro vem com um site complementar. Você pode importar diretamente os programas fornecidos no livro a partir deste site e executá-los sem precisar digitar (ou copiar e colar de seu aplicativo Kindle). Você pode até conferir o primeiro capítulo (que, aliás, é o meu favorito) gratuitamente neste site e decidir se este livro é para você ou não.
Os autores prestaram atenção às dores de um programador tentando aprender uma nova linguagem. As distrações são reduzidas ao mínimo com o link de cada programa da web mencionado na parte superior dele. Assim, você pode buscar o código, executá-lo, ajustá-lo e desenvolvê-lo, se quiser.
Uma lista abrangente de erratas também é mantida neste site, e você pode consultá-la se achar que algo está errado.
Negócio sério
Se você está esperando um guia simples para scripts causais, este não é o livro para você. A razão é que muito terreno é coberto primeiro e, em seguida, os detalhes são preenchidos à medida que avançamos para os capítulos posteriores.
Este livro é para pessoas que querem entender as construções, os detalhes essenciais de como Go funciona. Você estará criando GIFs, escrevendo servidores web e plotando conjuntos de Mandelbrot e muito mais, mas nada disso faria qualquer sentido a menos que você tenha prestado atenção aos pontos mais delicados feitos nos capítulos anteriores (com o Capítulo 1 sendo uma espécie de exceção, como é uma visão geral do idioma).
A maior parte do resto do livro se concentra em vários detalhes relacionados à sintaxe sobre Go, incluindo loops de controle de coisas, variáveis, funções, métodos, rotinas de Go e muito mais. Tudo isso é ilustrado fazendo o leitor passar por programas úteis e não por cenários idealistas inventados.
Mesmo se você quiser pular a maioria dos capítulos do meio do livro, eu sugiro fortemente que vasculhe o capítulo 5 para uma compreensão de Pânico, tratamento de erros e funções anônimas. No entanto, eu sugiro fortemente que você leia todos os capítulos sequencialmente antes de chegarmos à joia da coroa de Go - Simultaneidade.
Ênfase na simultaneidade
A linguagem Go foi projetada do zero com a simultaneidade em mente. A maioria dos processadores modernos são multicore e multithread, mas os programadores desprezam as complicações que enfrentam ao escrever programas para rodar em tal arquitetura. Com a computação em nuvem caminhando para sistemas distribuídos, o código simultâneo em breve será o único código com bom desempenho por aí.
O capítulo sobre simultaneidade foi escrito para tirar o medo do design simultâneo de nossas mentes. É complicado sim, mas não desesperador. O livro faz um ótimo trabalho de transmitir como Go pode ajudá-lo a desenvolver a mentalidade correta a partir deste.
Conclusão
A experiência de Kernighan desde os primeiros dias do UNIX ainda é muito, muito viável na era moderna de desktops em nuvem, GPUs, IOT, nuvem e tudo o que virá a seguir. Ele e Donovan fizeram um ótimo trabalho ao transmitir essa sabedoria de design de aplicativo e filosofia UNIX usando uma linguagem simples e moderna com desempenho em mente e não hesito em recomendar este livro a qualquer um, desde um estudante do ensino médio a um engenheiro de software sênior com décadas de experiência.