562 - ¿Reinventando la rueda con Rust?

562 - ¿Reinventando la rueda con Rust?

Estamos reinventado la rueda con #rust ? Tiene sentido re escribir una y otra vez las aplicaciones? Las nuevas herramientas tienen sentido en #linux ?

1:25
-3:15

Hace unos días, a raíz del episodio 557, titulado Terminará Typst con Markdown, surgió una interesante conversación sobre si se estaba reinventado la rueda con las aplicaciones que se estaban implementado en Rust. En concreto se refería a Typst, y LaTeX, un lenguaje institucional en ciencias. Esta polémica, o discusión o como la quieras llamar, no es nada nuevo, ni que se circunscriba exclusivamente a los lenguajes de programación. Esto mismo lo puedes ver en otros ámbitos como puede ser las distribuciones Linux. Pero ¿estamos Reinventando la rueda con Rust?

¿Reinventando la rueda con Rust?

Algunos ejemplos de re escribir

En repetidas ocasiones en estos últimos años te he hablado sobre aplicaciones en Rust. Así por ejemplo, tienes cinco herramientas que tienes que probar en Linux o explosión de herramientas para la terminal. Y es que, desde la llegada de Rust a Territorio Linux, han aparecido centenares de aplicaciones y herramientas.

Algunas de estas aplicaciones o herramientas, son completamente nuevas y no habíamos visto con anterioridad. Otras sin embargo, son iguales o similares a otras ya existentes. Por ejemplo, en el caso de ls tienes,

En este caso, ni son exactamente iguales entre ellas, ni tampoco lo son a ls. Eso, si tienen la misma funcionalidad, o por lo menos la funcionalidad básica de ls. Sin embargo, si que añaden características adicionales, como por ejemplo, colores, iconos, archivos ocultos en base a gitignore, y mas.

Otra de las características que suelen añadir estas herramientas, aunque no en concreto estas alternativas a ls, son la velocidad de ejecución, o el desempeño.

¿Por qué reescribir?

Lo que me he encontrado en varias ocasiones es que el desarrollador de una aplicación o herramienta lo hace por aprender Rust, al menos en un inicio. Esta es una razón de lo mas normal, y que te tengo que decir que yo también he practicado. Y tiene la ventaja de que el resultado lo conoces, el que da la otra aplicación, y tu simplemente te tienes que preocupar en conseguir el mismo resultado o mejor.

Otra razón es para añadir algunas características que la aplicación original no tiene. Si, esto es algo que se hace de forma muy habitual, entre aplicaciones antiguas o nuevas. Simplemente, en lugar de sugerir una nueva característica a una aplicación existente, en abrir una issue, nos ponemos a programar desde cero toda la aplicación. De nuevo, esto es algo que suelo hacer, porque quiero hacer algo muy particular, y que pienso no será de interés general, aunque luego lo comparto, claro.

Dentro de las características que buscamos añadir o mejorar, una de las que sobresalen es el desempeño. Pero, ni es la primera ni la mas importante, simplemente es una mas. Esta opción también la veo como en el caso anterior. Conocemos el desempeño de la aplicación existente, y el objetivo. Mejorar ese desempeño.

Por último, otra de las razones que se me ocurren para reescribir una aplicación es porque las condiciones de contorno se han visto alteradas. Por ponerte un ejemplo, los emuladores de terminal, han evolucionado hasta el día de hoy soportando hasta color de 24 bit, cosa que antes no existía. ¿Tiene sentido implementar una herramienta que aproveche esta nueva característica? Claro que si.

¿Por qué nos molesta todo esto?

Yo veo diferentes razones que nos hacen rechazar estas nuevas versiones de todo lo que aparece, y como he dicho en la introducción, no solo de las aplicaciones reescritas en Rust, si no también de distribuciones, etc.

La primera de las razones que veo, y de la que yo también soy partícipe, es que el ser humano es reacio al cambio. No nos gustan los cambios. No nos gusta salir de nuestra zona de confort. Preferimos trabajar con aquellas aplicaciones y herramientas que ya conocemos, antes de cambiar, o aprender una nueva herramienta. Es aquello de quien tiene un martillo solo ve clavos. Somos capaces de utilizar la misma herramienta para todo. Probablemente esta es la razón mas potente.

Otra de las razones que encuentro habitualmente, es la comodidad. Tener que aprender una nueva herramienta siempre lleva un esfuerzo, que en la mayor parte de las ocasiones, no estamos dispuestos a invertir. Aunque nos digan que esta o aquella herramienta nos va a ahorrar tiempo. Es mas fuerte la pereza que la ventaja que nos proporcionará finalmente la nueva herramienta.

Por supuesto, y no podía dejar de mencionarlo, la soberbia. Eso de, tu que sabrás, mi herramienta es mejor que la tuya. Por supuesto, sin haberla probado, ni siquiera haber visto un vídeo del funcionamiento, nada… lo mio es mejor y punto. Esto me lo encuentro mucho, y tengo que decir, que de vez en cuando yo también lo padezco, aunque últimamente cada vez menos. Últimamente, te habrás dado cuenta que me he dado a probar y, si me equivoco, rectifico. Pero, esto no es lo normal, ni mucho menos.

¿Y que mas te da?

Pero, lo que mas me llama la atención de todo esto es y a ti ¿que mas te da?. Yo me pregunto, que sentido tiene nos molestemos porque otro, haya hecho la enésima versión de ls.

¿Por qué hay tanto comentario de en serio, otra distribución mas!?. Insisto ¿que mas te da?. Seguro, que pensarás, que se dedique a hacer aplicaciones o herramientas, que de eso hay menos… Pero, ¿y si no sabe programar?¿Que haga iconos?¿mas?

Nos quejamos de todo. Si hay mucho, porque hay mucho, y si hay poco, porque hay poco. Si en lugar de quejarnos tanto, nos dedicáramos a apoyar, a todos nos iría mejor. Pero esto no es mas que mi opinión.

Conclusión

Todo esto venía a raíz de Typst. Precisamente de Typst, que de verdad, tal y como comenté en el episodio anterior, me parece una auténtica revolución, pasando por encima de LaTeX… Pero bueno, esto es solo mi opición… ¿Tu que opinas?.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *