Grain es un lenguaje de programación funcional, moderno y de código abierto, diseñado principalmente para compilarse a WebAssembly (Wasm), lo que le permite funcionar eficientemente tanto en navegadores web como en servidores. Su objetivo es hacer accesibles las características avanzadas de los lenguajes funcionales, siendo fácil de aprender, fuertemente tipado y flexible.
¿Qué es WebAssembly?
- Un formato de instrucciones binarias para una máquina virtual basada en pila.
- Diseñado como un destino de compilación portátil para lenguajes de programación, lo que permite su implementación en la web para aplicaciones cliente y servidor.
Características más importantes:
- Eficiente y rápido.
- Seguro.
- Abierto y depurable.
- Parte de la plataforma web abierta.
Grain es una alternativa directa a la compilación de código wasm. Si quieres usar lenguajes como C o C++ tendrías que usar https://emscripten.org/. Si quieres usar Python podrás elegir entre https://pyodide.org/en/stable/, https://github.com/wasmerio/py2wasm o https://pygame-web.github.io/. Entre otras alternativas dependiende el lenguaje de programación (Java, C#, Kotlin, Scala, Go, etc.).
Grain posee sus propias herramientas para compilar código y su línea de comandos.
Lo puedes instalar en sistemas Mac OS, Linux y Windows. Si no deseas instalarlo, puede visitar este sitio y probar el lenguaje: https://grain-lang.org/try/
Otra forma de obtenerlo es con Node (V22 como mínima versión). Primero clonamos el repositorio:
$ git clone https://github.com/grain-lang/grain $ cd grain
Una vez clonado el repositorio y ubicandonos en el directorio ejecutamose estos comandos para su construcción:
$ npm ci $ npm run compiler build
Validamos la instalación:
$ grain --version
¡Tenemos instalado Grain en nuestro sistema!
Ahora demos un vistazo al lenguaje.
Al ser un lenguaje fuertemente tipado posee tipos básicos como Number, Bool, String y Char. Observemos la siguiente tabla:
| Tipo | Descripción | Ejemplo |
|---|---|---|
| Number | Representa números enteros o decimales. | let x: Number = 42 |
| Bool | Valores booleanos: verdadero o falso. | let flag: Bool = true |
| String | Secuencia de caracteres, texto. | let msg: String = "Hola Grain" |
| Char | Un solo carácter Unicode. | let letter: Char = 'A' |
Grain usa la palabra clave ``let`` para introducir nuevos valores con un nombre determinado, a los que se les llama enlaces:
module Main let numero = 42 let bandera = true let saludo = "Bienvenido a Grain!" and letra = 'A'
Hola mundo en Grain
Probemos el clásico programa "Hola, mundo" en este lenguaje.
holamundo.gr
module HolaMundo print("Hola, mundo en Grain")
Para compilar y ejecutarlo directamente tecleamos:
$ grain holamundo.gr
Con pasos separados:
$ grain compile holamundo.gr # Te creará un archivo `holamundo.gr.wasm` $ grain run holamundo.gr.wasm
Notar que te crea un archivo WASM ejecutable.
Continuaremos con este tema en próximas entregas.
Enlaces:
https://grain-lang.org/https://webassembly.org/
https://alquimistadecodigo.blogspot.com/2026/04/webassembly-hola-mundo-en-python-con.html
