Deadfish es un lenguaje de programación de broma. Según la wiki de lenguajes de programación esotéricos, un lenguaje de programación de broma es aquel que
no tiene ningún interés excepto por su posible valor humorístico. En términos generales, es completamente inutilizable para la programación, incluso en teoría.
Uno de esos lenguajes de broma es Deadfish, que debe su nombre a
Deadfish originalmente iba a llamarse fishheads porque programar en este lenguaje es como comer cabezas de pescado crudas. Sin embargo, debido a las características limitantes del lenguaje, programar en este lenguaje se volvió como comer (y tener que oler) cabezas de pescado muertas y podridas, una experiencia que generalmente no se considera placentera.
Sin embargo, la página wiki de Deadfish contiene implementaciones en 65 lenguajes diferentes, incluidos C, C#, C++, Chicken, Clever, COBOL y Commodore 64 BASIC, por nombrar solo los C.
Deadfish se ha extendido a Deadfish~, que es un superconjunto del lenguaje Deadfish original. Por lo que probablemente sea una buena razón, Deadfish~ permaneció sin implementarse... hasta hoy.
Un programa Deadfish tiene una única variable acumuladora de número entero, que se inicializa a cero. El lenguaje de programación define solo cuatro operaciones.
cmd | descripción |
---|---|
i | Esto incrementa el acumulador. |
d | Esto disminuye el acumulador. |
s | Cuadra el valor en el acumulador. |
oh | Sale el acumulador |
Si el acumulador llega a -1 o 256, se pone a cero.
Deadfish~ es un superconjunto del lenguaje de programación Deadfish. Los programas tienen la misma variable acumuladora de entero único que Deadfish, que se inicializa a cero y tiene el mismo comportamiento con los valores -1 y 256. El lenguaje se define a través de la página en esolangs.org, que contiene la siguiente tabla de comandos admitidos.
cmd | descripción |
---|---|
i | Esto incrementa el acumulador. |
d | Esto disminuye el acumulador. |
do | Convierte el acumulador en un personaje. |
oh | Sale el acumulador |
s | Cuadra el valor en el acumulador. |
{} | Instrucciones dentro del bucle de llaves de cero a diez veces con un incremento de uno |
() | Si el acumulador no es cero, ejecute la declaración dentro una vez |
h | Detener |
w | ¡Hola Mundo! se muestra el saludo |
Un par de estos comandos son un poco ambiguos, así que decidí que para esta implementación
c
, genera el acumulador como un carácter ascii, dejando el valor en el acumulador sin cambios{}
, las declaraciones dentro de las llaves se repiten diez veces.El código no realiza ninguna verificación de errores y los comandos no válidos o las llaves anidadas incorrectamente se omiten silenciosamente, tal como lo hubiera querido el autor original de Deadfish.
#Uso
El código fuente está completamente contenido en deadfish.py
. Evalúe las cadenas de Deadfish con el método deadfish.deadfish
.
>> > import deadfish
>> > deadfish . deadfish ( "iisiiiis{ic}{ic}icicicicicic" )
ABCDEFGHIJKLMNOPQRSTUVWXYZ
También hay una CLI para Deadfish~, a la que se puede acceder con deadfish.deadfish_cli()
>>> deadfish.deadfish_cli()
>>iiio
3
>>h
De deadfish_cli()
:
>>iisiiiisiiiiiiiiciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiciii{c}dddddddddcdddddddciiiiiiiiiicdddddddc
Horrrrrrrrrrible
>>o
101
>>w
Hello, World!
Este ejemplo muestra las consultas estándar desde la parte superior de la página wiki de Deadfish, lo que demuestra que la aritmética funciona tal como uno "esperaría" en Deadfish.
>>iisssoiissiso
0289