Óptimos reencuentros
Un caso normal: un amigo llega a visitarte y le presentas tu ciudad; lo invitas a una cafetería; a un bar; le presentas a un amigo; visitas los lugares emblemáticos; es más, todo ello resulta habitual (e incluso verlo borracho), ahora, si lo ves emocionado con algo que para ti es «normal», la cuestión es diferente.
La reflexión que me gustaría hacer es la siguiente: a veces damos por hecho cuestiones que son obvias porque cada día están ahí, las vemos o interactuamos con ellas, pero rara vez, nos detenemos a preguntar, ¿qué pasaría si esto no se vuelve a repetir o no las volvemos a ver?, o mejor, ¿qué hubiera pasado si nunca supe de esto? Ambas preguntas son igual de válidas.
Es a lo menos interesante. Ahora bien, hay un caso que para usted le pueda interesar más: hace unos días me reencontré con un libro que hace un tiempo deseaba leer y por algún motivo —desconocido para mí— no había leído aún. Se llama Writing Efficiente Programs de Jon Louis Bentley (1982). Es un libro que te enseña a optimizar tu código. Lo que algunos que no les gusta la teoría, citarían —erróneamente— a Donald Knuth, «La optimización prematura es la raíz de todos los problemas» (véase más abajo la entrevista que le hace Lex Fridman a Knuth), y con esto creen defenderse de cualquier intento de buscar una manera de hacer su código eficiente.
Sin embargo, aprender a optimizar su código es decisivo: dicho de otra forma, es la manera de sacar el máximo provecho al lenguaje de programación que usas. Un mal programador crearía código ineficiente en cualquier lenguaje (incluso en C o C++), mientras que, un buen programador que conoce su herramienta, podría entender el porqué su código funcionan tan lento o de forma incorrecta.
También hay que añadir que, la tarea de optimizar código es dura, tal vez demasiado. Y es muy probable que solo esté en condiciones de hacerlo cuando tenga la suficiente experiencia con una herramienta; antes, es una tarea vana y una perdida de tiempo. Porque no puede optimizar algo que aún no asimila.
Volviendo al libro de Bentley, en este, el autor presenta los ejemplos de código en Pascal, y aunque pueda parecer antiguo es ampliamente aplicable a lenguajes actuales como Python o Rust. Las reglas expuestas ahí resultan interesante a cualquier mente curiosa y, en otras palabras, te da la oportunidad de entender cómo sacar un óptimo rendimiento al compilador. Digo Python o Rust, y no Clojure o Haskell, pues, las reglas expuestas son para lenguajes imperativos, con memoria mutable, y que utilizan bucles. Por tanto, a los que les gusta la programación de sistemas, aprovecharan.
Mi amigo no conocía el mar, algo extraño para la mayoría de las personas, excepto para los que viven en Bolivia. Así que haber tenido la oportunidad de ver su felicidad en dicho encuentro fue maravilloso, algo muy lindo de ver.