Ir al contenido principal

V lang: comparativa con Go

V Lang es un lenguaje de programación que ha tomado lo mejor de los lenguajes C y C++, se inspira principalmente en Go, pero también toma elementos de Rust, Swift, Kotlin, Oberon y Python.

Es un lenguaje de tipado fuerte. Además podemos distinguir de las variables tipo mutable o inmutable.

Por su parte, Go es un lenguaje de programación diseñado para ser rápido, eficiente, concurrente y fácil de aprender. Compilado y con tipado estático, destaca en el desarrollo backend, sistemas en la nube y redes gracias a su gestión automática de memoria y alto rendimiento.

Observemos está tabla comparativa:

Comparativa Go y V Lang

Aspecto Go V Lang
Creador Ken Thompson, Robert Pike y Robert Griesemer Alexander Medvednikov
Objetivo Lenguaje eficiente, concurrente y fácil de usar para sistemas distribuidos y servidores Lenguaje simple, seguro, con compilación ultrarrápida y binarios pequeños
Paradigma Imperativo y concurrente; goroutines y canales Imperativo y funcional ligero; inmutabilidad por defecto
Compilación Compilación rápida pero binarios más grandes (~7 MB para un servidor web) Muy rápida, sin dependencias externas; binarios pequeños (~600 KB para un servidor web)
Tipado Estático, explícito Estático, con inferencia de tipos
Concurrencia Goroutines y canales maduros y ampliamente probados Inspirada en Go, pero aún en desarrollo
Interoperabilidad Interop limitado con C mediante cgo Interop directo con C (zero-cost)
Ecosistema Amplio ecosistema, soporte empresarial, librerías maduras En crecimiento, aún limitado; librerías básicas y comunidad pequeña
Rendimiento Rendimiento consistente y optimizado; probado en producción a gran escala Promete velocidad comparable a C, pero en benchmarks suele ser más lento que Go en tareas intensivas
Seguridad Seguridad básica, pero más flexible; depende del programador Inmutabilidad por defecto, sin null, sum types, chequeos estrictos
Ideal para Backend, sistemas distribuidos, microservicios, herramientas de infraestructura Proyectos pequeños, prototipos, aplicaciones donde la simplicidad y binarios pequeños son clave

V Lang esta fuertemente influenciado por Go, Oberon, Swift y Rust.

Surge de la frustración de usar lenguajes como C, C++, Java o Python, entre otros. Tomando lo mejor de ellos y optando por descartar lo peor.

Se usó en un principio para el desarrollo de un cliente de mensajería de escritorio llamado Volt.

Comparativa: Go y V Lang

1. El clásico programa del "Hola, mundo".

En Go:

holamundo.go

package main

import "fmt"

func main() {
  fmt.Println("Hola, mundo")
}

Construcción y ejecución:

$ go build holamundo.go
$ .\holamundo.exe

Salida:

Hola, mundo

En V Lang:

holamundo.v

fn main() {
    println('Hola, mundo')
}

Construcción y ejecución:

$ v run holamundo.v

Salida:

Hola, mundo

Ejemplo 2. Sencillo programa que nos muestre el uso de banderas. Una bandera puede cambiar entre los estados: true y false.

En Go:

bandera.go

package main

import "fmt"

var bandera = true

func main() {
    if bandera {
        iniciarProceso()
    }
}

func iniciarProceso() {
    fmt.Println("Se inicia el proceso de lectura...")
    bandera = false
    fmt.Println("Termina el proceso de lectura.")
}

Construcción y ejecución:

$ go build bandera.go
$ .\bandera.exe

Salida:

Se inicia el proceso de lectura...
Termina el proceso de lectura.

En V Lang:

bandera.v

module main

fn main() {
    mut bandera := true
    if bandera {
        bandera = iniciar_proceso(bandera)
    }
}

fn iniciar_proceso(bandera bool) bool {
    println("Se inicia el proceso de lectura...")
    println("Termina el proceso de lectura.")
    return false
}

Construcción y ejecución:

$ v run holamundo.v

Salida:

Se inicia el proceso de lectura...
Termina el proceso de lectura.

Ejemplo 3. Ejemplo del uso de punteros.

En lenguajes como C se introduce el concepto de punteros, el cual es una variable que hace referencia a la dirección de memoria de una variable definida. Veamos un ejemplo en C:

puntero.c

#include <stdio.h>

int main() {
    int x = 10;
    int *p = &x;   

    *p = 20;       

    printf("Valor de x: %d\n", x);
    return 0;
}

En Go:

puntero.go

package main

import "fmt"

func main() {
	x := 10
	p := &x

	*p = 20

	fmt.Println("Valor de x:", x)
}

Construcción y ejecución:

$ go build holamundo.go
$ .\holamundo.exe

Salida:

Valor de x: 20

En V Lang:

puntero.v

fn main() {
    mut x := 10
    unsafe {
        mut p := &x
        *p = 20
    }
    println('Valor de x: $x')
}

Construcción y ejecución:

$ v run puntero.v

Salida:

Valor de x: 20

Podemos concluir que:

Go es más confiable para proyectos grandes y críticos gracias a su ecosistema maduro y rendimiento probado.

V Lang es atractivo para quienes buscan compilación ultrarrápida, binarios ligeros y mayor seguridad por defecto, pero aún está en evolución y puede carecer de optimización en escenarios de alto rendimiento.

Continuaremos en próximas entregas.

Enlaces:

https://alquimistadecodigo.blogspot.com/2026/02/vlang-un-lenguaje-de-programacion-para.html
https://alquimistadecodigo.blogspot.com/2024/12/v-lang-un-lenguaje-simple-rapido-y.html
https://en.wikipedia.org/wiki/V_(programming_language)



Comentarios

Entradas populares de este blog

Odin language: el lenguaje de programación orientado a datos para un desarrollo de software sensato

En esta serie sobre lenguajes de programación hablamos de Odin , un lenguaje orientado a datos. Un nuevo lenguaje de programación que nos podrá recordar a lenguajes como C++, Python, Golang o hasta Rust. Instalación (Windows): 1 2 3 4 $ git clone https://github.com/odin-lang/Odin $ cd Odin $ git pull $ build.bat release Debemos asegurarnos de crear la variable de entorno: Nombre: ODIN_HOME Valor: C:\Users\HP\Documents\pruebasOdin\Odin Ejemplo 1. Como primer programa tendremos al clásico "Hola, mundo". holamundo.odin package holamundo import " core:fmt " main : : proc ( ) { fmt . println ( " ¡Hola, mundo desde Odin! " ) } Construimos: $ odin build holamundo . odin - file Ejecutamos: $ holamundo .exe Recordar que si usamos Visual Studio Code podemos instalar el plugin de Odin Language: https://marketplace.visualstudio.com/items?itemName=DanielGavin.ols Ejemplo 2. Programa que muestre las variables que pod...

Programación Windows Batch (CMD) parte 3

Crear ciclos para efectuar operaciones tediosas nos ahorrará tiempo para realizar otras tareas. En está ocasión veremos ciclos con FOR . ¿Cuál es la síntaxis de bucle FOR en Windows Batch? Si está dentro de un archivo *.bat : FOR %%variable IN (seq) DO operaciones Si lo ejecutamos en una terminal: FOR %variable IN (seq) DO operaciones Ejemplo 1 . Recorrer una secuencia de números del 0 al 5: recorrer.bat @ echo off FOR %%i in ( 0 1 2 3 4 5 ) DO echo Hola no. %%i pause Nos imprimirá en pantalla: Hola no. 0 Hola no. 1 Hola no. 2 Hola no. 3 Hola no. 4 Hola no. 5 ¿Puedo usar contadores? Si, se pueden usar. Ejemplo 2 . Uso de contadores: contador.bat @ echo off set numeros = 1 2 3 4 5 6 7 8 9 10 set cont = 0 for %%a in ( %numeros% ) do ( echo Hola no. %%a :: Contador set /a cont+ = 1 ) echo Total: %cont% Este código nos imprimirá, además de los mensajes Hola no. 0 ..., el total de valores conta...

z/OS, ¿Qué es? y ¿Cuáles son sus herramientas?

  En este post veremos las herramientas de z/OS de IBM. z/OS es un sistema operativo de mainframe desarrollado por IBM.  Es parte de la serie IBM z Systems (anteriormente conocida como System z), que se utiliza en los sistemas mainframe de IBM. z/OS es uno de los sistemas operativos más utilizados en el mundo empresarial para ejecutar aplicaciones críticas y procesar grandes volúmenes de datos. Características clave de z/OS: Escalabilidad : z/OS es conocido por su capacidad para manejar grandes cargas de trabajo y escalabilidad vertical, lo que permite agregar recursos de hardware para satisfacer las demandas de procesamiento. Confiabilidad y disponibilidad : z/OS está diseñado para ofrecer alta disponibilidad y confiabilidad. Incorpora características como redundancia y recuperación ante fallas para garantizar la continuidad de las operaciones. Seguridad : Proporciona una amplia gama de funciones de seguridad, como autenticación, autorización y auditoría, para proteger los...