Análise da linguagem de programação V
- Este é um texto de análise que, em 2022, alguns anos após o lançamento da linguagem V, testa diretamente os recursos que a linguagem V promovia.
- Os recursos foram avaliados em três categorias: não funciona, alerta e funciona. Abaixo estão os resultados dessa lista de avaliações. Os códigos de exemplo usados na avaliação e as justificativas para cada avaliação estão todos no texto principal.
- A lista abaixo foi traduzida enquanto eu estudava inglês, então pode haver erros factuais. Use apenas como referência.
- Uma linguagem simples, boa para manutenção.
Segurança
- Sem null.
- A linguagem V consegue criar ponteiros nulos (referências V) sem erro ou aviso do compilador.
- Não suportado.
- Sem
undefined value.
- É possível ler memória não inicializada sem erro ou aviso do compilador.
- Não suportado.
- Sem
undefined behavior.
- O compilador de V não impediu a escrita de 3 formas diferentes de UB. Ocorre UB.
- Não suportado.
- Sem sombreamento de variáveis (quando o mesmo nome é criado em espaços de nomes diferentes e um nome fica oculto).
- Não foi possível ocultar variáveis locais.
- Não suportado.
- Verificação de limites.
- Há algumas verificações básicas, mas elas podem ser contornadas com facilidade.
- Alerta.
- Variáveis constantes por padrão.
- As variáveis não são constantes de forma significativa. É fácil fazer com que uma variável constante original também seja alterada ao atribuir uma referência constante a uma variável declarada com
mut e depois mudar essa variável.
- Não suportado.
- Funções puras por padrão.
- Essa afirmação não tem sentido porque redefine pureza como algo que significa impureza.
- (O autor apontou que o suporte a funções de I/O inevitavelmente só pode ser impuro, e embora a documentação diga que todas as funções, exceto as de I/O, são puras, ele afirmou que a partir do momento em que essas funções podem chamar funções de I/O, elas já não são puras. Por isso, parece dizer que o sentido foi esvaziado. No texto principal, ele mostra um exemplo ridículo de funções puras produzindo valores impuros.)
- Não suportado.
- Structs constantes por padrão.
- Já foi demonstrado acima que é possível contornar variáveis constantes.
- Não suportado.
- Verificação obrigatória de erro para
Option e seus valores de resultado.
- Sum types (é uma sintaxe como
type MyType = string | int.)
- Sum types em geral parecem funcionar, mas há problemas na implementação interna. (Ao criar mais dois tipos, torna-se possível usar referências como sum types, algo que a linguagem V proíbe.)
- Alerta.
- Generalização (genéricos)
- Existe uma implementação básica, mas ela é extremamente cheia de bugs e parece completamente distante da segurança e do desempenho do compilador que ela mesma destaca ao se explicar.
- Não suportado.
- Sem variáveis globais.
- V não impede de nenhuma forma significativa a criação ou alteração de estado compartilhado globalmente.
- Não suportado.
Desempenho
- Tão rápido quanto C (o compilador backend principal de V gera código C legível por humanos)
- As alegações de desempenho de V parecem não ter sido verificadas.
- Não suportado.
- Interoperabilidade com C sem custo adicional
- Alocações minimizadas
- Afirmação subjetiva.
- N/A. (O autor mostrou que, quando código V que declara um
int é traduzido para C, o resultado em C faz esse int ser alocado com malloc.)
- Serialização embutida sem reflexão em runtime
- Compila em binários nativos sem nenhuma dependência.
- Parece que V ainda não alcançou totalmente essa alegação, mas há um pouco de verdade na ideia geral de que programas em V são relativamente autossuficientes e pequenos.
- Alerta.
Compilação rápida
- V compila 1 milhão de linhas por segundo, por núcleo de CPU.
- O compilador de V não chegou nem perto do nível de desempenho alegado. (Até o site de benchmark do compilador V mostra algo em torno de compilar 200 mil linhas de V.)
- Não suportado.
- V é escrito em V e consegue compilar a si próprio em menos de 1 segundo.
- Gerenciamento de memória inovador
- As alegações de V não são bem sustentadas, e a implementação atual não pode ser descrita como inovadora.
- Não suportado
1 comentários
Na verdade, é de conhecimento geral que V ainda está longe, mas este texto descreve muito bem o processo de provar justamente isso. Escolha na lista o que te interessar e depois confira só uma vez a demonstração desse ponto.