intermediate35 minutesLección 8 de 9

Lenguajes de Programación Compilados con Rust

Aprende sobre lenguajes compilados, seguridad de memoria y programación de sistemas usando Rust

Lenguajes de Programación Compilados con Rust

JavaScript y Python son interpretados — un intérprete lee y ejecuta tu código línea por línea en tiempo de ejecución. Los lenguajes compilados como Rust funcionan de manera diferente: un compilador traduce todo tu programa a código máquina antes de ejecutarlo.

Interpretado vs Compilado

AspectoInterpretado (JS, Python)Compilado (Rust, C, Go)
EjecuciónLeído y ejecutado línea por líneaTraducido a código máquina primero
InicioInstantáneo para código pequeñoLigera demora durante la compilación
RendimientoMás lento en tiempo de ejecuciónEjecución más rápida
Detección de erroresEncontrados en ejecuciónMuchos errores capturados en compilación
DistribuciónNecesita código fuente o runtimeBinario ejecutable único

Hello World en Rust

rust
fn main() { println!("Hello, World!"); }
  • fn declara una función
  • main() es el punto de entrada de todo programa Rust
  • println! es una macro (nota el !) que imprime en la consola

Sistema de Tipos de Rust

Rust está tipado estáticamente — el compilador conoce el tipo de cada variable:

rust
fn main() { let edad: i32 = 25; // entero de 32 bits let nombre: &str = "Ana"; // string slice let activo: bool = true; // booleano let puntuacion: f64 = 95.5; // float de 64 bits println!("{} tiene {} años", nombre, edad); }

A diferencia de JavaScript, Rust no realiza coerción implícita de tipos.

Variables y Mutabilidad

Las variables en Rust son inmutables por defecto:

rust
fn main() { let x = 5; // x = 6; // Error: no se puede asignar dos veces a variable inmutable let mut y = 10; // `mut` la hace mutable y = 15; // Esto está permitido println!("y = {}", y); }

Esta inmutabilidad por defecto es una decisión de diseño deliberada que previene errores.

Propiedad y Préstamo

La característica más distintiva de Rust es su sistema de propiedad — garantiza seguridad de memoria sin un recolector de basura.

Reglas de Propiedad

  1. Cada valor tiene exactamente un dueño
  2. Cuando el dueño sale de ámbito, el valor se descarta
  3. Un valor puede ser prestado sin transferir la propiedad
rust
fn main() { let s1 = String::from("hola"); let longitud = calcular_longitud(&s1); // Presta s1, no toma posesión println!("'{}' tiene longitud {}", s1, longitud); // s1 todavía se puede usar } fn calcular_longitud(s: &String) -> usize { s.len() // Devuelve la longitud }

El símbolo & crea una referencia — presta el valor sin tomar posesión.

Referencias Mutables

rust
fn main() { let mut s = String::from("hola"); cambiar(&mut s); println!("{}", s); // "hola, mundo" } fn cambiar(s: &mut String) { s.push_str(", mundo"); }
ℹ️Note

Rust previene condiciones de carrera en tiempo de compilación: puedes tener una referencia mutable o cualquier número de referencias inmutables, pero no ambas simultáneamente.

La Expresión match

El match de Rust es una poderosa construcción de coincidencia de patrones:

rust
fn describir_numero(n: i32) -> &'static str { match n { 0 => "cero", 1..=9 => "pequeño", 10..=99 => "mediano", _ => "grande" // caso por defecto } } fn main() { println!("{}", describir_numero(42)); // "mediano" println!("{}", describir_numero(100)); // "grande" }

Ejercicio Práctico

Escribe un programa Rust que verifique si un número es par o impar:

rust
fn es_par(n: i32) -> bool { n % 2 == 0 } fn main() { let numeros = [1, 2, 3, 4, 5, 6]; for num in numeros { if es_par(*num) { println!("{} es par", num); } else { println!("{} es impar", num); } } }

Resumen

ConceptoRustJavaScript
Declaración de variablelet x = 5;let x = 5;
Variable mutablelet mut x = 5;let x = 5; (todo let es mutable)
Constanteconst X: i32 = 5;const X = 5;
Funciónfn add(a: i32) -> i32function add(a) { return a; }
Referencia&xN/A (objetos son tipos referencia)
Coincidencia de patronesmatch x { ... }switch (x) { ... }

Próximos Pasos

La próxima lección introduce programación declarativa — una forma diferente de pensar donde describes qué quieres, no cómo obtenerlo.

Progreso89%