Introdução
Vlang ou Rust? Como eles são diferentes um do outro? Como eles se comparam em desempenho, gerenciamento de memória, velocidade de compilação e outras funcionalidades importantes?
Neste artigo, exploraremos as respostas a todas essas perguntas ao comparar Vlang (conhecido como”V”) e Rust com base em uma variedade de atributos principais.
Vlang vs. Rust
Rust é uma linguagem estática e fortemente tipada, projetada para construir um software confiável e eficiente. V, por outro lado, é uma linguagem simples que permite a construção de programas previsíveis e sustentáveis.
Embora amplamente conhecido por sua segurança e simultaneidade, o Rust também garante desempenho rápido e gerenciamento de memória em tempo de compilação. O Rust, portanto, evita algumas das desvantagens-como corridas de dados e travamentos-de outras linguagens de sistema como C ++.
Um jogador mais novo no jogo, V é uma linguagem de programação compilada que promete recursos de alto desempenho para código simples, legível e sustentável . É muito semelhante a Go e Rust e também tem algumas semelhanças com Swift e Oberon. Melhor ainda, ele também oferece suporte à tradução de código C para V (com recursos de tradução C ++ em andamento).
A primeira versão estável do Rust data de 15 de maio de 2015. O Rust foi eleito cinco vezes como a linguagem de programação mais amada pelos desenvolvedores no pesquisa . Por outro lado, V é uma linguagem de programação relativamente nova que vem ganhando popularidade rapidamente devido ao seu desempenho impressionante, gerenciamento de memória inovador e promessas de tradução C/C ++.
Embora V e Rust compartilhem algumas características comuns, sua abordagem de programação é radicalmente diferente uma da outra. Isto é esperado; cada um deles foi desenvolvido para atingir diferentes casos de uso, que serão discutidos em mais detalhes nas seções a seguir.
Variáveis globais
Uma variável global é uma variável com escopo global, o que significa que é parte integrante de todo o programa.
Rust não recomenda o uso de variáveis globais, mas existem alguns casos em que variáveis globais são mais desejáveis (e práticas). Variáveis globais podem ser usadas no Rust usando variáveis estáticas mutáveis ou Rust inseguro .
Por outro lado, o V foi construído para permitir a construção de software sustentável e previsível e é amplamente conhecido por sua abordagem rígida, portanto, não permite variáveis globais. Também não há nulo ou indefinido em V.
Por padrão, então, se você deseja usar variáveis globais, deve usar Rust sobre V.
Gerenciamento de memória
A maneira como uma linguagem de programação lida com o gerenciamento de memória é muito importante. Tanto o Rust quanto o V garantem a segurança da memória de tempo de compilação, no entanto, sua maneira de lidar com isso é bem diferente em comparação.
Ao contrário de muitas outras linguagens de programação que usam um coletor de lixo , o Rust garante a memória gerenciamento por meio de regras de propriedade e empréstimo (também chamadas de tempos de vida). Essas regras podem ser muito difíceis de entender no início.
V adota uma abordagem diferente, usando seu mecanismo auto-free que adiciona chamadas gratuitas necessárias implicitamente na compilação. Isso simplifica significativamente o processo de gerenciamento de memória. Confira a demonstração no vídeo de gerenciamento de memória em tempo de compilação de V abaixo:
Tipos de resultado e opção
Além dos tipos padrão disponíveis no Rust (booleano, numérico, textual, etc.), existe também um tipo de opção. Este tipo pode conter um valor ou não conter nenhum valor (e, portanto, ser nenhum
). Os tipos de resultado e opção são muito comumente usados no Rust, mas podem ser difíceis de entender esses tipos e usá-los de maneira eficaz.
Em V, o processo é muito simplificado. Um ?
pode ser usado no lugar do tipo de retorno de uma função, permitindo que ele retorne um valor, um erro ou nenhum. Assim, V combina opção e tipo de resultado em ?
. Com essa funcionalidade, o tratamento de erros também é muito mais fácil de resolver.
Dê uma olhada no uso de ?
no código de exemplo abaixo, retirado dos V documentos :
fn (r Repo) search_user_by_id (id int)? User { para o usuário em r.users { if user.id==id { //V envolve isso automaticamente em um tipo de opção usuário de retorno } } erro de retorno ('Usuário $ id não encontrado') }
Referências e valores
No Rust, você deve escolher explicitamente entre value
, reference
, ref-counted
, atomic-ref-counted
e alguns outros tipos antes de passá-lo para uma função.
Com V, você pode simplesmente usar objetos e deixar para o compilador decidir se usará valores ou referências. Isso economiza o tempo do programador por não precisar nomear explicitamente valores ou referências em seu código.
No exemplo abaixo, você pode ver como V lhe dá a liberdade de passar um argumento de função imutável (como foo
) por valor ou por referência:
struct Foo {} fn (foo Foo) bar_method () { //... } fn bar_function (foo Foo) { //... }
Expressões lambda
Comparado com V, Rust é uma linguagem mais versátil que oferece suporte a uma ampla variedade de recursos, incluindo suporte para expressões Lambda.
Mantendo sua abordagem estrita e simplificada, V tem suporte mínimo para a sintaxe Lambda e semelhante a Lamda, e não permite expressões Lambda para mais de um parâmetro.
Segurança
V não tem suporte para coisas como nulo, variáveis globais, valores indefinidos, sombreamento de variável ou verificação de limites. Ele oferece funcionalidades altamente seguras, como tipos de opção/resultado, genéricos, variáveis imutáveis por padrão, funções puras e estruturas imutáveis. Diante disso, V é considerado uma linguagem extremamente segura para tipos e memória.
O Rust, em comparação, ainda permite alguns recursos (embora desencoraje seu uso); estes incluem, por exemplo, as variáveis globais acima mencionadas e Rust inseguro, que deve ser usado seletivamente .
Desempenho
Como todos nós da programação sabemos bem, o desempenho é um fator essencial no uso de qualquer linguagem.
A documentação oficial de V afirma que é tão rápido quanto C, com o mínimo de alocações e uma serialização embutida sem qualquer reflexão de tempo de execução. Além disso, V afirma um desempenho de compilação de cerca de 80k (backend Clang) e 1 milhão (back-ends x64 e tcc) de linhas de código por segundo por núcleo de CPU.
Não que o Rust seja lento-o Rust também oferece uma ótima velocidade de compilação. No entanto, em comparação com V, Rust ainda tem um longo caminho a percorrer para atingir as velocidades excelentes agora disponíveis no mercado.
Vlang vs. Rust: Conclusão
Tanto Vlang quanto Rust são linguagens de primeira linha para a construção de software. São linguagens modernas, compactas, poderosas e de alto desempenho com ótimo suporte para gerenciamento de memória em tempo de compilação. Cada linguagem de programação é deliberadamente otimizada para coisas diferentes.
Como costuma ser o caso em programação, a escolha da linguagem depende inteiramente no que você está trabalhando e dos problemas que está tentando resolver. Ambos de primeira classe em seus próprios caminhos, V e Rust valem o tempo e o esforço que você investirá no aprendizado dessas linguagens em sua jornada como desenvolvedor.
A postagem Vlang vs. Rust: Comparando linguagens de compilação apareceu primeiro no LogRocket Blog .