0% encontró este documento útil (0 votos)
93 vistas

Rust

Rust es un lenguaje de programación compilado, de propósito general y multiparadigma desarrollado por Mozilla. Tiene un énfasis en la seguridad, el control de memoria y la concurrencia. El lenguaje surgió como un proyecto personal en 2006 y fue adoptado por Mozilla en 2009, lanzando su primera versión en 2010. Rust tiene sintaxis similar a C/C++ pero con características como inferencia de tipos y concurrencia basada en actores para un acceso seguro a la memoria.

Cargado por

juan
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
93 vistas

Rust

Rust es un lenguaje de programación compilado, de propósito general y multiparadigma desarrollado por Mozilla. Tiene un énfasis en la seguridad, el control de memoria y la concurrencia. El lenguaje surgió como un proyecto personal en 2006 y fue adoptado por Mozilla en 2009, lanzando su primera versión en 2010. Rust tiene sintaxis similar a C/C++ pero con características como inferencia de tipos y concurrencia basada en actores para un acceso seguro a la memoria.

Cargado por

juan
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 5

Rust (lenguaje de programacin)

Para otros usos de este trmino, vase Rust.


Rust

Extensiones comunes
Paradigma
Apareci en
Diseado por
ltima versin estable
Tipo de dato
Influido por
Ha influido a
Sistema operativo
Licencia

Desarrollador(es)
Desarrolladores del proyecto Rust
rust-lang.org
Informacin general
.rs
multiparadigma, imperativo, orientado a objetos,
procedural, concurrente, funcional, compilado,
propsito general
2010
Graydon Hoare
1.7.01 (02 de marzo de 2016 (7 meses y 18 das))
esttico, fuerte, inferenciado, estructural
Alef, C#, C++, Camlp4, Common Lisp, Cyclone,
Erlang, Haskell, Hermes, Limbo, Napier,
Napier88, Newsqueak, NIL, Ruby, Sather,
Standard ML, Ocaml, Racket, Swift
C#, Elm, Idris, Swift
Linux, Mac OS X, Windows, FreeBSD
Licencia Apache 2.0 o Licencia MIT2

[editar datos en Wikidata]

Rust es un lenguaje de programacin compilado, de propsito general y multiparadigma que est


siendo desarrollado por Mozilla.3 Ha sido diseado para ser 'un lenguaje seguro, concurrente y
prctico",4 5 soportando programacin funcional pura, por procedimientos, imperativa y orientada a
objetos.
El lenguaje surgi de un proyecto personal desarrollado por Graydon Hoare (trabajador de Mozilla),
quin empez a trabajar en l en 2006; y Mozilla se involucr en este proyecto en 20096 y lo dio a
conocer oficialmente en 2010.7 El mismo ao, el trabajo pas del compilador inicial (escrito en

OCaml) al compilador auto contenido, escrito en s mismo, en Rust.8 Conocido como rustc, se compil
a s mismo en 2011.9 El compilador auto contenido usa LLVM como su back-end.
La primera versin alfa numerada del compilador de Rust apareci en enero de 2012.10 La versin
actual es la 1.0, que fue lanzada el 9 de enero de 2015.1
Segn la poltica de Mozilla,11 Rust es desarrollado de forma totalmente abierta y solicita la opinin y
contribucin de la comunidad. El diseo del lenguaje se ha ido perfeccionando a travs de las
experiencias en el desarrollo del motor de navegador, Servo,12 y el propio compilador de Rust. Aunque
es desarrollado y patrocinado por Mozilla y Samsung, es un proyecto comunitario. Una gran parte de
las contribuciones proceden de los miembros de la comunidad.13

ndice
1 Descripcin
2 Ejemplos
3 Evolucin del lenguaje
4 Vase tambin
5 Referencias
6 Enlaces externos

Descripcin
El objetivo de Rust es ser un buen lenguaje para la creacin de grandes programas del lado del cliente y
del servidor que se ejecuten en Internet. Esto ha llevado a un conjunto de caractersticas con un nfasis
en la seguridad, el control de distribucin de la memoria y la concurrencia. Se espera que el
rendimiento de cdigo seguro sea ms lento que C++, si el rendimiento es la nica consideracin, pero
si lo comparamos con el cdigo C++ hecho para que tome precauciones comparables a las que toma
Rust, este ltimo puede ser incluso ms rpido.14
La sintaxis de Rust es similar a la de C y C++, con bloques de cdigo delimitados por llaves y
estructuras de control de flujo tales como if, else, do, while y for. No todas las estructuras de C
y C++ estn presentes, adems, otras (como la palabra clave match para ramificacin
multidireccional) sern menos familiares para programadores que vienen de estos lenguajes.
El sistema est diseado para tener un acceso seguro a la memoria, y no permite punteros nulos o
punteros colgantes.15 16 Los valores de los datos slo se pueden inicializar a travs de un conjunto fijo
de formas, las cuales requieren que sus entradas hayan sido ya inicializadas.17
El sistema de tipos soporta un mecanismo similar a las clases de tipos, llamado "traits", inspirados
directamente por el lenguaje Haskell. Esta es una facilidad para el polimorfismo que soporta distintos
tipos de argumentos (polimorfismo ad-hoc), lograda mediante la adicin de restricciones para escribir
declaraciones de variables. Otras caractersticas de Haskell, como el polimorfismo de diferente tipo
(Higher-kinded), no estn soportadas.
Rust cuenta con inferencia de tipos, para las variables declaradas con la palabra clave let. Tales
variables no requieren ser inicializadas con un valor asignado con el fin de determinar su tipo. A tiempo
de compilacin produce un error si cualquier rama de cdigo falla al asignar un valor a la variable.18
Las funciones pueden recibir parmetros genricos pero deben ser delimitados expresamente por los
traits, no hay manera de dejar fuera de declaraciones de tipo sin dejar de hacer uso de los mtodos y
operadores de los parmetros.
La concurrencia es soportada a travs de tareas simples, similares a los encontrados en Erlang y otros
lenguajes basado en actores. En dichos sistemas, las tareas se comunican a travs del paso de mensajes,
en lugar de compartir los datos directamente. Por motivos de rendimiento, es posible enviar datos sin
copiar, usar cajas nicas. Las cajas nicas son la garanta de tener un solo propietario, y puede ser
liberada por la tarea de enviar para su uso por el receptor.
El sistema de objetos de Rust se basa en implementaciones, traits y tipos estructurados. Las
implementaciones cumplen una funcin similar a la de las clases en otros lenguajes, y se definen con la
palabra clave impl. Herencia y polimorfismo son proporcionados por los traits, permiten que los
mtodos se definan y se mezclen en las implementaciones. Los tipos estructurados se utilizan para
definir los campos. Implementaciones y rasgos no pueden definir los campos propios, y slo los traits
proporcionar herencia, con el fin de evitar el problema del diamante de C++.

Ejemplos
El siguiente cdigo es vlido para Rust 0.8. En versiones posteriores puede cambiar la sintaxis o las
funciones.
Programa que muestra la frase "Hola, mundo!":
fn main() {
println("Hola, mundo!");
}

Dos versiones de la funcin factorial, en el estilo recursivo e iterativo:


/* Las ramas en esta funcin exhiben los valores de retorno implcito opcional
de Rust, que pueden ser usados cuando se prefiera un estilo ms "funcional".
A diferencia de C++ y otros lenguajes similares, la estructura de control
`if` es una expressin en vez de una declaracin, y por tanto tiene un valor
de retorno propio. */
fn recursive_factorial(n: int) -> int {
if n <= 1 { 1 }
else { n * recursive_factorial(n-1) }
}
fn iterative_factorial(n: int) -> int {
// Las variables son declaradas con `let`.
// La palabra `mut` permite que las variables puedan ser mutadas.
let mut i = 1;
let mut result = 1;
while i <= n {
result *= i;
i += 1;
}
return result; // Un retorno expltico, en contraste con la funcin previa.
}
fn main() {
println!("Resultado recursivo: {:i}", recursive_factorial(10));
println!("Resultado iterativo: {:i}", iterative_factorial(10));
}

Una simple demostracin de las capacidades de concurrencia ligera de Rust:


/* Esta funcin crea diez "tareas" que se pueden ejecutar concurrentemente.
Ejectalo mltiples veces y observa la salida irregular que se obtiene al
estar cada tarea llamando al stdout, ya que cada tarea puede producirse entre
las sucesivas llamadas a `println` y dentro de la funcin `println` en s. */
fn main() {
// Esta cadena es inmutable, para que pueda ser accedida de forma segura
// por mltiples tareas.
let message = "Miradme, soy un proceso ligero!";
// Los bucles `for` funcionan con cualquier tipo que implemente el trait
// `Iterator`.
for num in range(0, 10) {
do spawn {
println(message);
// `println!` es una macro que verifica estticamente un string de

}
}

// formato. Las macros son estructurales (como en Scheme) en lugar


// de ser textuales (como en C).
println!("Este mensaje ha sido ofrecido por la tarea {:i}.", num);

Evolucin del lenguaje


Adems de los tipos estticos convencionales, Rust tambin soport typestates hasta su versin 0.4. El
sistema typestate modela afirmaciones antes y despus de las declaraciones del programa, mediante el
uso de una declaracin de verificacin especial. Las discrepancias pueden ser descubiertas durante la
compilacin, en lugar de una vez que el programa se ejecuta, como podra ser el caso de las aserciones
en el cdigo C o C++. El concepto typestate no es exclusivo de Rust, ya que se introdujo por primera
vez en el lenguaje de programacin NIL.19 Fueron retirados los typestates porque en la prctica se
encontraron poco usados, sin embargo la misma funcionalidad an se puede lograr con los patrones del
mismo lenguaje.20
El estilo del sistema de objetos ha cambiado considerablemente en las versiones 0.2, 0.3 y 0.4 de Rust.
La versin 0.2 introdujo clases por primera vez, con la versin 0.3 aadiendo un nmero de
caractersticas que incluyen destructores y polimorfismo mediante el uso de interfaces. En Rust 0,4, se
aadieron traits como un medio para proporcionar herencia, las interfaces se unificaron con los traits y
eliminndose como una caracterstica independiente. Tambin se eliminaron las clases, reemplazadas
por una combinacin de las implementaciones y tipos estructurados.

También podría gustarte