En una entrega anterior vimos un poco del lenguaje Grain.
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.
Grain en un vistazo
Su objetivo es hacer accesibles las características avanzadas de los lenguajes funcionales, siendo fácil de aprender, fuertemente tipado y flexible.
Definiendo variables
Tipos de datos en Grain:
- Number, para datos numéricos.
- Bool, para datos booleanos (true, false)
- Char, para caracteres.
- String, para cadenas de caracteres.
Crearemos un programa llamado ``variables.gr``:
module Variables print("\t [ Variables en Grain ] \n")
Es importante que el módulo tenga el mismo nombre del programa.
Ahora definamos algunas variables:
module Variables // Variables let numeroInt = 65 let valorBoolean = true let otroInt:Number = numeroInt + 32 let division = numeroInt / 4.0 let otroBool: Bool = false let cadenaString: String = "Bienvenido a Grain!" and someChar: Char = '@' let escritor = ("Thomas Muller", 47, "El cubo blanco.") let (nombre, edad, libro) = escritor let resultado = if (otroBool) "Pista blanca." else "Pista azul." let valorImprime: Void = print("Esto se vera en la pantalla.") print("\t [ Variables en Grain ] \n")
¿Qué podemos notar?
- Usamos la palabra ``let`` para definir variables.
- Podemos especificar el tipo o también lo podemos omitir.
- Usamos tipos Number, Char, Bool, String.
- Grain es un lenguaje funcional, donde las variables son inmutables.
Imprimiendo las variables
Ahora vamos a imprimir las variables:
module Variables // ... print("\t [ Variables en Grain ] \n") print(cadenaString) print(numeroInt) if (valorBoolean){ print(valorBoolean) } if(false){ print("A") }else if(54 > 100){ print("B") } else{ print("C") } if(otroBool){ print("Esto no se vera.") } print(otroInt) print(division) print((45 * 43 - 56 / 2)) print(escritor) print(nombre) print(edad) print(libro) print(resultado)
Aserciones
Una aserción (assert) es una verificación lógica en el código que comprueba si una condición es verdadera; si resulta falsa, detiene el programa o lanza un error.
Grain nos permite usar instrucciones assert. Agregemoslas:
module Variables // ... print("\t [ Variables en Grain ] \n") // ... assert true == (!false) assert (34 < 100) == (43 > 0) assert valorImprime == void
Todas son verdaderas; en caso de no ser así el programa fallaría.
Ahora el programa completo:
module Variables let numeroInt = 65 let valorBoolean = true let otroInt:Number = numeroInt + 32 let division = numeroInt / 4.0 let otroBool: Bool = false let cadenaString: String = "Bienvenido a Grain!" and someChar: Char = '@' let escritor = ("Thomas Muller", 47, "El cubo blanco.") let (nombre, edad, libro) = escritor let resultado = if (otroBool) "Pista blanca." else "Pista azul." let valorImprime: Void = print("Esto se vera en la pantalla.") print("\t [ Variables en Grain ] \n") print(cadenaString) print(numeroInt) if (valorBoolean){ print(valorBoolean) } if(false){ print("A") }else if(54 > 100){ print("B") } else{ print("C") } if(otroBool){ print("Esto no se vera.") } print(otroInt) print(division) print((45 * 43 - 56 / 2)) print(escritor) print(nombre) print(edad) print(libro) print(resultado) assert true == (!false) assert (34 < 100) == (43 > 0) assert valorImprime == void
Ejecutemos el programa:
$ grain variables.gr
Salida:
Esto se vera en la pantalla. [ Variables en Grain ] Bienvenido a Grain! 65 true C 97 16.25 1907 ("Thomas Muller", 47, "El cubo blanco.") Thomas Muller 47 El cubo blanco. Pista azul.
Al ejecutar con este comando, el programa generará otros archivos (variables.gro y variables.wasm); el que nos interesa es el código WASM, pues el que se ejecutará en el navegador y otros entornos que lo soporten.
Grain y WebAssembly
WebAssembly es un formato de código binario portable y un formato de texto correspondiente, así como interfaces de software para facilitar la comunicación entre dichos programas y su entorno anfitrión. Grain nos permite generar ese código binario.
Todo hasta aquí va bien, pero no hemos respondido la pregunta:
¿Qué podemos hacer con Grain?
Podemos decir que:
- Se puede crear aplicaciones WebAssembly para ejecutarse con gran eficiencia dentro de los navegadores o del lado del servidor.
- Desarrollar servicios y microservicios sin servidor (Serverless).
Seguiremos hablando de este lenguaje en próximas entregas.
Enlaces:
https://grain-lang.org/https://codemonkeyjunior.blogspot.com/2015/03/aserciones.html
WASM: ¿Qué es?¿Por qué es importante? (Youtube)



No hay comentarios:
Publicar un comentario