245 - Objetivo Rust
En este episodio del podcast te cuento sobre mi objetivo para este año 2021, aprender un nuevo lenguaje de programación, aprender Rust.
En el episodio 243 te hablé sobre el augurio Linuxero. Básicamente, se trataba de repasar mis objetivos para atareao.es y su grado de cumplimiento, y por otro lado, indicarte cual iban a ser los objetivos para este año entrante. Por supuesto, todo esto era relativo a atareao.es. Me quedaban por contarte mis objetivos personales, también para este año. Lo cierto es que no tengo muy claro como contarlos, si hacerlo directamente en el podcast, si en el blog, si en vídeo… Y es que mi objetivo para este año es aprender un nuevo lenguaje de programación, mi objetivo es aprender Rust.
Como te decía, no tengo claro como contarte esta aventura en la que me he embarcado, pero lo que tengo claro es que quiero hacerlo, quiero compartir contigo esta aventura.
Objetivo Rust
¿Porque aprender un nuevo lenguaje de programación?
Lo cierto es que en estos últimos años me he enfocado mucho a Python y a JavaScript. Sin embargo, desde siempre me han gustado los lenguajes compilados, y esta es una de las razones por las que quería dar un paso adicional.
Por otro lado, si bien, estoy realmente satisfecho con el resultado de las aplicaciones para el escritorio Linux, que he implementado tanto en Python como en JavaScript, lo cierto es que quería mejorar, algunas de estas aplicaciones dándoles mas fluidez, y para esto, es necesario, sin lugar a dudas recurrir a un lenguaje compilado.
Así me he estado debatiendo en las últimas semanas por un lenguaje compilado, y dudaba entre Go y Rust. De hecho, casi estaba convencido de adoptar Go, sobre todo porque muchos de los servicios que estoy utilizando últimamente, están implementados en Go, como por ejemplo Traefik.
¿Que es Rust?
Probablemente te estés preguntando ¿que es Rust? A parte de un lenguaje de programación. ¿De donde ha salido?
Rust es un lenguaje de programación compilado multiparadigma, diseñado pensando tanto en el rendimiento como en la seguridad, sobre todo en lo referente a la seguridad en concurrencia.
El lenguaje surge de un proyecto personal iniciado en 2006 por Graydon Hoare, que por aquel entonces trabajaba para Mozilla. En 2009 la fundación Mozilla comenzó a patrocinar este proyecto.
En agosto de 2020, Mozilla despidió a 250 empleados, entre los que se encontraban la mayoría de los que constituían el equipo de Rust. Esto llevó a que se persiga la creación de la Rust Foundation.
Indicarte que este lenguaje están liberados bajo licencia dual Apache y MIT.
¿Porque Rust?
Lo primero que se me viene a la cabeza, al hablarte sobre esta aventura, es contarte porque me he decantado por Rust. Después de mucho leer al respecto, probablemente haya sido el artículo Rust vs Go de John Arundel el que me ha hecho decantarme por Rust.
Si no lo conoces, John Arundel es un conocido mentor de Go.
Similitudes
Rust y Go tienen muchos parecidos entre si, si bien el primero está enfocado en la seguridad y el rendimiento y el segundo en la facilidad de desarrollo. Algunos de los aspectos en los que coinciden ambos lenguajes de programación,
- Ambos tienen como objetivo evitar los errores de acceso a memoria de forma insegura e incorrecta. Aunque cada uno de los lenguajes lo hace de forma distinta.
- Son lenguajes compilados, con las ventajas que esto conlleva, y una de las razones, por las que me he decantado por estos lenguajes, como he indicado en la introducción.
- Ambos son lenguajes de propósito general, que van a permitirte implementar todo tipo de desarrollos, desde aplicaciones web hasta microservicios.
- Igualmente, ambos lenguajes están enfocados en lo pragmático, ni son totalmente lenguajes funcionales ni totalmente orientados a objetos. Ambos son pragmáticos, el objetivo es resolver un problema con independencia de la forma en la que lo tengas que hacer.
- Son lenguajes pensados para trabajar a gran escala y para equipos grandes. Así no se preocupa tanto del estilo de programar, para esto ya hay herramientas que se encargan de formatear el código. Igualmente tienen herramientas que se encargan de gestionar las dependencias.
Ventajas
Evidentemente, son parecidos pero no iguales, de forma que para algunos aspectos es mas interesante utilizar un lenguaje que el otro.
- Rendimiento. Aunque ambos lenguales son extremadamente rápidos porque son compilados, sin embargo, como te indiqué anteriormente, Rust está mas enfocado al rendimiento, llegando a tener resultados similares a C y C++.
- Simplicidad. Go fue pensado para que sea sencillo de aprender, con una sintáxis simple, y que te permita comenzar a desarrollar tus aplicaciones en tan poco tiempo como sea posible. Por el contrario, Rust tiene muchas características
Espero que te haya gustado este nuevo episodio del podcast. Si puedes, te agradecería una valoración en iVoox y/o en Apple Podcast.
Imagen de portada de Adam Winger en Unsplash