Linguaxe de programación V código aberto

Traducido na categoría de compilador aberto para lingua V. V é unha linguaxe compilada por máquina de tipo estático que se centra en facer que o desenvolvemento sexa máis fácil de manter e moi rápido de compilar. Código do compilador, bibliotecas e ferramentas relacionadas aberto baixo a licenza MIT.

A sintaxe de V é moi semellante a Go, tomando prestadas algunhas construcións de Oberon, Rust e Swift. A linguaxe simplifícase o máximo posible e, segundo o programador, 30 minutos de estudo son suficientes para aprender os conceptos básicos. documentación. Ao mesmo tempo, a linguaxe segue sendo bastante potente e pódese usar para realizar as mesmas tarefas que cando se usan outras linguaxes de programación (por exemplo, as bibliotecas están dispoñibles para gráficos 2D/3D, creación de GUI e aplicacións web).

A creación dunha nova linguaxe foi motivada polo desexo de lograr unha combinación da sintaxis da linguaxe Go, a velocidade de compilación, a facilidade de paralelización das operacións, a portabilidade e mantebilidade do código co rendemento de C/C++, a seguridade de Rust e a xeración de código máquina na fase de compilación Zig. Tamén quería obter un compilador compacto e rápido que puidese funcionar sen dependencias externas, desfacerse do alcance global (variables globais) e proporcionar a capacidade de recargar o código "en quente".

En comparación co C++, a nova linguaxe é significativamente máis sinxela, proporciona unha velocidade de compilación máis rápida (ata 400 veces), practica técnicas de programación seguras, está libre de problemas co comportamento indefinido e ofrece ferramentas integradas para paralelizar operacións. En comparación con Python, V é máis rápido, máis sinxelo, máis seguro e máis fácil de manter. En comparación con Go, V non ten variables globais, non ten valores nulos, todos os valores das variables deben estar sempre definidos, todos os obxectos son inmutables por defecto, só se admite un tipo de asignación ("a := 0"), unha forma significativamente máis compacta. o tempo de execución e o tamaño dos ficheiros executables resultantes, a presenza de portabilidade directa desde C, a ausencia dun colector de lixo, unha serialización máis rápida, a capacidade de interpolar cadeas (“println('$foo: $bar.baz')”).

fn main() {
áreas := ['xogo', 'web', 'ferramentas', 'ciencia', 'sistemas', 'GUI', 'móbil'] a := 10
se é verdade {
a := 20
}
para área en áreas {
println('Ola, desenvolvedores de $área!')
}
}

Características do proxecto:

  • Compilador compacto e rápido, que xunto coa biblioteca estándar ocupa uns 400 KB. A alta velocidade de compilación conséguese mediante a xeración directa de código máquina e a modularidade. A velocidade de compilación é de aproximadamente 1.2 millóns de liñas de código por segundo nun núcleo de CPU (nótase que durante a operación V pode usar C, entón a velocidade cae a 100 mil liñas por segundo). A autoensamblaxe do compilador, que tamén está escrito en linguaxe V (tamén hai unha versión de referencia en Go), leva aproximadamente 0.4 segundos. A finais de ano, espérase que se complete o traballo en optimizacións adicionais, o que reducirá o tempo de compilación do compilador a 0.15 segundos. A xulgar polas probas realizadas polo programador, a autoensamblaxe de Go require 512 MB de espazo en disco e execútase nun minuto e medio, Rust require 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 son compilados en ficheiros executables sen dependencias externas. O tamaño do ficheiro executable dun servidor http simple despois da montaxe é de só 65 KB;
  • O rendemento das aplicacións compiladas está a nivel de conxuntos de programas C;
  • A capacidade de interactuar perfectamente co código C, sen sobrecarga adicional. As funcións na linguaxe C pódense chamar desde código na linguaxe V, e viceversa, o código na linguaxe V pódese chamar en calquera linguaxe compatible con C;
  • Soporte para traducir proxectos C/C++ a unha representación na linguaxe V. Para a tradución úsase un analizador de Clang. Aínda non se admiten todas as funcións do estándar C, pero as capacidades actuais do tradutor xa son suficientes para iso tradución na linguaxe do xogo V DOOM. O tradutor de C++ aínda está nunha fase inicial de desenvolvemento;
  • Soporte de serialización integrado, sen estar ligado ao tempo de execución;
  • Minimizar as operacións de asignación de memoria;
  • Garantir a seguridade: sen NULL, variables globais, valores indefinidos e redefinición de variables. Comprobación de exceso de búfer integrada. Soporte para funcións xenéricas (Generic). Obxectos e estruturas que non se poden cambiar por defecto;
  • Posibilidade de recarga de código "quente" (reflicte os cambios no código sobre a marcha sen recompilación);
  • Ferramentas para garantir o multithreading. Do mesmo xeito que na linguaxe Go, úsase unha construción como "run foo()" para iniciar un novo fío de execución (semellante a "go foo()"). No futuro, está previsto o soporte para goroutines e un programador de fíos;
  • Soporte para sistemas operativos Windows, macOS, Linux, *BSD. Está previsto engadir soporte para Android e iOS a finais de ano;
  • Xestión da memoria en tempo de compilación (como en Rust), sen utilizar un colector de lixo;
  • Dispoñibilidade dun kit de ferramentas multiplataforma para a saída de gráficos, utilizando GDI+/Cocoa e OpenGL para renderizar (prevese soporte para API de DirectX, Vulkan e Metal). Existen ferramentas para traballar con obxectos 3D, animación esquelética e control da cámara;
  • Dispoñibilidade dunha biblioteca para xerar interfaces gráficas con elementos de deseño propios de cada SO. Windows usa WinAPI/GDI+, macOS usa Cocoa e Linux usa o seu propio conxunto de widgets. A biblioteca xa se usa en desenvolvemento volt — cliente para Slack, Skype, Gmail, Twitter e Facebook;

    O plan é crear unha aplicación de deseño de interface tipo Delphi, proporcionar unha API declarativa similar a SwiftUI e React Native e ofrecer soporte para a creación de aplicacións móbiles para iOS e Android;

    Linguaxe de programación V código aberto

  • Dispoñibilidade dun marco web integrado, que se usa para crear un sitio web, foro e blog para os desenvolvedores do proxecto. Admítese a compilación previa de modelos HTML, sen procesalos en cada solicitude;
  • Soporte de compilación cruzada. Para crear o ficheiro executable para Windows, só tes que executar "v -os windows" e para Linux - "v -os linux" (espérase soporte de compilación cruzada para macOS máis tarde). A compilación cruzada tamén funciona para aplicacións gráficas;
  • Xestor de dependencias, xestor de paquetes e ferramentas de compilación integrados. Para crear o programa, só tes que executar "v.", sen usar make ou utilidades externas. Para instalar bibliotecas adicionais, só tes que executar, por exemplo, "v get sqlite";
  • Dispoñibilidade de complementos para o desenvolvemento na linguaxe V nos editores Código VS и vitalidade.

Desenvolvemento percibido comunidade con escepticismo, xa que o código publicado mostrou que aínda non todas as capacidades declaradas foron implementadas e que se require unha cantidade de traballo moi grande para implementar todos os plans.
Ademais, inicialmente tiña o repositorio enviou código roto que ten problemas coa montaxe e a execución. Suponse que o autor aínda non chegou á fase na que comezan a notar Lei de Pareto, segundo o cal o 20% do esforzo produce o 80% do resultado, e o 80% restante produce só o 20% do resultado.

Mentres tanto, o rastreador de erros do Proxecto V eliminou unhas 10 publicacións demostración código de baixa calidade, por exemplo, indica o uso de insercións C e o uso na biblioteca de funcións para eliminar o directorio do comando rm mediante a chamada os.system("rm -rf $path"). Autor do proxecto ditoque só borrou as mensaxes, publicado troll (con cambios que confirman a validez da crítica, quedouse в editar historial).

Fonte: opennet.ru

Engadir un comentario