Deadfish ist eine Scherz-Programmiersprache. Laut dem esoterischen Programmiersprachen-Wiki ist eine Scherz-Programmiersprache eine solche
ist außer dem möglichen Humorwert nicht von Interesse. Im Allgemeinen ist es selbst in der Theorie für die Programmierung völlig unbrauchbar
Eine solche Scherzsprache ist Deadfish, die ihren Namen erhielt
Deadfish sollte ursprünglich „Fischköpfe“ heißen, da das Programmieren in dieser Sprache dem Essen roher Fischköpfe ähnelt. Aufgrund der einschränkenden Eigenschaften der Sprache ähnelte das Programmieren in dieser Sprache jedoch dem Essen (und dem Riechen) von toten, verrottenden Fischköpfen, eine Erfahrung, die im Allgemeinen nicht oft als angenehm empfunden wird.
Dennoch enthält die Wiki-Seite für Deadfish Implementierungen in 65 verschiedenen Sprachen, darunter C, C#, C++, Chicken, Clever, COBOL und Commodore 64 BASIC, um nur die Cs zu nennen.
Deadfish wurde zu Deadfish~ erweitert, einem Superset der ursprünglichen Deadfish-Sprache. Aus wahrscheinlich gutem Grund blieb Deadfish~ bis heute unimplementiert.
Ein Deadfish-Programm verfügt über eine einzelne ganzzahlige Akkumulatorvariable, die auf Null initialisiert wird. Die Programmiersprache definiert nur vier Operationen
cmd | Beschreibung |
---|---|
ich | Dadurch wird der Akku erhöht |
D | Dadurch wird der Akkumulator dekrementiert |
S | Quadratiert den Wert im Akkumulator |
O | Gibt den Akkumulator aus |
Wenn der Akkumulator den Wert -1 oder 256 erreicht, wird er auf Null zurückgesetzt.
Deadfish~ ist eine Obermenge der Programmiersprache Deadfish. Programme haben die gleiche einzelne Ganzzahl-Akkumulatorvariable wie Deadfish, die auf Null initialisiert wird und das gleiche Verhalten bei den Werten -1 und 256 aufweist. Die Sprache wird über die Seite auf esolangs.org definiert, die die folgende Tabelle unterstützter Befehle enthält
cmd | Beschreibung |
---|---|
ich | Dadurch wird der Akku erhöht |
D | Dadurch wird der Akkumulator dekrementiert |
C | Macht den Akkumulator zu einem Zeichen |
O | Gibt den Akkumulator aus |
S | Quadratiert den Wert im Akkumulator |
{} | Anweisungen innerhalb der geschweiften Klammern durchlaufen null bis zehn Mal mit einer Schrittweite von eins |
() | Wenn der Akkumulator nicht Null ist, führen Sie die darin enthaltene Anweisung einmal aus |
H | Halt |
w | Hallo, Welt! Begrüßung wird angezeigt |
Einige dieser Befehle sind etwas mehrdeutig, daher habe ich mich für diese Implementierung entschieden
c
gibt den Akkumulator als ASCII-Zeichen aus, wobei der Wert im Akkumulator unverändert bleibt{}
werden Anweisungen innerhalb der geschweiften Klammern zehnmal wiederholt.Der Code führt keine Fehlerprüfung durch und ungültige Befehle oder falsch verschachtelte Klammern werden stillschweigend übersprungen, genau wie es der ursprüngliche Autor von Deadfish gewollt hätte.
#Verwendung
Der Quellcode ist vollständig in deadfish.py
enthalten. Werten Sie Deadfish-Strings mit der Methode deadfish.deadfish
aus.
>> > import deadfish
>> > deadfish . deadfish ( "iisiiiis{ic}{ic}icicicicicic" )
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Es gibt auch eine CLI für Deadfish~, auf die mit deadfish.deadfish_cli()
zugegriffen werden kann
>>> deadfish.deadfish_cli()
>>iiio
3
>>h
Von deadfish_cli()
:
>>iisiiiisiiiiiiiiciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiciii{c}dddddddddcdddddddciiiiiiiiiicdddddddc
Horrrrrrrrrrible
>>o
101
>>w
Hello, World!
Dieses Beispiel zeigt die Standardabfragen oben auf der Deadfish-Wiki-Seite und zeigt, dass die Arithmetik genauso funktioniert, wie man es in Deadfish „erwarten“ würde
>>iisssoiissiso
0289