Rust (lenguaje de programación) para niños
Datos para niños Rust |
||
---|---|---|
![]() |
||
![]() |
||
Desarrollador(es) | ||
Rust Project https://www.rust-lang.org/ |
||
Información general | ||
Extensiones comunes | .rs .rlib |
|
Paradigma | multiparadigma, imperativo, orientado a objetos, procedural, concurrente, funcional, compilado, propósito general | |
Apareció en | 2010 | |
Diseñado por | Graydon Hoare | |
Última versión estable | 1.84.0 (09 de enero de 2025 (5 meses y 28 días)) | |
Sistema de tipos | estático, fuerte, inferido, estructural | |
Influido por | Alef, C#, C++, Camlp4, Common Lisp, Cyclone, Erlang, Haskell, Hermes, Limbo, Napier, Napier88, Newsqueak, NIL, Ruby, Sather, Standard ML, Ocaml, Racket, Swift | |
Ha influido a | C#, Elm, Idris, Swift | |
Sistema operativo | Linux, macOS, Windows, FreeBSD, OpenBSD, Redox, Android, iOS | |
Licencia | Licencia Apache 2.0 o Licencia MIT | |
Rust es un lenguaje de programación moderno y potente. Es un lenguaje compilado, lo que significa que el código que escribes se transforma en instrucciones que la computadora entiende directamente. También es de propósito general, lo que quiere decir que puedes usarlo para crear muchos tipos de programas.
Rust es un lenguaje multiparadigma. Esto significa que te permite programar de diferentes maneras, como la programación funcional, por procedimientos, imperativa y orientada a objetos.
Este lenguaje es desarrollado por la Fundación Rust y es un proyecto abierto. Esto significa que muchas personas de la comunidad de programación pueden dar sus ideas y ayudar a mejorarlo.
En los últimos años, Rust se ha vuelto muy popular. En 2022, se convirtió en el tercer lenguaje de programación usado en el núcleo Linux, que es el corazón de muchos sistemas operativos.
Contenido
¿Qué hace especial a Rust?
El objetivo principal de Rust es ayudarte a crear programas grandes y complejos que funcionen muy bien en internet, tanto en el lado del usuario (lado del cliente) como en el lado del servidor. Por eso, Rust se enfoca mucho en la seguridad, en cómo se usa la memoria de la computadora y en la capacidad de hacer varias cosas al mismo tiempo (concurrencia).
Se espera que los programas escritos en Rust sean muy seguros. Aunque a veces pueden ser un poco más lentos que los escritos en C++ si solo se busca velocidad, si comparas un código C++ que toma las mismas precauciones de seguridad que Rust, ¡Rust puede ser incluso más rápido!
Sintaxis y estructura de Rust
La forma en que escribes código en Rust es parecida a la de C y C++. Usa llaves `{}` para agrupar bloques de código y tiene estructuras para controlar el flujo del programa, como `if` (si), `else` (sino), `while` (mientras) y `for` (para).
Rust tiene algunas características únicas, como la palabra clave `match`, que ayuda a tomar decisiones complejas en el código.
Seguridad de la memoria
Una de las cosas más importantes de Rust es su sistema de seguridad de la memoria. Está diseñado para evitar errores comunes que pueden hacer que los programas fallen o sean vulnerables. Por ejemplo, no permite los punteros nulos o punteros colgantes, que son como direcciones de memoria que no apuntan a nada o a algo que ya no existe.
Además, los datos solo se pueden iniciar de formas seguras, asegurando que todo esté listo antes de usarse.
Tipos de datos y "traits"
Rust tiene un sistema de tipos que ayuda a organizar la información. Soporta algo llamado "traits", que son como interfaces. Los "traits" permiten que diferentes tipos de datos puedan usar las mismas funciones, lo que hace el código más flexible.
Rust también tiene inferencia de tipos. Esto significa que a veces no necesitas decirle al programa qué tipo de dato es una variable, porque Rust puede adivinarlo por sí mismo. Si hay un error, te lo dirá al compilar el programa.
Concurrencia en Rust
La concurrencia es la capacidad de un programa para hacer varias cosas al mismo tiempo. Rust lo soporta a través de "tareas" simples, que son como pequeños trabajos que se ejecutan en paralelo. Estas tareas se comunican enviándose mensajes, en lugar de compartir datos directamente. Esto ayuda a que el programa sea más eficiente y seguro.
Objetos en Rust
El sistema de objetos de Rust se basa en implementaciones, traits y tipos estructurados. Las implementaciones son similares a las clases en otros lenguajes. Los traits permiten definir métodos y mezclarlos en las implementaciones, lo que ayuda a la herencia y el polimorfismo. Los tipos estructurados se usan para definir los campos de los datos.
Historia de Rust
Rust comenzó como un proyecto personal en 2006 por Graydon Hoare, un empleado de Mozilla. Se dice que el nombre "Rust" viene de un tipo de hongo. Mozilla empezó a apoyar el proyecto en 2009 y lo anunció al público en 2010.
La primera versión estable de Rust, la 1.0, se lanzó el 15 de mayo de 2015. Desde entonces, se lanzan nuevas versiones estables cada seis semanas, lo que permite que el lenguaje mejore constantemente.
Rust ha sido muy bien recibido por la comunidad de programadores. Ha sido el lenguaje de programación más querido en la encuesta anual de Stack Overflow desde 2016 hasta 2020.
Creación de la Fundación Rust
En 2020, se decidió que el proyecto Rust necesitaba una organización independiente para asegurar su futuro. Así, el 8 de febrero de 2021, se anunció la formación de la Fundación Rust. Sus cinco empresas fundadoras son AWS, Huawei, Google, Microsoft y Mozilla.
Esta fundación se encarga de proteger las marcas y nombres de dominio de Rust, y de asegurar que el proyecto siga creciendo y siendo un éxito.
Ejemplos de código en Rust
Aquí te mostramos algunos ejemplos sencillos de cómo se ve el código en Rust.
Programa que muestra la frase “¡Hola, mundo!”:
fn main() {
println!("¡Hola, mundo!");
}
Tres formas de calcular el factorial de un número (el factorial de un número es el producto de todos los números enteros positivos desde 1 hasta ese número):
// Calcula el factorial de forma recursiva
fn recursive_factorial(n: i32) -> i32 {
if n == 0 {
1
} else {
n * recursive_factorial(n - 1)
}
}
// Calcula el factorial de forma iterativa (con un bucle)
fn iterative_factorial(n: i32) -> i32 {
let mut i = 1;
let mut result = 1;
while i <= n {
result *= i;
i += 1;
}
return result;
}
// Calcula el factorial usando un estilo funcional
fn functional_factorial(n: u64) -> u64 {
(1..=n).into_iter().fold(1, |acc, x| acc * x)
}
fn main() {
println!("Resultado recursivo: {}", recursive_factorial(10));
println!("Resultado iterativo: {}", iterative_factorial(10));
println!("Resultado funcional: {}", functional_factorial(10));
}
Un ejemplo de cómo Rust maneja la concurrencia (hacer varias cosas a la vez):
use std::thread;
fn main() {
let message = "¡Miradme, soy un proceso ligero!";
for num in 0..10 {
thread::spawn (move || {
println!("{}", message);
println!("Este mensaje ha sido ofrecido por la tarea {}.", num);
});
}
}
Interfaces gráficas (GUI)
Rust puede crear interfaces gráficas de usuario (GUI), que son las ventanas y botones que ves en los programas. Como Rust es un lenguaje de bajo nivel, puede interactuar directamente con el sistema operativo para crear estas interfaces.
Existen varias formas de crear GUIs en Rust. Algunas usan tecnologías web como Electron o HTML, mientras que otras usan bibliotecas nativas de Rust. También hay proyectos que se conectan con bibliotecas muy conocidas y maduras como GTK o Qt, que permiten crear programas que funcionan en diferentes sistemas operativos.
Proyectos populares de GUI en Rust
- gtk-rs: Permite usar las bibliotecas de GTK con Rust.
- conrod: Una biblioteca de bajo nivel que usa OpenGL o Vulkan para gráficos.
Proyectos importantes hechos con Rust
Rust se usa en muchos proyectos interesantes y grandes:
Varios componentes de navegadores web están escritos en Rust:
- Firefox:
- Servo: Un motor de navegador web experimental de Mozilla.
- Quantum: Un proyecto para mejorar el motor de Firefox, Gecko.
- Brave:
- Brave Shields: Un bloqueador de anuncios integrado en el navegador Brave, que es muy eficiente.
Sistemas operativos
Muchos sistemas operativos y sus componentes se están desarrollando en Rust:
- Redox: Un sistema operativo completo.
- Stratis: Un sistema de archivos para Fedora y RHEL 8.
- Rust for Linux: Desde la versión 6.1, el kernel de Linux (el corazón de Linux) integra Rust como un segundo lenguaje de programación, además de C.
Otros proyectos destacados
- Microsoft Azure IoT Edge: Una plataforma para ejecutar servicios de inteligencia artificial en dispositivos pequeños.
- OpenDNS: Un servicio de seguridad en internet.
- Tor: Una red que ayuda a mantener la privacidad en línea, está explorando el uso de Rust.
- TiKV: Una base de datos distribuida.
- Deno: Un entorno seguro para ejecutar código JavaScript y TypeScript.
- Linkerd 2.x: Una herramienta para monitorear microservicios.
- Discord: El popular servicio de chat usa Rust para partes de su sistema y para la codificación de video.
- rav1e: Un codificador de video experimental.
- Thunderbird: El programa de correo electrónico usa Rust para algunas de sus funciones.