V de Linguagem

Esta semana, lendo um pouco sobre Zig, acabei me deparando com a linguagem V.

Achei a proposta da linguagem bem interessante e acabei gastando algumas horas lendo a documentação e brincando com alguns exemplos.

A linguagem ainda é bem nova, não chegou nem na versão 1.0 ainda. Aliás, a próxima versão será a 0.3. Ou seja, uma recém nascida.

Do que eu gostei?

Eu gostei muito da simplicidade. Ela me lembra bastante Go. E pudera, Go foi uma das principais inspirações da linguagem.

Fonte: V for Go developers (link)

A compilação é muito rápida. O próprio build da linguagem é super rápido. Você faz um clone do repositório, make e está pronto em instantes.

Fonte: Small and easy to build compiler (link)

Tempo de compilação é uma coisa que me incomoda um pouco quando estou mexendo com Rust, por exemplo. Cada cargo build ou check é uma esperinha chata. Com Go isso não acontece.

Além da simplicidade, a linguagem se propõe a trazer para mesa um tanto de features desejáveis de outras linguagens e mais alguns bônus. Como eles dizem na documentação, V foi criada porque nenhuma das linguagens que os inspiraram tinha “todas” as features que eles buscavam.

Fonte: Comparison of V and other languages (link)

Outra coisa que gostei bastante: baterias inclusas. Não tem coisa mais irritante do que ter que ficar instalando um pacote para cada coisa trivial que você precisa fazer.

V traz built-in uma biblioteca multiplataforma de UI nativa, biblioteca gráfica 3D, ORM (que atualmente suporta SQLite, mas há trabalho em curso para MySQL e Postgres; e no futuro também Oracle), frameworks de Web e Teste, etc. O mínimo que você usa no dia a dia.

E finalmente, a interoperabilidade com C. V compila para C; e na versão que está por vir, vai ser capaz de traduzir C para V também. Isso é fantástico por dois motivos: C roda em qualquer lugar; você vai poder dar uma vida nova ao seu código C legado.

Tem mais algumas outras coisas que achei bacana na proposta da linguagem. Algumas delas são coisas que também gosto em Rust, Go, C++, enfim, acho que não vale a pena comentar, para não chover no molhado. O principal é o que falei mesmo.

Do que não gostei?

Honestamente, de nada exatamente. Mas encontrei algumas limitações, que são naturais para o estado de maturidade da linguagem.

Uma das features da linguagem é que o backend dela é C e não LLVM, como já mencionei. Isso é interessante. Mas às vezes, você se depara com alguns erros de compilação que te apontam para o código C. Se você souber C, okay, você está em casa. Mas se você não souber, provavelmente vai ficar mais assustado do que esclarecido.

Fonte: Eu, eu mesmo.

Outras coisas mais práticas:

– O plugin para VSCode ainda é básico;
– A documentação ainda é sucinta;
– Dúvida no StackOverflow? Boa sorte!

Agora e além

Para mim, documentação, exemplos de uso e casos de erro vs. solução (a.k.a. StackOverflow) são fundamentais para a adoção de qualquer linguagem ou tecnologia em ambiente produtivo. É preciso ter uma comunidade sólida ao redor de uma linguagem para que sua adoção possa acontecer em ambiente comercial. Do contrário, boa sorte tentando convencer o seu chefe de que Xyz é a melhor solução.

Dito isso, muito embora, eu, particularmente, não ache que V esteja pronta para produção (ao menos, não para o meu contexto atual), já há bastante coisa legal sendo feita em V, desde computação científica até bot de Telegram.

Tem um repositório bacana, que segue aquela ideia de “awesome alguma coisa”, que você pode dar uma olhada, para ver o que já fizeram com V.

E como usuário de software open source, membro da comunidade, este é um ótimo momento para contribuir com o amadurecimento da linguagem, se ela te interessar. (Senão V, que seja outra linguagem ou tecnologia open source qualquer que você se interesse. Contribuir de volta é sempre uma boa.)

O que eu fiz para ajudar? Escrevi um exemplo de interop com C para converter HTML em PDF usando libwkhtmltox e mandei um PR para os mantenedores da linguagem incluírem no repo oficial.

Fonte: Convert HTML to PDF using V and libwkhtmltox (Source)

Talvez contribua mais no futuro, conforme acompanho de perto a evolução e o amadurecimento da linguagem.

Vamos ver.

UPDATE: 03-01-2021 – Pull request foi aceito e incorporado à master.

Você pode ter o seu próprio GitHub

Quem é que “não” conhece e adora o GitHub? Com certeza o número de pessoas que respondem “sim” a está pergunta só tem diminuido, porque o GitHub cresce em popularidade e sucesso a cada dia. Também pudera, né?

Bem, mas indo direto ao assunto, a novidade que fiquei sabendo hoje é que agora é possível para qualquer empresa ter sua própria instalação de GitHub.

GitHub:FI é o novo produto que a moçada da Logical Awesome está colocando no mercado. Ele é basicamente o mesmo bom e velho jovem GitHub de sempre, mas instalado na infra-estrutura privada da sua empresa, rodando sobre JRuby + Jetty em vez do clássico Ruby + Mogrel.

Você pode saber mais no post oficial de anúncio dele.

Taí, mais um ponto para o JRuby! o/