El lenguaje de programación Rust

Rust_programming_language_black_logo.svg

Rust es un lenguaje de programación compilado, de propósito general y multiparadigma que está siendo desarrollado por Mozilla y ha sido diseñado para ser ‘un lenguaje seguro, concurrente y práctico. soporta programación funcional, por procedimientos, imperativa y orientada a objetos. Rust se enfoca principalmente en seguridad, velocidad y concurrencia.

El lenguaje surgió de un proyecto personal desarrollado por Graydon Hoare (trabajador de Mozilla), quién empezó a trabajar en él en 2006 y Mozilla se involucró en este proyecto en 2009, dandose a conocer oficialmente en 2010.

El objetivo de Rust es ser un buen lenguaje para la creación de grandes programas del lado del cliente y del servidor que se ejecuten en Internet. Esto ha llevado a un conjunto de características con un énfasis en la seguridad, el control de distribución de la memoria y la concurrencia.

Rust también implementa ‘abstracciones con cero costo’, abstracciones que se sienten como las de un lenguaje de alto nivel. Aun así, Rust permite control preciso tal y como un lenguaje de bajo nivel lo haría.

un ejemplo de un programa que muestra la frase “Hola Mundo!” en Rust sería:

fn main() {
 println("Hola Mundo!");
}

La sintaxis de Rust es similar a la de C y C++, con bloques de código delimitados por llaves y estructuras de control de flujo tales como if, else, do, while y for

El concepto principal que hace único a Rust es llamado “pertenencia” (“ownership”). por ejemplo:

fn main() {
 let mut x = vec!["Hola", "mundo"];
}

Según este código:

  • El programa crea un una variable llamada x.
  • El valor de esta variable es Vec<T>, un “vector”, que creamos a través de una macro definida en la biblioteca estandar.
  • Las macros son invocadas con un !
  • Las macros pueden hacer cosas más complejas que solo llamadas a funciones, por tal razon son visualmente distintas.
  • La definición mut es para hacer x mutable: En Rust las variables son inmutables por defecto.

Agregando otra línea:

fn main() {
 let mut x = vec!["Hola", "mundo"];

let y = &x[0];
}
  • Se agregó la variable como una “referencia” a el primer elemento de el vector
  • Las referencias en Rust son similares a los punteros en otros lenguajes
  • Las referencias interactuan con el sistema de pertenencia a través de el “préstamo” (“borrowing”), ellas toman prestado a lo que apuntan, en vez de adueñarse de ello.
fn main() {
  let mut x = vec!["Hola", "mundo"];
  let y = &x[0];
  x.push("foo");
}
  • Push es un metodo en los vectores que agrega un elemento al final del vector.
  • Esta ultima linea x.push(“foo”) causará un error debido a que si hacemos la variable mutable no podemos llamar a push ya que tenemos una referencia a un elemento del vector y.

para resolver este problema hay dos opciones:

clonar el valor de x en vez de una referencia

fn main() {
  let mut x = vec!["Hola", "mundo"];
  let y = x[0].clone();
  x.push("foo");
}

Si necesitamos una referencia, hay que asegurarse que la referencia salga de ámbito antes que tratemos de hacer la mutación:

fn main() {
 let mut x = vec!["Hola", "mundo"];

{
 let y = &x[0];
 }

x.push("foo");
}

Con el par adicional de llaves hemos creado un ámbito interno. y saldrá de ámbito antes que llamemos a push(), entonces no hay problema. Este concepto de pertenencia no es solo bueno para prevenir punteros colgantes, sino un conjunto entero de problemas, como invalidación de iteradores, concurrencia y más.
Existen muchas mas cosas por conocer y descubrir en Rust, por lo cual esperamos que esta introducción sirva para despertar la curiosidad sobre este lenguaje de programación.
Referencias:

https://www.gitbook.com/book/goyox86/el-libro-de-rust/details
https://es.wikipedia.org/wiki/Rust_(lenguaje_de_programaci%C3%B3n)
https://www.rust-lang.org/en-US/

 

 

 

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s