(^▽^)
Zig
A linguagem com o melhor build system que já usei até hoje
E lá vamos nós, mais um post falando sobre uma linguagem de programação… Dessa vez eu irei falar sobre a Zig, para ser mais preciso, eu quero comentar sobre o build system da Zig.
Antes, o que é a Zig?
A Zig é uma linguagem de programação com o foco em criação de softwares robustos, ideais e reutilizáveis. Também é uma linguagem simples (no sentido literal, ela não é fácil), que não quer ser um obstáculo para o programador, deixando assim que você foque em debugar o seu programa, não a linguagem.
Ela é uma linguagem em que o código deve ser explícito. Não existem pre-processadores, não existem alocações de memória escondidas, não exite um fluxo de trabalho escondido.
tudo é exposto ao programador, de forma que até mesmo um simples “olá mundo” passe de um simples
printf("Olá, mundo!\n");
para
std.io.getStdOut().writer().print("Olá, {s}!\n", .{"mundo"});
Isso é algo que pode ser útil ou atrapalhar um pouco, acho que só depende de experiência mesmo.
O build system da Zig
Comecei a estudar a Zig ontem, e uma coisa que me chamou a atenção foram 2 tipos de comentários, um de documentação ///
e um de topo de documentação //!
.
O que chama a atenção, é que esses comentários não podem ser utilizados em qualquer lugar, eles devem ser usados, respectivamente, antes de uma definição e no topo do código-fonte.
Esses comentários são usados na criação de um site estático, esse sendo gerado com o comando zig build-exe -femit-docs
.
Sim. O compilador da Zig é capaz de gerar um website de documentação, onde a documentação utilizada pelo site é definida no código-fonte do seu programa.
Só isso já facilita todo o processo de aprendizado para mim, já que eu posso gerar uma documentação para eu mesmo, contendo as referências que eu utilizei para fazer algo, instruções e até mesmo o próprio código-fonte para ser checado.
Compilando um programa feito em zig usando outro arquivo Zig
Esta é outra coisa que me chamou a atenção, o arquivo build.zig
.
Esse arquivo é o responsável por dizer onde está o código-fonte, onde será posto os binários, quais as opções de compilação seram utilizadas, quais os testes que serão executados, e na realidade qualquer coisa que você queira.
O build.zig
é praticamente um Makefile bufado, tendo todo o poder da linguagem disponível para uso.
Zls
Que saudades de um LSP 😭
Diferente da Hare, a Zig possui um lsp, o que é (principalmente na Zig) extremamente útil.
Como eu já mencionei
Ela é uma linguagem em que o código deve ser explícito. [...]
E exemplifiquei com o olá, mundo!
, a Zig tem uma sintaxe que exige que todas as funções utilizadas sejam expostas, e digamos que a biblioteca padrão é bem completa…
tendo isso dito, já dá para pressupor que não dá para você simplesmente dar um chute as cegas sobre como uma função é chamada e acertar de primeira, não facilmente pelo menos (não mesmo).
O Zls também tem um formatador e suporte a sintax highlighting, o que sempre é bem-vindo para mim.
Compilação lenta no começo, rápida no resto
O compilador da Zig possuí um sistema de cache, ele serve para que você não tenha que compiladar todo o programa do zero, basicamente apenas as mudaças são compiladas pelo o que eu entendi (eu posso estar errado, eu ainda não li muito sobre o compilador).
Documentação sempre pronta para leitura
A Zig também tem toda a documentação da biblioteca padrão disponível para uso a qualquer momento, você só precisa executar o comando zig std
e a documentação será aberta em seu navegador de escolha em um servidor web hosteado em sua máquina.
Acho que eu não preciso mencionar o quão útil isso é. Não é?
Junto com a pasta de instalação da Zig, vem também o manual de referência da versão da Zig que você fez download.
Fin
Bem, isso é tudo o que eu tenho a dizer por hoje. Eu tenho um longo caminho pela frente em relação a estudos.
Até o próximo post!