LOLCODE es un lenguaje de programación esotérico inspirado en lolspeak , el lenguaje expresado en ejemplos del meme de Internet lolcat . [ 1 ] El lenguaje fue creado en 2007 por Adam Lindsay, un investigador del Departamento de Computación de la Universidad de Lancaster . [ 2 ] [ 3 ]
El lenguaje no está claramente definido en términos de prioridades de operadores y sintaxis correcta, pero existen varios intérpretes y compiladores funcionales. Se ha demostrado que una interpretación del lenguaje es Turing-completa . [ 4 ]
Estructura del lenguaje y ejemplos
Las palabras clave de LOLCODE se extraen del patois altamente comprimido (abreviado) del meme de Internet lolcat. A continuación se muestra un programa "¡Hola, mundo!" y un programa simple para mostrar un archivo en un monitor. [ 5 ] Un código similar se publicó en el Houston Chronicle . [ 1 ]
:)representa un salto de línea (\n):>representa una pestaña (\t):orepresenta un carácter de campana (\a):"representa una comilla doble literal ( " )::representa un único signo de dos puntos literal ( : ):(<hex>)Convierte un único punto de código Unicode hexadecimal a la codificación del entorno local (por ejemplo, UTF-8 ).:{<variable>}interpola el valor de la variable encerrada, convertida a cadena.:[<character name>]Convierte el nombre normativo de un único carácter Unicode a la codificación del entorno local.
Ejemplo 1
HAI 1.2 ¿PUEDE TENER STDIO? VISIBLE "¡HOLA MUNDO!" Gracias, adiós Ejemplo 2
HAI 1.2 ¿PUEDE TENER STDIO? ¿POR FAVOR ABRE EL ARCHIVO "LOLCATS.TXT"? ¡Genial! Gracias ARCHIVO VISIBLE OH NOES ¡ERROR INVISIBLE! Gracias, adiós En este ejemplo, se presentan comandos para abrir un archivo ( PLZ OPEN FILE "NAME"?—"¿Puedes abrir este archivo?") y el manejo de errores ( AWSUM THX—"¡Genial, gracias!" y —"¡Oh, no!").O NOES
Ejemplo 3
Otros comandos incluyen para declarar variables, ("variable [is/are/being] value") para asignarlas, enviar mensajes de error al front-end a través de en lugar de , y ("by the way") para denotar un comentario, haciendo que el analizador ignore el resto de la línea.I HAS A variablevariable R valueINVISIBLEVISIBLEBTW
Los bucles se crean con (inspirado en el meme LOLcat "Im in ur noun , verb ing yr related noun ") ), y terminan con . Los bucles se pueden romper con la palabra clave ("enough"), o en versiones anteriores, . [ 7 ] Los bucles también se pueden terminar con el comando condicional, como se muestra en el siguiente ejemplo.IM IN YR labelIM OUTTA YR labelENUFGTFOIZ
HAI 1.0 ¿PUEDE TENER STDIO? TENGO UNA VAR ESTOY EN TU BUCLE ¡¡VARRIBA!!1 VAR VISIBLE ¿IZ VAR ES MAYOR QUE 10? KTHX ESTOY FUERA DE TU MUNDO Gracias, adiós Este sencillo programa muestra los números del 1 al 11 y finaliza (según la especificación 1.0). El mismo programa, según la especificación 1.2, es (suponiendo que VAR comienza en 0):
HAI 1.2 ¿PUEDE TENER STDIO? IM IN YR LOOP UPPIN YR VAR HASTA AMBOS SAEM VAR AN 10 SUMA VISIBLE DE VAR AN 1 ESTOY FUERA DE TU MUNDO Gracias, adiós Ejemplo 4
HAI 1.0 ¿PUEDE TENER STDIO? VISIBLE "VES ESTO" POR CIERTO, VISIBLE "NO VES NADA" Por cierto VISIBLE "NO VES NADA" VISIBLE "AÚN NO VES NADA" Resumen VISIBLE "VES ESTO" Gracias, adiós El ejemplo anterior devolverá lo siguiente:
¿VES ESTO? ¿VES ESTO?Esto se debe a que la línea 3 genera una salida, U SEE THISpero la línea 5 se ignora porque está comentada con la BTWpalabra clave. Las líneas 8 y 9 no se ejecutan porque están dentro de un comentario de varias líneas que comienza en la línea 7 y termina en la línea 10. La línea 12 genera una salida U SEE THISy la línea 13 finaliza el programa.
Implementaciones
El intérprete más reciente y actualizado para el lenguaje LOLCODE es lci, escrito en C por Justin Meza. Interpreta LOLCODE de manera eficiente en diversas plataformas. [ 8 ]
La primera implementación de LOLCODE fue un analizador sintáctico de PHP escrito por Jeff Jones. [ 9 ] [ 10 ] El sitio web del analizador también fue el primero en utilizar LOLCODE como un lenguaje de scripting web real. Al ser de código abierto con una licencia de estilo BSD, ha sido bifurcado y utilizado por múltiples sitios web para implementar scripting de LOLCODE. La presentación ganadora de Pecha Kucha en PHP Works 2008 trató sobre este analizador sintáctico. [ 11 ] [ 12 ]
Existe un compilador .NET para LOLCODE escrito por Nick Johnson, [ 13 ] y presentado en los seminarios de capacitación para desarrolladores de Microsoft , Conferencia TechEd 2007 (Australia). [ 14 ] [ 15 ] [ 16 ]
PL/LOLCODE, un proyecto liderado por Josh Tolley, pone LOLCODE a disposición como un lenguaje de programación del lado del servidor dentro de PostgreSQL. [ 17 ]
Microsoft Dynamic Language Runtime tiene una implementación de LOLCODE para fines de prueba. [ 18 ]
lolcode-java (una gramática/intérprete de Java para el lenguaje de programación LOLCODE) es un proyecto también disponible [ 19 ] pero parece que aún no cumple con la especificación de la versión 1.3.
También está disponible un traductor de LOLCODE a JavaScript . [ 20 ]
También se incluye un compilador LOLCODE con la máquina virtual Parrot como uno de los lenguajes que demuestran el uso de las herramientas de compilación de Parrot. [ 21 ]
Un compilador, máquina virtual y depurador, creado por Piper, para un lenguaje similar a LoLCode, LoLCode 1337, escrito en C. [ 22 ]
Se puede encontrar una versión para computación paralela y distribuida. [ 23 ]
Proyectos relacionados
LOLCODE también ha inspirado a LOLPython, escrito por Andrew Dalke. LOLPython utiliza una sintaxis inspirada en LOL similar a la de LOLCODE, pero con un estilo parecido al de Python. Funciona traduciendo el código fuente de LOLPython a código Python. [ 24 ]
ArnoldC es una ramificación de LOLCODE que reemplaza el lenguaje lolspeak con citas de diferentes películas de Arnold Schwarzenegger . [ 25 ]
Referencias
- 1 2 Dwight Silverman (2007-06-06). "Estoy en tu periódico escribiendo mi columna" . Chron.com . Recuperado el 2007-06-06 .
- ↑ "Departamento de Informática de la Universidad de Lancaster – Noticias" . Universidad de Lancaster, Departamento de Informática. Archivado del original el 28 de mayo de 2009. Consultado el 9 de junio de 2009 .
- ↑ Hammock, Anne (1 de mayo de 2008). "La nueva fama: la celebridad de Internet" . CNN . Archivado del original el 30 de abril de 2009.
- ↑ Arachnid. "Prueba de que LOLCode es Turing completo: intérprete BrainF*** en LOLCode" . forum.lolcode.com. Archivado del original el 11 de julio de 2007. Recuperado el 5 de octubre de 2008 .
- 1 2 3 Adam Lindsay (25-05-2007). "Página principal de LOLCODE" . lolcode.com. Archivado del original el 02-10-2007 . Recuperado el 02-10-2007 .
- ↑ "palabras clave:can-has · LOLCODE" . Archivado del original el 6 de febrero de 2008. Consultado el 10 de febrero de 2008 .
- ↑ "SORN.net" . Archivado del original el 16 de febrero de 2009. Consultado el 7 de noviembre de 2007 .
- ↑ "LOLCODE + lci" .
- ↑ "Primer comentario del analizador" . Lindsay.at. Archivado del original el 19 de mayo de 2009. Consultado el 9 de junio de 2009 .
- ↑ "Analizador LOLCODE de Tetraboy" . Tetraboy.com. Archivado del original el 27 de febrero de 2009. Consultado el 9 de junio de 2009 .
- ↑ ""El mejor lenguaje web: LOLCODE" Diapositivas" . Slideshare.net. 7 de marzo de 2009. Consultado el 9 de junio de 2009 .
- ↑ "PHP Works" . mtacon.com . Consultado el 4 de noviembre de 2014 .
- ↑ Compilador LOLCODE .NET en Google Code
- ↑ TechEd Día 2: Microsoft anuncia compatibilidad con LOLCode , Long Zheng
- ↑ ¿ Código LOL en el próximo Visual Studio? Para gatos jóvenes y divertidos. Archivado el 23/10/2013 en Wayback Machine , NetworkWorld.com
- ↑ "Vídeo de la presentación de LOLCODE en TechEd 2007" . Blip.tv. 17 de agosto de 2007. Archivado del original el 5 de febrero de 2009. Consultado el 9 de junio de 2009 .
- ↑ PL/LOLCODE Archivado el 28/11/2010 en Wayback Machine , pgFoundry
- ↑ Deep DLR , John Lam y Martin Maly
- ↑ "Intérprete de gramática lolcode escrito en Java" .
- ↑ "LolCode" . Fullvolume.co.uk . Consultado el 9 de junio de 2009 .
- ↑ "Lightning-Parrot" . lolcode.com. Archivado del original el 22 de marzo de 2009. Consultado el 20 de junio de 2009 .
- ↑ "LoLCode 1337" .
- ↑ "Computación paralela y distribuida con LOLCODE" .
- ↑ "LOLPython" . Dalkescientific.com. 1 de junio de 2007. Consultado el 9 de junio de 2009 .
- ↑ "ArnoldC" .
Enlaces externos
- Lenguajes de programación esotéricos
- Universidad de Lancaster
- Lenguajes de programación creados en 2007
- Ciencia y tecnología en Lancashire