sábado, 12 de junio de 2021

Ballerina en ejemplos

Ballerina es un lenguaje de programación de código abierto para la nube que facilita el uso, la combinación y la creación de servicios de red. A primera vista recuerda a lenguajes como Java y o Typescript. Ballerinta maneja tipos básicos como in, float, string, boolean, etc. La síntaxis de estructuras de control secuencial e iterativa son similares a Java. La extensión de un programa es *.bal
En post anteriores hemos hablado sobre Docker. En este post usaremos una imagen de Ballerina y la descargaremos con Docker.
$ docker pull ballerina/ballerina
$ docker images

Para compilar y ejecutar un programa escribimos este script bash:
ejecuta.sh
#!/bin/bash

# Mostramos el nombre del programa a compilar y ejecutar
echo "Ejecutamos $1"
docker run -v `pwd`:/home/ballerina -it ballerina/ballerina:1.0.2 ballerina build $1
docker run -v `pwd`:/home/ballerina -it ballerina/ballerina:1.0.2 ballerina run $1
Para usar el script es necesario darle permiso de ejecución y pasar el nombre del programa como argumento de entrada:
$ sudo chmod +x ejecuta.sh
$ ./ejecuta.sh programa.bal

Comencemos con algunos ejemplos.

Ejemplo. El clásico programa de "Hola, mundo".
holamundo.bal
import ballerina/io;

public function main(string... args) {
    io:println("Hola en Ballerina!!");
 
}
Compilamos y ejecutamos:
$ ./ejecuta.sh holamundo.bal
Ejemplo. Obtener el mayor de tres número enteros.
mayor_tres_numeros.bal
import ballerina/io;

public function main(string... args) {
	int a = 4;
	int b = -32;
	int c = 1;
	int mayor = a; 
        io:println("Numeros:\na:",a,",b:",b,",c:",c);
	if(mayor < b){
	  mayor = b;
	}
	if(mayor < c){
	  mayor = c;
	}
	io:println("mayor:",mayor);
}
    

Compilamos y ejecutamos:
$ ./ejecuta.sh mayor_tres_numeros.bal

Ejemplo. Crear dos funciones, una para sumar y otra para multiplicar dos números enteros.
funciones.bal
import ballerina/io;

public function sumar(int a, int b) returns int {
    return a + b;
}

public function multiplicar(int a, int b) returns int {
    return a * b;
}

public function main(string... args) {
        int a=7;
	int b=5;
	io:println("Suma de 5 y 7 es: ",sumar(a,b));
	io:println("Producto de 5 y 7 es: ",multiplicar(a,b));   
}

Compilamos y ejecutamos:
$ ./ejecuta.sh funciones.bal

¿Qué podemos analizar con estos ejemplos?
io:println("Hola en Ballerina!!");
Con esta instrucción imprimimos a pantalla.
int entero = 34;
io:println("Entero: ",entero);

Las instrucciones deben terminar con ;
Además se debe respetar el tipo de dato (esto no es Javasript u otro lenguaje de tipado dinámico).  Las funciones pueden o no devolver valores, si devuelven deben llevar la palabra returns en la cabecera indicando el tipo a devolver y return para devolver el valor calculado.
 

Ejemplo. Crear un programa que haga uso de sentencias iterativas con for y while.
bucles.bal

import ballerina/io;

public function main(string... args) {
        io:println("Elemento 0: ",numeros[0]);//1
	io:println("Elemento 5: ",numeros[5]);//6
        io:println("Tamaño: ",numeros.length());//8
	foreach var num in numeros{
		io:println("Elemento: ",num);
	}
	io:println("======================================");
	foreach var i in 0...9 {
        io:println("Numero: ",i);    
    }  
	io:println("======================================");
	int cont=0;
	while (cont < 10) {
        io:println("Cont: ",cont);
        cont = cont + 1;
    }

}

Compilamos y ejecutamos:
$ ./ejecuta bucles.bal

Como se puede ver la síntaxis es casi idéntica a la de Java y/o C#. Para quienes tienen cierta experiencia programando en lenguajes similares se les facilitará aprenderlo.
En próximos post veremos más ejemplos.
Enlaces:
https://alquimistadecodigo.blogspot.com/2020/09/docker-instalando-ballerina.html
https://ballerina.io/

No hay comentarios:

Publicar un comentario