stringtranslate.com

V (lenguaje de programación)

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]

Veasel es la mascota oficial del lenguaje de programación V [16]

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]

  1. Uso de un GC opcional (que se puede deshabilitar) para manejar asignaciones, y es el valor predeterminado.
  2. Gestión manual de memoria mediante la desactivación del GC ( -gc none).
  3. 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).
  4. 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

Referencias

  1. ^ "Creador de V". GitHub .
  2. ^ "Primera publicación pública". GitHub . 20 de junio de 2019.
  3. ^ "Versión 0.4.8". 28 de septiembre de 2024. Consultado el 28 de septiembre de 2024 .
  4. ^abcdRao 2021.
  5. ^ 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 .
  6. ^ 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 .
  7. ^ 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 .
  8. ^ "El lenguaje de programación V". vlang.io . Consultado el 4 de noviembre de 2023 .
  9. ^ abcd Knott, Simon (27 de junio de 2019). «An introduction to V» (Una introducción a V) . Consultado el 27 de junio de 2019 .
  10. ^ abc Nasufi, Erdet. "Una introducción a V - la vlang". DebConf . Consultado el 24 de julio de 2022 .
  11. ^ "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 .
  12. ^abcd Laboratorio Independiente 2020.
  13. ^ Lyon 2022.
  14. ^ "Lenguaje V: simple como Go, binario pequeño como Rust". TechRacho . Consultado el 3 de marzo de 2021 .
  15. ^ "Lenguajes de programación de GitHub (clasificación de repositorios)" – vía OSS .
  16. ^ "La mascota oficial de V". GitHub . Consultado el 8 de noviembre de 2023 .
  17. ^ abcde Galuh, Rosa (8 de agosto de 2022). "Una breve introducción al lenguaje V". MUO . Consultado el 8 de agosto de 2022 .
  18. ^ Rao 2021, pág. 7.
  19. ^ "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 .
  20. ^ desde Chakraborty 2023.
  21. ^Por Tsoukalos 2022.
  22. ^ 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 .
  23. ^ 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 .
  24. ^ 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 .
  25. ^ "Convertir Go a V con go2v". Zenn . 26 de enero de 2023 . Consultado el 26 de enero de 2023 .
  26. ^ "El backend del compilador V WebAssembly". lm . 26 de febrero de 2023 . Consultado el 26 de febrero de 2023 .
  27. ^ ab Rao 2021, págs. 28–40.

Lectura adicional

Enlaces externos