10 pontos por ffdd270 2022-06-23 | 1 comentários | Compartilhar no WhatsApp

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.
    • Afirmação subjetiva.
    • N/A

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.
    • Funciona como anunciado.
  • 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
    • Funciona como anunciado.
  • 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
    • Funciona como anunciado.
  • 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.
    • Funciona como anunciado.
  • 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

 
ffdd270 2022-06-23

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.