Lenguaje de programación Smeagol

El lenguaje de programación Smeagol fue creado por John Burrhus Maximus en el centro Xerox de Palo Alto, entre 1976 y 1977. Más tarde fue implementado en Unix V y cuenta con interfaz de compilación para gcc. Actualmente se está probando una versión beta mejorada, Gollum, pero Smeagol sigue siendo el marco de referencia para miles de programadores en todo el mundo – quitándole cuotas de mercado a Perl y COBOL.

Smeagol fue concebido como un lenguaje orientado a deseos – aunque toma elementos de la programación orientada a objetos y la programación orientada a aspectos. Al ser un lenguaje POD, el programador puede limitarse a un nivel especulativo-abstracto, creando funciones totalmente inútiles que llenen el código de basura y dificulten por lo tanto el plagio digital de la fuente. Veamos un ejemplo de típico programa “Hola Mundo!” hecho en Smeagol:

``~~// Comentario “cola de ratón”  
~~// Este programa dice “Hola Mundo!”

import smeagol.mouth.tongue.blabla.*  
import smeagol.whatever.yakyak.*  
export rubbish

static dead frozen class iMpRoPeRiO {  
public return kiss main (String[] Shoes) {

system.speakers.ShoutOutLoud(“Hola Mundo” + “!”);;  
system.washMouth();  
system.getTheHellOutofHere();

break(down);

}  
}

Smeagol es un lenguaje de nivel medio-bajo, dependiendo de la humedad y la temperatura del programador. Soporta herencia, divorcios, adopciones y matanzas. El manejo del espacio en memoria es bastante dinámico: tras cada ciclo de reloj, el interprete se encarga de ir quitando variables hasta que el programa deja de funcionar – de ahí que se diga que Smeagol es un lenguaje extremadamente rápido (“efímero” dicen los críticos). El manejo de excepciones es realmente innovador: si el interprete halla una excepción, abre enseguida el Buscaminas para que el programador pase un rato agradable. En todo caso, la mayoría de IDEs para Smeagol cuentan con un botón de pánico que activa la eyección automática del disco duro a través de una ventanilla en la semi-torre.

Los tipos primitivos o tipos de variables de Smeagol son los siguientes: boolean, bolero, int, char, float, string, double, triple, extra-with-cheese, hotstuff, whoop, bigwhoop y vacuum. La conversión de un tipo a otro se lleva a cabo mediante la función makeItFit(). El tipo boleano de Smeagol es especial: sus valores posibles se ajustan a una teoría de lógica difusa, así que además de true y false tenemos maybe, perhaps, would-be-good, nice y yewch!. Es un poco complicado de dominar al principio, pero luego las ventajas son muchas. Por lo que se refiere al tipo vacuum hace referencia a un tipo de variable vacía, ideal para programas de guru meditation.

Los operadores aritméticos y semánticos de Smeagol son pocos pero sencillos:

Por lo que se refiere a los operadores relacionales, unarios y lógicos, tenemos:

Las estructuras de control de flujo y los bucles son variados. La principal novedad con respecto al lenguaje C es la eliminación de if... else por if... watchOut... lastWarning... or else... then... que añade muchísima más riqueza al código. Los bucles pueden llevarse a cabo con for( ; ; ) o con repeatThat(). Por lo que se refiere a los do... while han sido sustituidos por los do... until... or else... y el famosísimo bucle de un solo paso, just do it. Los bucles pueden anidarse facilmente, pero romperlos es muy difícil, a menos que se use la función gotoHell o similares. Smeagol puede crear y manejar ventanas mediante la biblioteca myTreasureX, pero también puede hacerlo con puertas, sillas, mesas y estanterías.

Smeagol está siendo intensamente empleado en la industria bélica para guía de misiles imprevisibles y tácticas de intereferencia electrónica irónica. También se utiliza para programar automátas psicóticos y aplicaciones de cálculo de seguros de vida. Los sistemas expertos programados en Smeagol son eficaces y muestran cierta tendencia a la doble personalidad – síntoma del avanzado polimorfismo de la POD. El inteprete-terapeuta de Smeagol está disponible para las plataformas x86, Amiga, Dreamcast, SPARC, Itanium y Heidi. Funciona en los principales sistemas operativos: Linux, Finux, Minix, Windows, Hasefroch, DOS, TRES, TESSERA, PENTE, OS/2, OS/TIA, DEC, MEC, YAK, Irix, Chulix, Asterix, SkyOS, Spectrum, etcétera.