Ir al contenido principal

Ballerina en un vistazo (10): comparativa con C++

En este post haremos una comparativa entre Ballerina y C++.

Ballerina fue creado por WSO2 para aplicaciones distribuidas y cloud‑native, mientras que C++ (de Bjarne Stroustrup) es un lenguaje clásico de propósito general, orientado a alto rendimiento y sistemas críticos.

Ambos lenguajes, Ballerina y C++, representan dos filosofías muy distintas.

Quien haya programado en C no nos dejará mentir: C++ no solo es su evolución directa natural, si no es su versión "hard". C++ no solo comparte las características que hicieron a C un lenguaje poderoso (punteros, asignación dinámica de memoria, etc.) sino que los expande con sus propias peculiaridades.

Aqul que use C++ debe ser cuidadoso si no quiere otro colapso como el de Crowdstrike.

Ballerina por su parte no es tan utilizado en la industria. Muy pocas empresas se atreven a usar lenguajes como este o cualquier otro como Go, Rust, Kotlin, etc. El nicho del mercado esta enfocado en lenguajes como Java, C#, C/C++, Python y Javascript.

Observemos la siguiente tabla comparativa:

Tabla comparativa entre Ballerina y C++

Aspecto Ballerina C++
Paradigma Imperativo, orientado a servicios, con soporte para concurrencia y estructural. Multiparadigma: imperativo, orientado a objetos, genérico y funcional.
Creador WSO2 Bjarne Stroustrup (1985)
Tipado Estático y fuerte, con sistema estructural y soporte para uniones/opcionales. Estático y fuerte, tipado nominal clásico y soporte para plantillas.
Compilación jBallerina → bytecode JVM; nBallerina → LLVM binarios nativos. Compilación directa a código máquina (GCC, Clang, MSVC).
Interoperabilidad Con Java (jBallerina) y C vía FFI (nBallerina). Con C de forma nativa; bindings para múltiples lenguajes.
Tipos de datos JSON, XML, tablas, registros, errores, streams. Primitivos (int, char, float), punteros, estructuras, clases, plantillas.
Ecosistema Microservicios y APIs; integración con Docker/Kubernetes; soporte HTTP, gRPC, GraphQL. Amplio y maduro: Qt, Boost, Unreal Engine, bibliotecas científicas y de sistemas.
Casos de uso Microservicios, APIs REST/gRPC, aplicaciones cloud-native, integración distribuida. Sistemas operativos, videojuegos, software financiero/científico, embebidos y tiempo real.

Comparativa Ballerina y C++

Comparemos ambos lenguajes con sencillos programas.

El clásico "Hola, mundo"

holamundo.bal

import ballerina/io;

public function main(string... args) {
    io:println("\t Hola, mundo en Ballerina");
}

Ejecución:

$ bal run holamundo.bal

holamundo.cpp

#include<iostream>
#include<string>
using namespace std;

int main(){
  cout << "Hola, mundo en C++";
  return 0;
}

Compilación y ejecución:

$ g++ holamundo.cpp -o holamundo
$ .\holamundo

El clásico programa del "Hola, mundo" no debe faltar.

Ambos lenguajes, Ballerina y C++, son compilados. A.

Ahora hagamos otro ejemplo.

Declaración de variables

Ambos lenguajes, Ballerina y C++, son de tipado estático.

variables.bal

import ballerina/io;


const float PI = 3.1415;

public function main() {
    int a = 9;
    int b = a;
    int temp = b;
    a = temp;

    string nombre = "John Walker.";
    float flotante = 342.0;
    boolean bandera = true;

    // Imprimir valores para verificar
    io:println("a: ", a);
    io:println("b: ", b);
    io:println("temp: ", temp);
    io:println("nombre: ", nombre);
    io:println("flotante: ", flotante);
    io:println("PI: ", PI);
    io:println("bandera: ", bandera);
}

variables.cpp

#include<iostream>
#include<string>
using namespace std;

int main(){
  int a,b, temp;
  a = 9;
  b = a;
  temp = b;
  a = temp;
  std::string nombre= "John Walker.";
  float flotante = 342.0f;
  const double PI = 3.1415;
  bool bandera = true;

  // ...
  return 0;
}

Como nota: Ballerina obliga al programador a usar todas las importaciones y declaraciones de variables.

Curva de aprendizaje

Ballerina tiene una comunidad relativamente nueva.

C++ tiene una gran comunidad, aunque la curva de aprendizaje podría ser mayor; C++ sigue siendo muy usado aunque para ciertos desarrollos, como el desarrollo web, no es el ideal.

Ballerina es un lenguaje moderno que facilita el desarrollo y es ideal para microservicios en la nube.

Continuaremos con esta serie de entrgas comparando más lenguajes.

Enlaces:

https://alquimistadecodigo.blogspot.com/2026/05/ballerina-en-un-vistazo-9-comparativa.html
https://codemonkeyjunior.blogspot.com/2025/12/ballerina-una-comparativa-con-rust.html



Comentarios

Entradas populares de este blog

Rocket: un framework web para Rust

Rocket Framework es: Un framework web escrito en Rust.   Inspirado en Rails, Flask, Bottle y Yesod.  Admite el manejo de solicitudes HTTP, Web Sockets, JSON, plantillas y más. Creando un proyecto con Rocket Framework En primer lugar, verificamos la instalación de Rust en nuestras máquinas: rustc - - version Continuamos con la configuración de Rust nightly como nuestra cadena de herramientas predeterminada ejecutando el comando: rustup default nightly Si lo prefieres, una vez que configuremos un directorio de proyecto en la siguiente sección, puedes usar anulaciones por directorio para usar la versión nocturna solo para tu proyecto Rocket ejecutando el siguiente comando en el directorio: rustup override set nightly Creamos nuevo proyecto `` hola-rocket `` y nos ubicamos en el directorio creado: cargo new hola - rocket - - bin cd hola - rocket Con Cargo, agregamos la dependencia de rocket: cargo add rocket Abrimos el archivo `` Cargo.toml `` Ca...

Odin language: el lenguaje de programación orientado a datos para un desarrollo de software sensato

En esta serie sobre lenguajes de programación hablamos de Odin , un lenguaje orientado a datos. Un nuevo lenguaje de programación que nos podrá recordar a lenguajes como C++, Python, Golang o hasta Rust. Instalación (Windows): 1 2 3 4 $ git clone https://github.com/odin-lang/Odin $ cd Odin $ git pull $ build.bat release Debemos asegurarnos de crear la variable de entorno: Nombre: ODIN_HOME Valor: C:\Users\HP\Documents\pruebasOdin\Odin Ejemplo 1. Como primer programa tendremos al clásico "Hola, mundo". holamundo.odin package holamundo import " core:fmt " main : : proc ( ) { fmt . println ( " ¡Hola, mundo desde Odin! " ) } Construimos: $ odin build holamundo . odin - file Ejecutamos: $ holamundo .exe Recordar que si usamos Visual Studio Code podemos instalar el plugin de Odin Language: https://marketplace.visualstudio.com/items?itemName=DanielGavin.ols Ejemplo 2. Programa que muestre las variables que pod...

Programación Windows Batch (CMD) parte 3

Crear ciclos para efectuar operaciones tediosas nos ahorrará tiempo para realizar otras tareas. En está ocasión veremos ciclos con FOR . ¿Cuál es la síntaxis de bucle FOR en Windows Batch? Si está dentro de un archivo *.bat : FOR %%variable IN (seq) DO operaciones Si lo ejecutamos en una terminal: FOR %variable IN (seq) DO operaciones Ejemplo 1 . Recorrer una secuencia de números del 0 al 5: recorrer.bat @ echo off FOR %%i in ( 0 1 2 3 4 5 ) DO echo Hola no. %%i pause Nos imprimirá en pantalla: Hola no. 0 Hola no. 1 Hola no. 2 Hola no. 3 Hola no. 4 Hola no. 5 ¿Puedo usar contadores? Si, se pueden usar. Ejemplo 2 . Uso de contadores: contador.bat @ echo off set numeros = 1 2 3 4 5 6 7 8 9 10 set cont = 0 for %%a in ( %numeros% ) do ( echo Hola no. %%a :: Contador set /a cont+ = 1 ) echo Total: %cont% Este código nos imprimirá, además de los mensajes Hola no. 0 ..., el total de valores conta...