Hablamos sobre el lenguaje de programación rápido y confiable de Mozilla, que lleva un nombre que no tiene nada que ver con un videojuego.

Rust apareció hace siete años y casi de inmediato se convirtió en el favorito de los programadores según Stack Overflow. Lo utilizan Microsoft, Twitter, VK, Dropbox y otros gigantes de la industria de la TI. Analicemos qué tan bueno es este lenguaje, qué hay debajo del capó y si es adecuado para principiantes.

¿Qué es Rust?

Rust es un lenguaje de programación de propósito general, diseñado para el desarrollo de sistemas de alta carga. Con él se crean aplicaciones web, motores de navegador, cadenas de bloques y otras plataformas complejas que procesan las solicitudes de millones de usuarios. Analicemos sus características principales.

  • Compilación: Antes de ejecutarse, el código en Rust se traduce inmediatamente a lenguaje de máquina, es decir, se convierte en un conjunto de ceros y unos. En esto, Rust se diferencia, por ejemplo, de JavaScript, donde el código primero se ejecuta a través de un intérprete y luego va al procesador. La ventaja de la compilación es que las aplicaciones se ejecutan más rápido y consumen menos memoria.
  • Multiparadigma: El paradigma de programación determina el estilo en el que los desarrolladores escriben código. Rust admite varios paradigmas a la vez: programación funcional, declarativa y orientada a objetos. Con más frecuencia, las empresas utilizan el último enfoque, pero Rust puede funcionar en cualquier modo.
  • Alto nivel de abstracción: Los comandos en Rust son palabras inglesas simples: input, let, match, etc. Por lo tanto, el código es fácil de leer y verificar. Al mismo tiempo, el lenguaje admite el uso de algunos medios de bajo nivel para un trabajo más preciso con el hardware.

La característica principal de Rust es la combinación de velocidad y confiabilidad. Por un lado, el lenguaje le da al programador acceso completo a la memoria, y por el otro, lo protege de errores y problemas. Por lo tanto, en Rust se escribe software para el que es importante un funcionamiento estable en condiciones difíciles: sistemas multiproceso, software para cálculos complejos, etc.

Historia de la creación

A principios de la década de 2000, existían dos enfoques para la creación de lenguajes informáticos: uno hacía hincapié en la velocidad y el otro en la seguridad. Por ejemplo, los programas en C++ funcionaban rápido, pero podían fallar debido a un error accidental del programador. Java, por el contrario, reducía los riesgos para el desarrollador, pero debido a esto, los programas perdían velocidad.

La idea de los creadores de Rust era combinar la potencia de C++ con la estabilidad de Java y sacar el máximo provecho de ambos enfoques:

“Nuestro público objetivo son los desarrolladores de C++ decepcionados. Es decir, nosotros mismos. Si también te ves obligado a trabajar con C++ debido a su rendimiento, pero buscas algo más seguro y menos ‘doloroso’, esperamos poder proporcionarlo”.

Graydon Hoare,
autor del lenguaje de programación Rust

Inicialmente, el lenguaje se desarrolló como un proyecto personal del programador de Mozilla Graydon Hoare, y luego pasó completamente al control de la empresa. El navegador Firefox estaba experimentando una actualización del motor, y Rust ayudó a implementar algunas cosas importantes, como la carga de sitios en modo multiproceso.

💡
Por cierto, el lenguaje recibió su nombre en honor a los hongos del orden de las royas (en inglés, Rust Fungi). Estos hongos poseen una resistencia especial; en opinión del autor, los programas en Rust deberían ser así.

Ejemplos de código y sintaxis

Como Rust se basó en C++, externamente son muy similares. Mira cómo se ve la misma función escrita en estos lenguajes:

Comparativa de código entre Rust y C++.
Ejemplo de código en Rust y C++.

Esta sintaxis se llama similar a C, porque sus raíces se remontan al lenguaje C, que apareció en la década de 1970. Actualmente, es prácticamente el estándar del desarrollo corporativo; si conoces esta sintaxis, podrás cambiar rápidamente a Java, Swift, C# y cualquier otro lenguaje moderno.

Por ejemplo, así es como se ve un programa simple en Rust para mostrar texto en la pantalla:

fn main() { //Declaración de la función principal.
    println!("¡Hola, lector!"); //Mostrar la cadena en la pantalla.
}

Analicemos lo que está escrito aquí:

  • fn main() – función obligatoria en cualquier programa en Rust, también llamada punto de entrada. Dentro de main() se escribe todo lo que el programa necesita para ejecutarse.
  • println!(" ") – comando que muestra texto en la pantalla. En nuestro caso, es «¡Hola, mundo!».
  • {} – llaves que indican los límites del cuerpo de la función.

Otra característica de Rust es la compacidad del código. Desde el principio, los creadores del lenguaje de programación apostaron por la velocidad de desarrollo, por lo que todos los comandos importantes se pueden escribir de la manera más breve posible. Por ejemplo, para declarar una función en JavaScript, debes escribir la palabra function cada vez, mientras que en Rust basta con un breve fn. ¡Un pequeño detalle, pero agradable!

¿Cuál es la fuerza de Rust?

La respuesta corta es la administración de memoria segura y eficiente. Cuando escribes código en C++, debes trabajar con él manualmente: colocar punteros, limpiar el programa de basura, controlar las fugas. Si el programa falla debido a algún error o vulnerabilidad, tú eres el responsable.

Rust tiene un enfoque completamente diferente: todo el trabajo con la memoria se realiza bajo el capó del lenguaje según reglas estrictamente definidas:

  • Cualquier valor (por ejemplo, un número) tiene una variable propietaria.
  • En cada momento, un valor solo puede tener un propietario.
  • Si se mueve al propietario a otra parte del código, el valor se borra.

Si se viola una de estas reglas, el compilador emitirá un error y se negará a compilar el programa. Si aparece un problema en el código, lo sabrás de inmediato y podrás solucionarlo sobre la marcha. Finalmente, si un programa en Rust ha pasado la compilación y se ha iniciado, funcionará de manera estable incluso en condiciones de estrés.

Por otro lado, puedes desactivar el modo seguro usando el bloque unsafe y administrar la memoria manualmente. Esto es necesario, por ejemplo, para escribir código de bajo nivel para hardware: relojes inteligentes, videocámaras, microcontroladores y otros dispositivos.

¿Para qué se utiliza Rust?

Dado que Rust puede sacar el máximo provecho del hardware, a menudo se utiliza para escribir partes de aplicaciones y servicios con alta carga. Por ejemplo, esto es lo que desarrollan con él grandes empresas internacionales y rusas de TI:

  • Mozilla: el motor Quantum, en el que funciona el navegador Mozilla Firefox;
  • Coursera: componentes de la plataforma de aprendizaje online;
  • Microsoft: elementos de bajo nivel del sistema operativo Windows;
  • Rambler: la lógica del servidor de las aplicaciones web;
  • VK: herramientas de compilación y administración del código fuente.

Ahora pasemos a las áreas donde este lenguaje de programación se utiliza ampliamente.

  • Criptomonedas y blockchain: Para que las cadenas de bloques puedan realizar transacciones seguras entre millones de dispositivos diferentes, se necesita un código rápido y estable, y la programación en Rust permite precisamente eso. Por ejemplo, uno de los clientes más populares para la plataforma Ethereum, Parity, funciona con él.
  • Sistemas operativos: En teoría, en Rust se puede escribir desde cero un sistema operativo completo con controladores, administrador de archivos, navegador y otros componentes. En la práctica, pocas empresas quieren competir con Apple y Microsoft, por lo que todavía no hay muchos proyectos exitosos. Solo podemos mencionar el sistema operativo para dispositivos inteligentes Tock y el sistema operativo seguro Redox.
Captura de pantalla del sistema operativo Redox.
Redox OS, desarrollado completamente en Rust.
  • Sitios web y aplicaciones web: Debido a que Rust es resistente a las cargas, se puede utilizar para desarrollar la lógica del servidor de los sitios web. Por ejemplo, el servicio en la nube Dropbox reescribió su sistema de almacenamiento de archivos con él, y esto son decenas de miles de máquinas de servidor donde constantemente se cargan gigabytes de nuevos datos.
  • Motores de navegador: No en vano Rust fue inventado en Mozilla: el lenguaje está diseñado inicialmente para el desarrollo de navegadores. Tiene características para la representación rápida de páginas web en modo multiproceso: puedes dividir la carga de un sitio en varias tareas y distribuirlas entre los núcleos del procesador.
Logotipo de Firefox en una ventana de navegador.
Firefox y el uso de Rust.
  • Aprendizaje automático: Rust admite muchas bibliotecas para trabajar con grandes datos: entrenamiento de algoritmos, visualización de datos, álgebra lineal, trabajo con vectores, procesamiento de imágenes, cualquier cosa. Si en el futuro te ves en Data Science, échale un vistazo a Rust.

Ventajas y desventajas de Rust

Esto es lo que las empresas y los desarrolladores aprecian del lenguaje:

  • Velocidad y seguridad. Como hemos escrito anteriormente, los programas en Rust funcionan rápido y solo se rompen en situaciones sin salida.
  • Tipificación estática. En Rust, la verificación de tipos de variables se realiza en la etapa de compilación, lo que es una ventaja para la confiabilidad del lenguaje.
  • Compatibilidad con C++. En los programas en Rust, puedes llamar sin problemas a bloques de código de C y C++, y viceversa.
  • Compilador cuidadoso. Si ocurre un error en el programa, el compilador te dirá qué salió mal y te dará consejos sobre cómo solucionarlo.
  • Multiplataforma. Rust se ejecuta en casi cualquier dispositivo: desde computadoras y teléfonos inteligentes hasta cajeros automáticos y relojes inteligentes.
  • Multiproceso. Los programas en Rust pueden realizar varias operaciones al mismo tiempo, utilizando eficazmente la potencia del procesador.
  • Altos salarios de los programadores. El salario promedio de un desarrollador puede llegar a 3000 USD. El dinero es realmente mucho, pero hay un matiz, del que hablamos a continuación.

Rust también tiene inconvenientes, son pocos, pero también los analizaremos:

  • Soporte limitado de OOP. Por ejemplo, no se puede implementar sin trucos la herencia completa de código y las clases.
  • Actualizaciones frecuentes. La sintaxis de Rust cambia con cada nueva versión, por lo que los desarrolladores tienen que volver a aprender constantemente. Por otro lado, el lenguaje se vuelve más seguro y fácil de usar.
  • Baja popularidad. Existen pocas vacantes para desarrolladores de Rust en toda Latinoamérica y España, mientras que las empresas buscan principalmente especialistas experimentados, y hay muy pocas ofertas para principiantes.

¿Es Rust adecuado para principiantes?

A pesar del amor de los programadores por Rust, este lenguaje tiene un umbral de entrada bastante alto. Para empezar a trabajar, hay que estudiar mucho: dominar el propio lenguaje, el paralelismo, el trabajo con la memoria y otros conceptos complejos. Por lo tanto, la respuesta a la pregunta dependerá de tu experiencia y habilidades.

Si recién estás comenzando a aprender programación, es mejor buscar algo más popular y fácil de aprender. Digamos, el mismo JavaScript: actualmente es uno de los lenguajes más populares en todo el mundo. Con él se escribe toda la parte visible de Internet: interfaces, botones, deslizadores y toda esa belleza. Si quieres escribir código y ver el resultado de inmediato, no hay mejor opción.

Lee también: Lenguajes de Programación para Principiantes

Pero si ya sabes programar en C++ o Java y alguien te sugiere cambiar de perfil, deberías considerar la posibilidad de cambiar. Rust es un lenguaje rápido, seguro y compacto, ideal para el desarrollo de proyectos y sistemas complejos. Con él estarás protegido de errores accidentales y fugas de memoria.

Categorizado en:

Fundamentos, Programación,