V , también conocido como vlang , es un lenguaje de programación compilado y tipado estático creado por Alexander Medvednikov a principios de 2019. [4] Se inspiró en el lenguaje Go y otras influencias, incluidas Oberon , Swift y Rust . [5] [6] [7] Es un software gratuito y de código abierto publicado bajo la Licencia MIT y actualmente en versión beta . [8]
Los objetivos de V incluyen facilidad de uso, legibilidad y mantenimiento. [9] [10]
Historia
Según uno de los desarrolladores, el nuevo lenguaje fue creado como resultado de la frustración con los lenguajes existentes que se usaban para proyectos personales. [11] El lenguaje fue originalmente pensado para uso personal, pero después de que se mencionó públicamente y ganó interés, se decidió hacerlo público. V fue creado inicialmente para desarrollar un cliente de mensajería de escritorio conocido como Volt. [6] Tras el lanzamiento público, el compilador fue escrito en V y podía compilarse a sí mismo. [4] Los objetivos de diseño clave detrás de la creación de V fueron que fuera fácil de aprender y usar, mayor legibilidad, compilación rápida, mayor seguridad, desarrollo eficiente, usabilidad multiplataforma, interoperabilidad mejorada con C, mejor manejo de errores, características modernas y software más fácil de mantener. [12] [13] [10] [14]
V se lanza y desarrolla a través de GitHub [15] [6] y es mantenido por desarrolladores y colaboradores de la comunidad. [4]

Características
Seguridad
V tiene políticas para facilitar la seguridad de la memoria, la velocidad y el código seguro. [7] [17] El lenguaje tiene varias características predeterminadas para una mayor seguridad del programa. [7] [17] [6] [9] Emplea la comprobación de límites , para protegerse contra el uso fuera de los límites de las variables. Se utilizan tipos? de opción/resultado, donde el tipo de opción ( ) puede representarse por none(entre las posibles opciones) y el tipo de resultado ( !) puede manejar cualquier error devuelto. Para garantizar una mayor seguridad, la comprobación de errores es obligatoria en V. De forma predeterminada, entre los siguientes se encuentran inmutables : variables, estructuras y argumentos de función. Esto incluye valores de cadena que son inmutables, por lo que los elementos no se pueden mutar. Otras protecciones, que son predeterminadas para el lenguaje, son: no usar valores indefinidos , no sombrear variables , no usar null (a menos que el código esté marcado como inseguro) y no usar variables globales (a menos que se habilite mediante un indicador).
Actuación
V utiliza tipos de valores y buffers de cadenas para reducir las asignaciones de memoria. [18] [19] [17] El lenguaje se puede compilar a C legible para humanos [4] [20] y se considera de alto rendimiento. [17]
Gestión de la memoria
Las 4 opciones admitidas por el lenguaje para la gestión de memoria son las siguientes: [21] [6] [22] [20]
- Uso de un GC opcional (que se puede deshabilitar) para manejar asignaciones, y es el valor predeterminado.
- Gestión manual de memoria mediante la desactivación del GC (
-gc none). - Autofree, que maneja la mayoría de los objetos a través de la inserción de llamadas libres, y luego el porcentaje restante es liberado por GC (
-autofree). - Asignación de arena (
-prealloc).
Traductores de código fuente
V admite un compilador de código fuente a código fuente (transpilador) y puede traducir código C a V. [23] [24] [10]
También se están desarrollando traductores funcionales para Go, JavaScript y WebAssembly . [25] [26]
Sintaxis
Hola Mundo
El programa “¡Hola, mundo!” en V: [17]
fn main () { println ( "¡Hola, mundo!" ) }
Variables
Las variables son inmutables de forma predeterminada y se definen mediante :=y un valor. Utilice la mutpalabra clave para hacerlas mutables. Las variables mutables se pueden asignar mediante =: [27]
a := 1 mut b := 2 b = 3
No se permite redeclarar una variable, ya sea en un ámbito interno o en el mismo ámbito: [27]
a := 1 { a := 3 // error: redefinición de a } a := 2 // error: redefinición de a
Estructuras
Ejemplo de estructura: [12]
estructura Punto { x int y int }
mut p := Point { x: 10 y: 20 } println ( p . x ) // Se accede a los campos de estructura usando un punto // Sintaxis literal alternativa para estructuras con 3 campos o menos p = Point { 10 , 20 } assert p . x == 10
Estructuras de montón
Las estructuras se asignan en la pila de forma predeterminada. Para asignar una estructura en el montón y obtener una referencia a ella, &se puede utilizar el prefijo: [12]
estructura Punto { x int y int }
p := & Point { 10 , 10 } // Las referencias tienen la misma sintaxis para acceder a los campos println ( p . x )
Métodos
Los métodos en V son funciones definidas con un argumento receptor. El receptor aparece en su propia lista de argumentos entre la palabra clave fn y el nombre del método. Los métodos deben estar en el mismo módulo que el tipo de receptor.
El método is_registered tiene un receptor de tipo Usuario llamado u. La convención es no utilizar nombres de receptor como self o this, sino preferiblemente un nombre corto. Por ejemplo: [9] [12]
estructura Usuario { edad int }
fn ( u Usuario ) está_registrado () bool { return u . age > 16 }
usuario := Usuario { edad: 10 } println ( usuario . está_registrado ()) // "falso" usuario2 := Usuario { edad: 20 } println ( usuario2 . está_registrado ()) // "verdadero"
Manejo de errores
Los tipos opcionales son aquellos que pueden representar a ninguno. Los tipos de resultado pueden representar un error devuelto por una función.
Los tipos de opción se declaran anteponiendo ?al nombre del tipo: ?Type. Los tipos de resultado utilizan !: !Type. [9] [7] [21]
fn do_something ( s cadena ) ! cadena { si s == "foo" { devolver "foo" } devolver error ( "cadena inválida" ) }
a := do_something ( "foo" ) o { "default" } // a será "foo" b := do_something ( "bar" ) o { "default" } // b será "default" c := do_something ( "bar" ) o { panic ( "{err}" ) } // sale con el error "cadena inválida" y un seguimiento
impresiónln ( a )
impresiónln ( b )
Véase también
- Comparación de lenguajes de programación
- Historia de los lenguajes de programación
- Lista de lenguajes de programación
- Lista de lenguajes de programación por tipo
Referencias
- ^ "Creador de V". GitHub .
- ^ "Primera publicación pública". GitHub . 20 de junio de 2019.
- ^ "Versión 0.4.8". 28 de septiembre de 2024. Consultado el 28 de septiembre de 2024 .
- ^abcdRao 2021.
- ^ Lewkowicz, Jakub (25 de junio de 2019). «Resumen de noticias del SD Times: el lenguaje V ahora es de código abierto». SD Times . Consultado el 25 de junio de 2019 .
- ^ abcde James, Ben (23 de julio de 2019). "El lenguaje de programación V: ¿vanidoso o virtuoso?". Hackaday . Consultado el 23 de julio de 2019 .
- ^ abcd Umoren, Samuel. "Construcción de un servidor web con Vlang". Sección . Archivado desde el original el 13 de marzo de 2023 . Consultado el 5 de abril de 2021 .
- ^ "El lenguaje de programación V". vlang.io . Consultado el 4 de noviembre de 2023 .
- ^ abcd Knott, Simon (27 de junio de 2019). «An introduction to V» (Una introducción a V) . Consultado el 27 de junio de 2019 .
- ^ abcNasufi, Erdet. "Una introducción a V - la vlang". DebConf . Consultado el 24 de julio de 2022 .
- ^ "Cómo mantener e iterar con V - SYNCS 2023 (Sydney Computing Society en la Universidad de Sydney)". YouTube . Consultado el 18 de octubre de 2023 .
- ^abcd Laboratorio Independiente 2020.Error de sfn: no hay destino: CITEREFIndependent_Laboratory2020 ( ayuda )
- ^ Lyon 2022.Error de sfn: no hay destino: CITEREFLyons2022 ( ayuda )
- ^ "Lenguaje V: simple como Go, binario pequeño como Rust". TechRacho . Consultado el 3 de marzo de 2021 .
- ^ "Lenguajes de programación de GitHub (clasificación de repositorios)" – vía OSS .
- ^ "La mascota oficial de V". GitHub . Consultado el 8 de noviembre de 2023 .
- ^ abcde Galuh, Rosa (8 de agosto de 2022). "Una breve introducción al lenguaje V". MUO . Consultado el 8 de agosto de 2022 .
- ^ Rao 2021, pág. 7.
- ^ "El lenguaje de programación V ahora es de código abierto". Packt Hub . 24 de junio de 2019 . Consultado el 24 de junio de 2019 .
- ^ desde Chakraborty 2023.Error sfn: sin destino: CITEREFChakraborty2023 ( ayuda )
- ^Por Tsoukalos 2022.
- ^ Emy, Jade (29 de agosto de 2023). «El lenguaje de programación V 0.4 Beta está disponible». Developpez . Consultado el 29 de agosto de 2023 .
- ^ Choudhury, Ambika (9 de febrero de 2022). "Conoce V, el nuevo lenguaje de programación de tipado estático inspirado en Go y Rust". Revista Analytics India (AIM) . Consultado el 7 de julio de 2024 .
- ^ Schlothauer, Sarah. "Los cinco de moda: repositorios de GitHub de gran éxito en junio de 2019". JAXenter . Archivado desde el original el 17 de febrero de 2020 . Consultado el 1 de julio de 2019 .
- ^ "Convertir Go a V con go2v". Zenn . 26 de enero de 2023 . Consultado el 26 de enero de 2023 .
- ^ "El backend del compilador V WebAssembly". lm . 26 de febrero de 2023 . Consultado el 26 de febrero de 2023 .
- ^ ab Rao 2021, págs. 28–40.
Lectura adicional
- El lenguaje de programación V básico (en japonés). Laboratorio independiente. 20 de junio de 2020. ASIN B08BKJDRFR.
- Rao, Navule Pavan Kumar (10 de diciembre de 2021). Introducción a la programación en V. Packt Publishing . ASIN B09FKK3JL7. ISBN 978-1839213434.OCLC 1290492862 .
- Lyons, Dakota "Kai" (13 de abril de 2022). Comenzando con la programación V. Publicado de forma independiente. ASIN B09XSZKTJ1. ISBN 979-8801499963.
- Chakraborty, Soubhik; Haldar, Subhomoy (6 de diciembre de 2023). "Aleatoriedad revisada utilizando el lenguaje de programación V" . Editores de ciencia nueva . doi :10.52305/CVCN5241. ISBN 979-8891133280. Número de identificación del sujeto 265170755.
- Tsoukalos, Mihalis (mayo de 2022). "Descubre el lenguaje V". Revista Linux Format (288). ISSN 1470-4234.
Enlaces externos
- Sitio web oficial
- Vlang en GitHub
- Documentación
- Módulos