RUST EL LENGUAJE MAS AMADO

RUST: El desconocido pero mas amado de los lenguajes de programación

Una de las bases para ser feliz como programador es que el lenguaje que usamos a diario nos produzca la menor cantidad de dolores de cabeza. Si revisamos las últimas encuestas de stackoverflow sobre desarrolladores nos encontramos con que Rust es el lenguaje de programación más amado por los programadores. ¿Qué tiene este lenguaje que hace felices a los programadores que lo han probado? Todo ello, a pesar de seguir siendo un gran desconocido para muchos programadores.

Ser el lenguaje más amado y más popular, quizás siga estando reñido con otros factores. Ya hemos hablamos de la popularidad de Python y el hecho de no ser un lenguaje relativamente nuevo que está cogiendo un impulso imparable actualmente. Con Rust nos encontramos en el caso de ser prácticamente un recién llegado y un gran desconocido para muchos programadores. Vamos a descubrirlo en detalle y ver en qué casos de uso puede ayudarnos en nuestro trabajo diario como programadores.

Lenguajes Mas Amados Stackoverflow Rust

Mozilla necesitaba a Rust como la pieza fundamental de Servo en Firefox

Rust surgió en 2010 en Mozilla como un proyecto personal de Graydon Hoare en busca de un lenguaje que permitiera escribir un código extremadamente rápido al mismo nivel que C o C++ pero sin los problemas de gestión de memoria que había llevado históricamente a ser extremadamente meticuloso para no cometer graves bug en el acceso de memoria y condiciones de carrera en tiempo de ejecución.

Mozilla buscaba un lenguaje extremadamente seguro y capaz de soportar sus exigentes requisitos de rendimiento. Así Rust comenzó a evolucionar gracias al impulso de Firefox y la de un gran número de contribuidores de la comunidad, no sólo de Mozilla. A día de hoy, forma una parte importante de núcleo principal del motor del navegador Servo usado por Firefox, aprovechando las bondades en cuanto a paralelismo, concurrencia y gestión eficiente de la memoria.

Quatum Css Rust

Hace poco hablamos cómo Firefox Quatum CSS había conseguido increíbles tiempos de renderizados. Ello se lo debemos al rendimiento de Rust y su gestión de rápida y segura gestión de concurrencia. Y con un reducido número de bugs ocasionados por situaciones como race conditions o acceso ilegales de memoria.

Rust conduce a la programación de sistemas a la modernidad

Cuando hablamos sobre la programación de sistemas, lo primero que se nos viene a la cabeza es esa parte de la programación en la que los administradores de sistemas utilizan scripts o pequeñas aplicaciones para levantar máquinas. Pero más allá de eso la programación de sistema es mucho más amplia. Se define como el desarrollo de elementos software que otras aplicaciones software van a usar como base. Un buen ejemplo es el que mencionamos anteriormente con Firefox y su motor de Servo, y otro muy importante es el Kernel de Linux escrito principalmente en C/C++.

Rust trae herramientas modernas al mundo de las programación de sistemas:

  • Cargo. Su gestor de dependencias y sistema para la generación de build. Se encarga de la compilación y la gestión de elementos externos a nuestro código procedente del ecosistema de Rust. Así como la librerías de Rust, denominadas craters.
  • Rustfmt se encarga de asegurar la consistencia del coding style entre desarrolladores.
  • Rust Language Server facilita la integración con diferentes IDE para ayudar la compleción de código y la ayuda mostrando mostrando mensajes inline de error sobre el código.

Siempre hemos dependido de C o C++ cuando hemos necesitado tareas donde el rendimiento es importante. Por no decir vital, como en los sistema embebidos o los sistemas de alto rendimiento como la simulación. La búsqueda de un sustituto siempre ha llevado a alternativas más lentas, en cambio Rust asegura un excelente gestión de memoria como gran pilar fundamental junto a un sintaxis moderna.

Sus valores fundamentales es la gestión memoria segura garantizada en tiempo de compilación, utilizando los conceptos de ownership del dato y borrowing de memoria. Además de asegurar en tiempos de compilación no nos encontraremos con condiciones de carrera. Todo ello mediante abstracciones de alto nivel con inferencia de tipos, sin coste en tiempos de ejecución, muy cercanos a los valores que puede reflejar C/C++, incluso mejorados.

Rust es un excelente lenguaje para crear aplicaciones command-line donde podamos definir todas las dependencias y generar el binario para ser distribuido a través de cargo. Además de crear aplicaciones embebidas a un muy bajo coste de tamaño con una seguridad en tiempo de compilación de futuros errores. También cuenta con un buen sistema de error handling y de logging flexible a la hora de mantener el código.Sus valores fundamentales es la gestión memoria segura garantizada en tiempo de compilación, utilizando los conceptos de ownership del dato y borrowing de memoria. Además de asegurar en tiempos de compilación no nos encontraremos con condiciones de carrera

Rust también sirve para Web, pasando por WebAssembly y mucho más

Lo más destacado de Rust en el mundo web es poder compilar a WebAssembly, lo cual permite ejecutar aplicaciones web en la mayor parte de navegadores con una velocidad muy cercana a las apps nativas. WebAssembly es, sin duda, una tecnología muy prometedora, aún sin explotar del todo, dónde Rust puede aumentar su impacto. También existen herramientas que permiten distribuir código en librerías npm o convertir código JavaScript desde Rust. Lo cual podría situar a Rust como uno de los lenguajes dentro del stack futuro de muchos desarrollos webs.

La comunidad de desarrollo lleva años pendiente de este hecho: que Rust consiguiera ser un lenguaje multipropósito y se adentrará también en el mundo del desarrollo web, más allá del desarrollo interno de un navegador. De este modo, y excelentemente documentado nos encontramos con la web “Are we web yet? con un directorio de todos los recursos a día de hoy disponibles para usar con Rust. Si aún no conocías, Rust es interesante saber como dispone de un excelente stack HTTP donde podemos utilizar web Framework como Rocket, incluso para capaces de sustituir a Rails/Django o Flask en un futuro.

También cuenta con distintas herramientas para crear APIs, conectores de bases de datos, clientes HTTP, CMS, sistemas de logging, etc..

Mozilla Rust

Proyectos usando Rust en producción: desde sistemas distribuidos a sistemas embebidos

Aparte de Mozilla y su desarrollo en Firefox. La comunidad de empresas que usan Rust en producción sigue aumentando. Así tenemos algunos ejemplos en distintos ámbitos como Dropbox, en el que Rust es una de la pieza claves en eficiencia de sus datacenters sirviendo contenido a más de 500 millones de usuarios.

Por otro lado, Yelp ha desarrollado su propio framework de A/B testingaprovechando la rapidez de de Rust (al mismo nivel de C) y más seguro que él, lo cual ayuda a su mantenimiento.

Recientemente Amazon se unió con el desarrollo de Firecracker un ligero sistema de virtualización para sistemas serveless en la nube de AWS.

También nos encontramos a Rust formando parte de algunas herramientas de Red Hat como su nuevo sistema de almacenamiento, a Microsoft usandolo como parte de la implementación de Azure para IoTReddit para el sistema de procesado de comentarios o a Twitter como parte de las herramientas internas del equipo de tooling.

Aquí podéis ver las empresas y proyectos que han llevado a producción desarrollos utilizando Rust.

Aprender Rust

Aunque Rust tiene un curva de aprendizaje un poco más áspera que otros lenguajes modernos de los que hemos hablado, cuenta con una excelente documentación en su web oficial con recursos totalmente guiados, además de diversos meetup. Aquí podéis ver un excelente video de la sesión de arranque de Rust del Meetup de Madrid, MadRust, dónde explican algunos de los principios fundamentales de Rust.

Podemos empezar por “el libro” de Rust, tal como se le conoce a The Rust Programming Language escrito por Carol Nichols y Steve Klabnik además de otras contribuciones de los comunidad Rust. También disponible en Amazon en versión papel.

Rust Social Wide

Existen una serie de ejercicios de ejemplo en el Github oficial de la comunidad de Rust. Decir también, que en el Roadmap de Rust está planeado crear más recursos para desarrolladores noveles e intermedios.

Quizás Rust sea el lenguaje que usemos a lo largo de los próximos 40 años sustituyendo a C/C++.

Vía: GENBETA

Valora este Artículo
Comparte si te ha Gustado
Artículos Relacionados