V linguagem de programação de código aberto

Traduzido na categoria de compilador aberto para idioma V. V é uma linguagem estaticamente tipada e compilada por máquina que se concentra em tornar o desenvolvimento mais fácil de manter e muito rápido de compilar. Código do compilador, bibliotecas e ferramentas relacionadas está aberto sob a licença do MIT.

A sintaxe do V é muito semelhante à do Go, pegando emprestadas algumas construções de Oberon, Rust e Swift. A linguagem é simplificada ao máximo e, segundo o desenvolvedor, 30 minutos de estudo são suficientes para aprender o básico documentação. Ao mesmo tempo, a linguagem permanece bastante poderosa e pode ser usada para realizar as mesmas tarefas de outras linguagens de programação (por exemplo, bibliotecas estão disponíveis para gráficos 2D/3D, criação de GUIs e aplicações web).

A criação de uma nova linguagem foi motivada pelo desejo de alcançar uma combinação da simplicidade de sintaxe da linguagem Go, velocidade de compilação, facilidade de paralelização de operações, portabilidade e facilidade de manutenção de código com o desempenho de C/C++, a segurança de Rust e a geração de código de máquina na fase de compilação Zig. Eu também queria obter um compilador compacto e rápido que pudesse funcionar sem dependências externas, se livrar do escopo global (variáveis ​​globais) e fornecer a capacidade de recarregar o código “a quente”.

Comparada ao C++, a nova linguagem é significativamente mais simples, fornece velocidade de compilação mais rápida (até 400 vezes), pratica técnicas de programação seguras, é livre de problemas com comportamento indefinido e fornece ferramentas integradas para paralelizar operações. Comparado ao Python, V é mais rápido, mais simples, mais seguro e mais fácil de manter. Comparado ao Go, V não possui variáveis ​​globais, nem nulos, todos os valores de variáveis ​​devem sempre ser definidos, todos os objetos são imutáveis ​​por padrão, apenas um tipo de atribuição é suportado (“a := 0”), um valor significativamente mais compacto tempo de execução e o tamanho dos arquivos executáveis ​​resultantes, a presença de portabilidade direta de C, a ausência de um coletor de lixo, serialização mais rápida, a capacidade de interpolar strings (“println('$foo: $bar.baz')”).

fn principal() {
áreas := ['jogo', 'web', 'ferramentas', 'ciência', 'sistemas', 'GUI', 'móvel'] a := 10
se for verdade {
uma:= 20
}
para área em áreas {
println('Olá, desenvolvedores $area!')
}
}

Características do projeto:

  • Compilador compacto e rápido, que junto com a biblioteca padrão ocupa cerca de 400 KB. A alta velocidade de compilação é alcançada através da geração direta de código de máquina e modularidade. A velocidade de compilação é de aproximadamente 1.2 milhão de linhas de código por segundo em um núcleo da CPU (observa-se que durante a operação V pode usar C, então a velocidade cai para 100 mil linhas por segundo). A automontagem do compilador, que também é escrito na linguagem V (também existe uma versão de referência em Go), leva aproximadamente 0.4 segundos. Até o final do ano, espera-se que os trabalhos de otimizações adicionais sejam concluídos, o que reduzirá o tempo de construção do compilador para 0.15 segundos. A julgar pelos testes realizados pelo desenvolvedor, a automontagem do Go requer 512 MB de espaço em disco e roda em um minuto e meio, Rust requer 30 GB e 45 minutos, GCC - 8 GB e 50 minutos, Clang - 90 GB e 25 minutos,
    Swift – 70 GB e 90 minutos;

  • Os programas são compilados em arquivos executáveis ​​sem dependências externas. O tamanho do arquivo executável de um servidor http simples após a montagem é de apenas 65 KB;
  • O desempenho dos aplicativos compilados está no nível dos assemblies de programas C;
  • A capacidade de interagir perfeitamente com o código C, sem sobrecarga adicional. Funções na linguagem C podem ser chamadas a partir do código na linguagem V, e vice-versa, o código na linguagem V pode ser chamado em qualquer linguagem compatível com C;
  • Suporte para tradução de projetos C/C++ em uma representação na linguagem V. Um analisador do Clang é usado para tradução. Nem todos os recursos do padrão C são suportados ainda, mas as capacidades atuais do tradutor já são suficientes para tradução na linguagem do jogo V DOOM. O tradutor C++ ainda está em um estágio inicial de desenvolvimento;
  • Suporte de serialização integrado, sem estar vinculado ao tempo de execução;
  • Minimizando operações de alocação de memória;
  • Garantindo segurança: sem NULL, variáveis ​​globais, valores indefinidos e redefinição de variáveis. Verificação de saturação de buffer integrada. Suporte para funções genéricas (Genérico). Objetos e estruturas que não podem ser alterados por padrão;
  • Possibilidade de recarregamento de código “quente” (refletindo alterações no código em tempo real, sem recompilação);
  • Ferramentas para garantir multithreading. Assim como na linguagem Go, uma construção como “run foo()” é usada para iniciar um novo thread de execução (semelhante a “go foo()”). No futuro, está planejado suporte para goroutines e um agendador de threads;
  • Suporte para sistemas operacionais Windows, macOS, Linux, *BSD. Está previsto adicionar suporte para Android e iOS até o final do ano;
  • Gerenciamento de memória em tempo de compilação (como no Rust), sem uso de coletor de lixo;
  • Disponibilidade de um kit de ferramentas multiplataforma para saída gráfica, usando GDI+/Cocoa e OpenGL para renderização (está planejado suporte para APIs DirectX, Vulkan e Metal). Existem ferramentas para trabalhar com objetos 3D, animação esquelética e controle de câmera;
  • Disponibilização de biblioteca para geração de interfaces gráficas com elementos de design nativos de cada SO. O Windows usa WinAPI/GDI+, o macOS usa Cocoa e o Linux usa seu próprio conjunto de widgets. A biblioteca já é usada em desenvolvimento Volt — cliente para Slack, Skype, Gmail, Twitter e Facebook;

    O plano é criar um aplicativo de design de interface semelhante ao Delphi, fornecer uma API declarativa semelhante ao SwiftUI e React Native e fornecer suporte para a criação de aplicativos móveis para iOS e Android;

    V linguagem de programação de código aberto

  • Disponibilidade de um framework web integrado, que serve para criar site, fórum e blog para os desenvolvedores do projeto. É suportada a pré-compilação de modelos HTML, sem processá-los em cada solicitação;
  • Suporte para compilação cruzada. Para construir o arquivo executável para Windows, basta executar “v -os windows”, e para Linux - “v -os linux” (o suporte de compilação cruzada para macOS é esperado posteriormente). A compilação cruzada também funciona para aplicativos gráficos;
  • Gerenciador de dependências, gerenciador de pacotes e ferramentas de construção integrados. Para construir o programa, basta executar “v.”, sem usar make ou utilitários externos. Para instalar bibliotecas adicionais, basta executar, por exemplo, “v get sqlite”;
  • Disponibilidade de plugins para desenvolvimento em linguagem V nos editores Código VS и Vim.

Desenvolvimento percebido comunidade com ceticismo, uma vez que o código publicado mostrou que nem todas as capacidades declaradas ainda foram implementadas e é necessária uma grande quantidade de trabalho para implementar todos os planos.
Além disso, inicialmente o repositório tinha postou código quebrado que apresenta problemas de montagem e execução. Supõe-se que o autor ainda não atingiu o estágio em que começa a perceber Lei de Pareto, segundo o qual 20% de esforço produzem 80% do resultado, e os 80% restantes de esforço produzem apenas 20% do resultado.

Enquanto isso, o rastreador de bugs do Project V teve cerca de 10 postagens removidas do demonstração código de baixa qualidade, por exemplo, indica o uso de C-inserts e o uso na biblioteca de funções para exclusão do diretório do comando rm através da chamada os.system("rm -rf $path"). Autor do projeto ditoque ele apenas apagou as mensagens, Publicados provocador (com alterações confirmando a validade da crítica, ficou в editar histórico).

Fonte: opennet.ru

Adicionar um comentário