338 - Calendario de Adviento con Rust
Este es el primer año en el que voy a participar en el Advent of Code o Calendario de Adviento con Rust en mi caso, pero elige tu lenguaje.
Si, ya se que dije que este año tenía que posponer Rust en favor de terminar determinadas tareas. Sin embargo, no he podido resistirme a participar en este Código de Adviento, y hacerlo con Rust, y por esto lo he llamado Calendario de Adviento con Rust. Así que este episodio del podcast va sobre Calendario de Adviento con Rust, y no solo esto, porque durante las próximas semanas vas a poder ver, en riguroso tiempo real como supero o fracaso con esto del Calendario de Adviento con Rust.
Soy consciente de que me estoy metiendo en un berenjenal, contándote por adelantado mis propósitos, pero, sinceramente creo así podrás ser partícipe de esta aventura. Durante las próximas semanas, te iré contando como va esto del Calendario de Adviento con Rust.
Vaya por delante que empiezo mal, porque la próxima semana se me complica, por cuestiones personales. Ya veremos como consigo soslayar los inconvenientes.
Calendario de Adviento con Rust
Sobre los calendarios de Adviento
El otro día hablando con mi mujer sobre la idea del Calendario de Adviento con Rust, me preguntó sobre esto… La verdad, es que no tenía ni idea, es lo que tiene no tener hijos, y pasar bastante de las tradiciones. Básicamente se trata de una cuenta atrás hasta el día 24 de diciembre.
La cosa que esto del calendario de Adviento es una tradición que se remonta al siglo XIX, nada menos. Se trata de una tradición protestante alemanda donde los niños encendían una vela por cada día del período de Adviento. El período de Adviento es el tiempo que transcurre desde el domingo de Adviento, hasta el día 24 de diciembre.
Posteriormente, esto fue cambiando de forma que los niños, en lugar de poner una vela, recibían una chocolatina, claro que eso era quien podía. Luego se convirtieron en calendarios impresos, para ser recortados, o con ventanitas, con sorpresas.
El calendario de Adviento de código
El calendario de Adviento de código, es una idea original de Eric Wastl. Eric es un ingeniero de software, que trabaja como arquitecto senior en TCGPlayer, y que además del Advent of Code, tiene algunos otros proyectos.
En cuando al Advent of Code nació en 2015, y no es mas que un calendario de Adviento de pequeños puzzles, o como yo prefiero llamarlos retos. Se trata de puzzles que pueden ser resueltos en cualquier lenguaje de programación y son asequibles para cualquier nivel. O por lo menos. esa es la teoría. La práctica o la realidad, te la podré decir cuando termine este AoC 2021.
Es mas, según puedes leer en la propia página, no necesitas una formación en informática para participar, solo un poco de conocimiento de programación y algunas habilidades para la resolución de problemas.
En cuanto al equipo que necesitas para afrontar el Advent of Code, me hace gracia el comentario del propio Eric,
Cada problema se completa en un máximo de 15 segundos en una máquina de diez años.
En una entrevista que hicieron a Eric en [Real Python], hace unos días, dijo,
No te desanimes con los tiempos en las tablas de clasificación. Las personas que compiten por los tiempos de resolución, realizan gran cantidad de programación competitiva durante todo el año, y las cualidades para ser bueno en la programación competitiva son muy diferentes de las habilidades que hacen a uno un buen desarrollador.
En este sentido, además añade lo siguiente,
En lugar preocuparte en ser el primero, céntrate en aprender un nuevo lenguaje de programación, o una nueva característica del lenguaje, o en un nuevo algoritmo, o en encontrar la solución mas eficiente. O simplemente enfócate en resolver unos pocos puzzles.
Algunos consejos
Además de todo esto, en la propia página de Advent of Code, nos da una serie de recomendaciones muy interesantes,
- si te quedas atascado, simplemente prueba tu solución con los ejemplos que se dan. Si el resultado es el mismo, estás ante la solución correcta. En caso contrario, vuelve a leer la descripción del rompecabezas, porque lo mas probable es que no lo hayas entendido correctamente.
- Asegúrate de tener todas las entradas del rompecabezas. En muchas ocasiones, leemos demasiado por encima.
- Si te atascas pregunta a un amigo, a un conocido o incluso puedes solicitar pistas en subreddit
Preparándome para el Calendario de Adviento con Rust
Llevo algunos días preparándome para el Calendario de adviento con Rust. No es algo que se me haya ocurrido de la noche a la mañana, aunque casi.
El IDE
Como sabes llevo ya algún tiempo utilizando NeoVim como mi editor de referencia. Sobre todo ha sido desde su llegada a la versión 0.5 donde empecé a sacarle partido de verdad y donde decidí definitivamente dar el salto.
Una de las razones para decantarme precisamente por NeoVim te la conté aproximadamente hace un mes. En concreto te hablé sobre ello en el episodio 325 del podcast que titulé acertadamente Adios Vim, hola NeoVim. Y sinceramente, creo que ha sido un acierto.
En concreto una de las razones para cambiar a NeoVim ha sido el hecho de que tenga LSP integrado. Básicamente el motor de completado de código que está bajo el capó de Visual Studio Code.
En este sentido, he tenido que complementar NeoVim con algunos plugins adicionales para que trabaje como la seda con Rust. Aunque, como de costumbre puedes encontrar mi configuración en el repositorio de GitHub de mis dotfiles.
Imagen de portada de Irina Galeeva en Unsplash
Guay! Yo también lo estoy haciendo con Rust. De momento, estoy un poco … rusty! El año pasado lo hice con TypeScript.