Emacs como un motor de videojuegos
Introducción
En otro artículo que escribí anteriormente sobre Programación literaria en Emacs, hice una pequeñísima introducción a Emacs como editor y como siempre que hablamos de Emacs enfocándolo a un público lego, sabemos que la palabra editor se queda muy corta con Emacs. Yo también pensaba que Emacs era un editor, y la famosa batalla Vim vs Emacs, que por supuesto no deja de ser una broma entre frikis informáticos, pero cuando no conoces mucho la broma, sueles pensar que de verdad ambos programas son equiparables, es decir, son ambos editores y no lo son. Digamos que su nexo en común es que son dos programas que vienen del mundo UNIX, en los años 70, y eran muy usados en el MIT y otras universidades en la comunidad hacker de aquellos tiempos.
Pero como digo, a día de hoy, donde esa broma y esa cultura hacker se ha perdido casi completamente, es muy difícil de explicarle a las nuevas generaciones ese tipo de cosas. También es difícil, hablarles en general de cosas que tengan más de 5 años, y no, no es la típica crítica de estos jóvenes de ahora y tal, es que están cambiando las cosas tanto y tan rápido actualmente que realmente las tecnologías y problemas de hace más de 5 años ya parecen que son cosas de un pasado muy muy lejano. Yo por ejemplo, ya ni recuerdo lo que era usar reproductores de dvd/cdrom para instalar o grabar programas.
Emacs como máquina Lisp
Lo siguiente que solemos comentar es que Emacs es un interprete de Emacs Lisp, un lenguaje derivado directamente de Lisp, o directamente decimos que Emacs es una máquina Lisp. Esto puede estar bien pero claro, primero hay que explicar qué es Lisp o una máquina Lisp.
Lisp, no deja de ser un lenguaje de programación, solo que muy antiguo y por lo tanto muy desconocido. Es de la época de COBOL y FORTRAN y aunque son lenguajes que se siguen usando, pues no es digamos, la persona más atractiva de la fiesta. Lisp en su día fue muy importante, y hoy en día todos los lenguajes más famosos y utilizados han copiado o se han inspirado en él en multitud de características que introujo Lisp por primera vez. Aún así, también lo hace por diversos motivos un lenguaje "extraño" en cuanto apariencia y estructura, lo que para muchas personas lo hace aún más desconocido.
Aún así, como digo, en un momento donde, hay más lenguajes que nunca, pero eso mismo hace que mucha gente se acabe resguardando sólo en unos pocos, la fama de lenguajes como Rust, Java, C++, Javascript o Python, han eclipsado al resto, incluso lenguajes que fueron muy famosos hace solo 15 años como Ruby, ahora son casi unos desconocidos, ya no digamos otros lengaujes que tienen más de 50 años.
Finalmente, el otro día se me ocurrió pensar en un equivalente, más actual, y más conocido por la mayoría de las personas relacionadas con las informática que son los motores de videojuegos.
Emacs como motor de videojuegos
Los motores de videojuegos usan como base un lenguaje propio o existente y gran cantidad de librerías para un propósito, crear videojuegos y para ese propósito además de usar ese lenguaje, se facilitan herramientas que ayuden a la creación de videojuegos. Entre esas herramientas, hay o había antes, algo fundamental que es un editor de texto, cuyo propósito es ayudar a crear los programas en ese lenguaje necesarios para hacer el videojuego. Ese editor está totalmente integrado con el lenguaje que usa el motor, con las librerías y tiene un montón de ayudas más, como coloreado de la sintáxis, completado, debuger del lenguaje, programas de testeo de ese lenguaje, compilación y muchos otros etcéteras.
Pues algo así es Emacs, en este caso usa el lenguaje Emacs Lisp, o Elisp, y cuyo propósito es crear aplicaciones basadas en texto, aunque ya, y gracias a la incorporación de librerías gráficas en el propio Emacs también aplicaciones gráficas, aunque como digo lo principal son cosas relacionadas con texto. También es verdad que a nivel de programación a bajo nivel todo es modificación de texto, pero bueno.
La potencia de Emacs y sobretodo de Elisp es tal que realmente se pueden hacer videojuegos en modo texto y modo gráfico, y lo más interesante es que se hacen con el mismo código. Así que aunque nunca se ha planteado como un motor de videojuegos en sí, es decir, solo para hacer videojuegos, con su potencia y polifacetismo también sería posible enfocarlo solo a este propósito, aunque eso sí, estaría más enfocado en juegos 2D que 3D.
Si eres usuario de Emacs, ¿qué te parece esa analogía, tiene sentido para tí?
--------------------------------------------------------------------------------------------------------------------------
Si estás viendo este artículo desde un navegador web a través del proxi de flounder, aconsejo que accedas a la dirección de gemini usando un navegador compatible con este protocolo.
Gemini, es un protocolo minimalista que minimiza el uso de recursos del cliente y del servidor reduciendo las emisiones de carbono y además no permite el uso de programas que accedan a tu información personal, por lo que tu privacidad está asegurada.
Usa Gemini, salva al planeta, salva tus datos. Por un futuro mejor.
/gemlog/