Rust: el lenguaje de programación moderno

Aunque ya existen muchos lenguajes de programación, como C++, Pascal o Java, no dejan de desarrollarse otros nuevos que aspiran a ser más sencillos, más seguros o más rápidos. Rust cumple estos tres objetivos a la vez y, por lo tanto, está teniendo mucho éxito. Según una encuesta a los usuarios de la plataforma de desarrolladores Stack Overflow, Rust fue el lenguaje de programación más popular de 2019.

¿Qué es Rust?

El lenguaje de programación Rust fue creado en 2010 por Mozilla. Al principio, solo se trataba de un pasatiempo al que un desarrollador dedicaba sus ratos libres. Más adelante, este lenguaje se utilizó para desarrollar un nuevo motor de renderizado para Firefox y, actualmente, es un proyecto de código abierto mantenido por una comunidad muy activa que aún recibe apoyo económico de Mozilla.

Este lenguaje de programación se sitúa entre los lenguajes de bajo nivel C y los lenguajes muy abstractos, como Java. De hecho, Rust es un lenguaje de programación de sistemas, es decir, un lenguaje que se utiliza para implementar aplicaciones o sistemas operativos que están íntimamente relacionados con Windows, Linux o macOS. Al mismo tiempo, Rust se utiliza para programar aplicaciones web ―es decir, a una escala mucho menor.

Características de Rust

La mayor ventaja de Rust frente a otros lenguajes de programación es la seguridad, que se garantiza, entre otras cosas, mediante un buen sistema de gestión de errores. Si se produce un error que no puede corregirse durante la compilación, se inicia la macro “panic!”, que efectúa una limpieza y emite un mensaje de error para que no se produzcan daños.

La gestión del almacenamiento de este lenguaje también se considera extremadamente segura. La ventaja de Rust es que garantiza la seguridad de la memoria sin un recolector de basura. Durante muchos años, la memoria fue un blanco habitual de los hackers en muchos lenguajes de programación. Si se llena una memoria, se produce un error en el sistema y, por lo tanto, una brecha que puede ser explotada. Un recolector de basura asegura que los objetos innecesarios desaparezcan de la memoria. Sin embargo, esto ralentiza la ejecución del código. El compilador Rust vuelve obsoleto el recolector de basura, ya que comprueba si puede haber errores en la memoria en tiempo de compilación.

Si te preguntas si estas sólidas medidas de seguridad provocan una bajada del rendimiento, la respuesta es que no: Rust es un lenguaje de programación de sistemas, al igual que C/C++, por lo que ofrece la misma velocidad de ejecución. Por un lado, esto se debe a la ausencia de un recolector de basura. Por el otro, las llamadas abstracciones de costo cero aseguran una alta velocidad durante el tiempo de ejecución. Este concepto, en realidad, solo indica que el lenguaje permite programar de manera abstracta sin afectar el rendimiento.

Por ello, se considera que Rust es una combinación de los lenguajes de programación de alto y bajo nivel. Al igual que C/C++, Rust está muy cerca del hardware, lo que garantiza una alta velocidad, pero puede programarse con relativa facilidad, lo que caracteriza el resto de lenguajes de alto nivel.

Por último, tanto los programadores con menos conocimientos, como los profesionales, pueden aprender a utilizar Rust rápidamente. En términos de uso, el lenguaje apenas difiere de las alternativas más conocidas. Una gran ventaja es su elaborado sistema de emisión de mensajes de error: donde otros lenguajes de programación solo generan avisos crípticos, Rust proporciona consejos aplicables para solucionar los errores.

Consejo

Rust es uno de los lenguajes de programación extremadamente compatibles con WebAssembly. Asimismo, Rust se utiliza para desarrollar aplicaciones web rápidas.

Sintaxis de Rust: ejemplo

A primera vista, la sintaxis de Rust es muy similar a la de C o C++, otros lenguajes de programación de sistemas. Como es habitual en este tipo de lenguajes, Rust también incluye funciones, bucles, consultas, constantes y variables. Los corchetes se utilizan de manera distinta en algunos casos, siguiendo la sintaxis de lenguajes más antiguos, pero la base sigue siendo la misma. Por supuesto, Rust también tiene sus particularidades:

  • Las nuevas funciones se definen con el comando fn.
  • El lenguaje funciona con macros, que se distinguen por el signo de exclamación al final del término.
  • Las variables pueden determinarse con let; para que la información pueda modificarse, debe permitirse expresamente con mut.
  • Rust también sigue un modelo especial de propiedad (ownership).

En la sintaxis de Rust, el concepto de propiedad se refiere a la relación de una variable con su valor. La particularidad es que un valor solo puede pertenecer a una variable. Si se pasa el valor a otra variable, la anterior ya no será válida:

fn main() {
    let hello = String::from(“Hello, world!”);
    let hello1 = hello;
    println!(“{}”, hello);
}

La sintaxis de este código no es correcta: el contenido de “hello” se pasó a “hello1” y, por lo tanto, no se puede volver a llamar en la macro. En su lugar, se debe escribir la nueva variable en el último comando, que generará la salida correcta.

fn main() {
    let hello = String::from(“Hello, world!”);
    let hello1 = hello;
    println!(“{}”, hello1);
}
En resumen

Rust es un lenguaje sencillo que proporciona más seguridad y rendimiento. Este lenguaje de programación moderno no presenta una sintaxis totalmente nueva, sino que se basa en las características de C/C++, aunque también ofrece algunas novedades muy interesantes. Comenzar a utilizarlo no es difícil, especialmente si ya conoces otros lenguajes.

Si te apetece probarlo, puedes dar tus primeros pasos con nuestro tutorial de Rust.