Reseña del lenguaje de programación V
- Este es un artículo que reseña el lenguaje V en 2022, varios años después de su aparición, probando directamente las funciones que V había promocionado.
- Las funciones se evaluaron dividiéndolas en no funciona, advertencia y funciona. A continuación están los resultados de esa lista de evaluaciones. El código de ejemplo para la evaluación y los fundamentos de cada valoración están todos en el cuerpo del texto.
- La siguiente lista fue traducida mientras aprendía inglés, así que puede haber errores en los hechos. Úsela solo como referencia.
- Un lenguaje simple y fácil de mantener.
- Es una afirmación subjetiva.
- N/A
Seguridad
- Sin null.
- V puede crear punteros nulos (referencias de V) sin error ni advertencia del compilador.
- No compatible.
- Sin valores undefined.
- Se puede leer memoria sin inicializar sin error ni advertencia del compilador.
- No compatible.
- Sin comportamiento indefinido.
- El compilador de V no impidió escribir 3 formas distintas de UB. Se produce UB.
- No compatible.
- Sin shadowing de variables (el fenómeno en que un nombre queda oculto al crear el mismo nombre en espacios distintos).
- No fue posible ocultar variables locales.
- No compatible.
- Verificación de límites.
- Hay algunas comprobaciones básicas, pero se pueden eludir fácilmente.
- Advertencia.
- Las variables son constantes por defecto.
- Las variables no son constantes significativas. Es fácil asignar una referencia constante a una variable declarada con
mut y luego cambiar la variable para que también cambie la constante original.
- No compatible.
- Las funciones puras por defecto.
- Esta afirmación no tiene sentido porque redefine la pureza como lo que significa la impureza.
- (El autor señaló que el soporte para funciones de I/O inevitablemente tiene que ser impuro por naturaleza, y que la documentación decía que todas las funciones, excepto las de I/O, eran puras. Pero argumentó que desde el momento en que pueden llamar funciones de I/O, esas funciones ya no son puras. Por eso parece decir que el sentido del término quedó diluido. En el texto principal se muestra un ejemplo ridículo de funciones puras que devuelven valores impuros.)
- No compatible.
- Structs constantes por defecto.
- Ya se demostró arriba que se pueden eludir las variables constantes.
- No compatible.
Option y verificación obligatoria de errores para sus valores de resultado.
- Funciona como se anunció.
- Sum types (sintaxis como
type MyType = string | int).
- Los sum types en general parecen funcionar, pero tienen problemas de implementación interna. (Al crear dos types más, se vuelve posible usar como sum types referencias que V prohíbe.)
- Advertencia.
- Generalización (genéricos)
- Existe una implementación básica, pero está llena de errores y parece completamente desconectada de la seguridad y el rendimiento del compilador que tanto se destacaban.
- No compatible.
- Sin variables globales.
- V no impide de ninguna forma significativa crear o modificar estado compartido globalmente.
- No compatible.
Rendimiento
- Tan rápido como C (el compilador backend principal de V genera código C legible por humanos).
- La afirmación de rendimiento de V parece no estar verificada.
- No compatible.
- Interoperabilidad con C sin costo adicional
- Funciona como se anunció.
- Asignaciones minimizadas
- Es una afirmación subjetiva.
- N/A. (El autor mostró que, cuando código V que declara un
int se traduce a C, en el resultado de C ese int termina siendo asignado con malloc.)
- Serialización integrada sin reflexión en tiempo de ejecución
- Funciona como se anunció.
- Compila en binarios nativos sin ninguna dependencia.
- Parece que V todavía no logra del todo esa afirmación, pero hay algo de verdad en la idea general de que los programas de V son relativamente autosuficientes y pequeños.
- Advertencia.
Compilación rápida
- V compila 1 millón de líneas por segundo y por núcleo de CPU.
- El compilador de V ni siquiera se acerca al nivel de rendimiento afirmado. (Incluso en el sitio de benchmarks del compilador V solo compila unas 200 mil líneas de V.)
- No compatible.
- V está escrito en V y puede compilarse a sí mismo en menos de 1 segundo.
- Funciona como se anunció.
- Gestión de memoria innovadora
- Las afirmaciones de V no están bien respaldadas y la implementación actual no puede describirse como innovadora.
- No compatible
1 comentarios
De hecho, es bien sabido que V está lejos de estar listo, pero este texto describe muy bien el proceso de demostrarlo. Elijan algo de la lista que les interese y luego revisen una vez cómo se demuestra eso.