Hoy hablaremos de un nuevo lenguaje de programación llamado Jai.
Se trata de un lenguaje de programación que está desarrollando Jonathan Blow. El objetivo declarado del lenguaje es superar a C++ en el ámbito de la programación de videojuegos; sin embargo, en realidad se trata de una alternativa de propósito general a C++ con las siguientes metas:
- Alto rendimiento.
- Disfrute al programar.
- Simplicidad.
- Baja fricción.
- Diseñado para buenos programadores (sic).
Para quienes han programado en C sabrán que su descendiente directo, C++, es considerado más difícil de aprender y mucho más complejo de usar en proyectos reales.
Con C, el programador:
- Debe cuidar las variables que usará. Un tipo int no puede tener valores que no sean números entero, etc.
- Deberá cuidar el uso de memoria, lenguajes como Java o Rust (más moderno) ayudan al programador con esto.
- Tener un mejor control de sus estructuras de datos.
- Saber cómo y cuándo usar punteros para agilizar la programación, sí para eso y más se usan.
Con C++, deberás ser mucho más cuidadoso, aún más. Es más complejo y relativamente más seguro.
Jai se une a una lista de lenguajes de programación que afirman ser el sucesor verdadero de C++, y esa lista crece exponencialmente.
Rust, Zig, V lang, Carbon, etc. no son los únicos autoproclamados "asesinos de C++". Jai también quiere formar parte de ese grupo.
Introducción a Jai
El lenguaje está en etapa de desarrollo. Aún no existe una versión definitiva, final.
Tomando esta declaración del blog de James Oswald:
"Jai se basa en la lista de quejas de Johnathan Blow sobre C++, escrita durante su etapa como desarrollador de juegos y motores de C++. Si bien Blow concibió Jai principalmente como un lenguaje para el desarrollo de videojuegos, no ha ocultado su opinión de que podría tener una aplicación más amplia fuera de este nicho".
Y continúa:
"Jai busca maximizar la alegría manteniendo el mismo rendimiento que C/C++. Si bien la discusión sobre la velocidad de compilación y la filosofía de Jai al respecto merece una publicación aparte, mencionaré brevemente que Jai supera con creces las velocidades de compilación actuales de C/C++ y probablemente seguirá haciéndolo (consulte esta publicación para un análisis aproximado de líneas/segundo de C/C++ en compiladores populares; el objetivo de Jai antes del lanzamiento es de 1 millón de líneas/segundo). Personalmente, tengo que compilar grandes aplicaciones de C/C++ desde cero con regularidad, así que soy un gran admirador".
¿Por qué existe?
Jai viene de la frustración de programar en C++.
Quienes hayan desarrollado en ese lenguaje (C++) sabrán que un proyecto real te puede llevar toda una vida no solo desarrollarlo sino también darle mantenimiento y actualización.
Lo que te puede llevar minutos hacer en lenguajes como Python u Go en C++ te llevará más tiempo. En pocas palabras, quiere hacer de la programación algo más sencillo sin la complejidad de C++ pero inspirándose
en el.
Enfoque
Jai es un lenguaje de más bajo nivel que Java o C# y no está orientado a objetos; un lenguaje compilado *ahead-of-time* (AOT) que cuenta con un sólido soporte para metaprogramación y ejecución de código en tiempo de compilación.
Características principales
- Una sintaxis sencilla y coherente, junto con una gran capacidad expresiva, que se traducen en una mayor productividad para el desarrollador y en más disfrute y diversión al programar.
- Un compilador de altísima velocidad para hacer que el ciclo de desarrollo sea más productivo y agradable. ¡Se acabaron las pausas para el café mientras esperas a que termine la compilación!
- Un rendimiento excelente, a la altura de C++ o incluso de C.
- Seguridad en la ejecución y mensajes de error del compilador útiles, lo que reduce la necesidad de depuración.
Hola, mundo en Jai
holamundo.jai
#import "Basic"; main :: () { print("Hola, mundo desde Jai!"); } #run main();
Un programa en este lenguaje no podría tener otra extensión que la de *.jai.
Para compilarlo se usa la herramienta de compilación (obvio):
$ jai holamundo.jai
Salida:
Hola, mundo desde Jai!
Si quieres saber más del lenguaje, consulta la guía: https://github.com/Ivo-Balbaert/The_Way_to_Jai
Jai se une a la larga lista de lenguajes que proeten ser los sucesores de C/C++. Con una compilación mucho más rápida y eficiente, tomando lo mejor de su(s) ancestro(s) y olvidando lo peor.
El lenguaje esta relativamente terminado y liberado para empezar a usarlo. Su enfoque es el desarrollo de videojuegos y hasta sistemas completos.
Seguiremos hablando de este y otros lenguajes de programación en siguientes entregas.
Enlaces:
https://jaiprogramming.com/https://jamesoswald.dev/posts/jai-1/
https://inductive.no/jai/
https://programming-motherfucker.com/
Jonathan Blow on his programming language jai!
https://github.com/Ivo-Balbaert/The_Way_to_Jai



