Deadfish é uma linguagem de programação de piada. De acordo com o wiki da linguagem de programação esotérica, uma linguagem de programação de piada é aquela que
não tem nenhum interesse, exceto pelo valor potencial de humor. De um modo geral, é completamente inutilizável para programação, mesmo em teoria
Uma dessas linguagens de piada é Deadfish, que recebeu o nome de
Deadfish originalmente seria chamado de fishheads, pois programar nesta linguagem é como comer cabeças de peixe cru. No entanto, devido às características limitantes da linguagem, programar nesta linguagem tornou-se como comer (e sentir o cheiro) de cabeças de peixe mortas e podres, uma experiência que nem sempre é considerada prazerosa.
No entanto, a página wiki do Deadfish contém implementações em 65 linguagens diferentes, incluindo C, C#, C++, Chicken, Clever, COBOL e Commodore 64 BASIC, para citar apenas os C's.
Deadfish foi estendido para Deadfish~, que é um superconjunto da linguagem Deadfish original. Provavelmente por uma boa razão, Deadfish~ permaneceu sem implementação... até hoje.
Um programa Deadfish possui uma única variável acumuladora de número inteiro, que é inicializada com zero. A linguagem de programação define apenas quatro operações
cmd | descrição |
---|---|
eu | Isso incrementa o acumulador |
d | Isso diminui o acumulador |
é | Quadra o valor no acumulador |
ó | Produz o acumulador |
Se o acumulador chegar a -1 ou 256, ele será zerado.
Deadfish ~ é um superconjunto da linguagem de programação Deadfish. Os programas têm a mesma variável acumuladora de inteiro único que o Deadfish, que é inicializado em zero e tem o mesmo comportamento em torno dos valores -1 e 256. A linguagem é definida através da página em esolangs.org, que contém a seguinte tabela de comandos suportados
cmd | descrição |
---|---|
eu | Isso incrementa o acumulador |
d | Isso diminui o acumulador |
c | Faz do acumulador um personagem |
ó | Produz o acumulador |
é | Quadra o valor no acumulador |
{} | Instruções dentro do loop de chaves de zero a dez vezes com um incremento de um |
() | Se o acumulador não for zero, execute a instrução interna uma vez |
h | Parar |
c | Olá, mundo! saudação é exibida |
Alguns desses comandos são um pouco ambíguos, então decidi que para esta implementação
c
, gera o acumulador como um caractere ascii, deixando o valor no acumulador inalterado{}
, as instruções entre colchetes são repetidas dez vezes.O código não executa nenhuma verificação de erros e comandos inválidos ou chaves aninhadas incorretamente são ignorados silenciosamente, exatamente como o autor original de Deadfish teria desejado.
#Uso
O código-fonte está inteiramente contido em deadfish.py
. Avalie strings Deadfish com o método deadfish.deadfish
.
>> > import deadfish
>> > deadfish . deadfish ( "iisiiiis{ic}{ic}icicicicicic" )
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Há também uma CLI para Deadfish~, que pode ser acessada com deadfish.deadfish_cli()
>>> deadfish.deadfish_cli()
>>iiio
3
>>h
De deadfish_cli()
:
>>iisiiiisiiiiiiiiciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiciii{c}dddddddddcdddddddciiiiiiiiiicdddddddc
Horrrrrrrrrrible
>>o
101
>>w
Hello, World!
Este exemplo mostra as consultas padrão do topo da página wiki do Deadfish, demonstrando que a aritmética funciona exatamente como seria de esperar no Deadfish
>>iisssoiissiso
0289