RUST un lenguaje de programación seguro y eficiente – Parte 1

Rust es un lenguaje de programación multiparadigma, enfocado en la seguridad, semánticamente similar a C++, pero diseñado para proveer mejor protección de memoria mientras mantiene alto desempeño.

Eón Corp está actualmente desarrollando en este lenguaje de programación debido que vamos brindar a nuestros clientes, además de las habituales características de calidad y flexibilidad del software que desarrollamos, la potencia de un desarrollo seguro, que les evite tener problemas a posterior en temas de filtración de datos y explotación de vulnerabilidades.

Rust Tiene 3 pilares principales:

  • Desempeño
    Rust es increíblemente rápido y eficiente en cuanto a memoria: sin tiempo de ejecución ni recolector de basura, puede brindar servicios sistemas que su desempeño es crítico, ejecutarse en dispositivos integrados e integrarse fácilmente con otros lenguajes.
  • Fiabilidad
    El rico sistema tipográfico y el modelo de propiedad (ownership) de Rust garantizan la seguridad de la memoria y de los hilos, y le permiten eliminar muchas clases de errores en tiempo de compilación.
  • Productividad
    Rust tiene una gran documentación, un compilador amigable con útiles mensajes de error y herramientas de primera calidad – un gestor de paquetes integrado y una herramienta de compilación, soporte multi editor inteligente con autocompletado e inspecciones de tipo, un autoformato, y mucho más.

Como empresa estamos interesados en trabajar con este lenguaje en el área de Networking, en donde Rust utiliza una pequeña cantidad de recursos, tiene rendimientos predecibles y es excelente para ejecutar servicios de red y en segundo lugar para utilizarlo en sistemas embebidos, en donde es perfecto para ser aplicado en dispositivo de bajos recursos, permitiendo tener un control de bajo nivel, sobre el dispositivo.

De esta manera damos una breve introducción de las motivaciones que como empresa tenemos para desarrollar en este lenguaje y así mismo una introducción al lenguaje en si mismo.

El libro que inicia nuestro recorrido es el altamente recomendado “The Book” The Rust Programming Language. https://doc.rust-lang.org/book/ El mismo introduce a los conceptos básicos para el desarrollo en Rust.

El libro consta de 20 Capítulos, por lo que hemos planificado 5 publicaciones que abarcan 4 capítulos por cada una, siendo esta la primera y se abarcan los 4 primeros capítulos.

Capítulo 1 Getting Started

La primera parte del capítulo nos introduce a la instalación del lenguaje de programación, crear y compilar el software usando el compilador de rust y finalmente una de las características más importantes que es el Cargo el packet manager, el mismo nos permite compilar el código, descargar la librerías, construir librerías.

Capítulo 2 Programming a Guessing Game

Brinda una introducción general al lenguaje mediante el desarrollo de un juego, el proceso de programación se lo realiza parte y parte, tocando temas que se ahondara a posterior en el libro, como el uso de Cargo, para importar librerías, almacenamiento de valores, ownership, comparación, generación de números randómicos entre otros.

Capítulo 3 Common Programming Concepts

Variables y Mutability.- Se inicia el aprendizaje en el lenguaje, comenzamos con el concepto de lo que es una variable y mutabilidad, ya que cabe recalcar que en Rust una variable es implícitamente estática hasta que se le diga que puede cambiar su valor mediante la mutabilidad.

Data Types .- Al ser un lenguaje fuertemente tipado, se explican los tipos de datos que son comúnmente utilizados para desarrollar el software.

Cómo trabajan las funciones .- Las funciones son dominantes en la programación de Rust, explica que la función main es el punto de entrada para los programas. La keyword fn permite declarar nuevas funciones, como estilo en convención se utiliza todas las letras en minúsculas y las palabras se separan por un guión bajo.

Comentarios.- Para hacer fácil de entender el código los programadores deben utilizar comentarios en el código fuente. La forma de hacer comentarios en Rust es muy similar a C.

Control Flow.- Presenta las expresiones comunes utilizadas en Rust para controlar el flujo del software, mediante expresiones if, else if, loop, while, for y su sudo dentro del software.

Capítulo 4 Understanding Ownership

Que es Ownership? .- Es la principal característica de Rust, y explica las implicaciones de usar esta propiedad para tener un programa desarrollado de manera segura. Se basa en 3 reglas principales:

  • Cada valor en Rust tiene una variable que se llama su propietario.
  • Sólo puede haber un propietario a la vez.
  • Cuando el propietario sale del ámbito de aplicación, el valor se elimina.

Referencias y Borrowing .- Por otro lado la referencia permite obtener un valor sin tomar el ownership del valor, se lo realiza de con el comando &. Mientras que el borrowing es una consecuencia de la referencia, cuando las funciones tienen referencias como parámetros no tenemos que devolver el ownership, por que nunca se lo tuvo, a esto se le llama préstamo de parámetros conocido como borrowing.

Las reglas de referencias son las siguientes:

  • En cualquier momento, usted puede tener una referencia mutable o cualquier número de referencias inmutables.
  • Las referencias deben ser siempre válidas.

Slices .- Otro tipo de dato que no tiene ownership es el slice, el mismo que hace referencia a secuencias contiguas de elementos, como puede ser un String o vector.

Se concluye la primera parte y hacemos extensiva la visita al repositorio, donde se encuentran ejemplos del libro, en Github. https://github.com/richiprieto/Rust_examples