Deadfish est un langage de programmation amusant. Selon le wiki du langage de programmation ésotérique, un langage de programmation blague est un langage qui
n'a aucun intérêt si ce n'est sa valeur humoristique potentielle. D'une manière générale, il est totalement inutilisable pour la programmation même en théorie
L'un de ces langages de plaisanterie est Deadfish, qui tire son nom de
Deadfish devait à l'origine s'appeler fishheads, car programmer dans ce langage revient à manger des têtes de poisson crues. Cependant, en raison des caractéristiques limitées du langage, programmer dans ce langage est devenu comme manger (et devoir sentir) des têtes de poisson mortes et pourries, une expérience qui n'est pas souvent considérée comme agréable.
Néanmoins, la page wiki de Deadfish contient des implémentations dans 65 langages différents, dont C, C#, C++, Chicken, Clever, COBOL et Commodore 64 BASIC pour ne citer que les C.
Deadfish a été étendu à Deadfish~, qui est un super-ensemble du langage Deadfish original. Pour une bonne raison probablement, Deadfish~ est resté inappliqué... jusqu'à aujourd'hui.
Un programme Deadfish possède une seule variable accumulateur entière, qui est initialisée à zéro. Le langage de programmation définit seulement quatre opérations
cmd | description |
---|---|
je | Cela incrémente l'accumulateur |
d | Cela décrémente l'accumulateur |
s | Met au carré la valeur dans l'accumulateur |
o | Sortie de l'accumulateur |
Si l'accumulateur devient -1 ou 256, il est remis à zéro.
Deadfish~ est un super-ensemble du langage de programmation Deadfish. Les programmes ont la même variable d'accumulateur entier unique que pour Deadfish, qui est initialisée à zéro, et a le même comportement autour des valeurs -1 et 256. Le langage est défini via la page sur esolangs.org, qui contient le tableau suivant des commandes prises en charge
cmd | description |
---|---|
je | Cela incrémente l'accumulateur |
d | Cela décrémente l'accumulateur |
c | Fait de l'accumulateur un personnage |
o | Sortie de l'accumulateur |
s | Met au carré la valeur dans l'accumulateur |
{} | Les instructions à l'intérieur des accolades bouclent de zéro à dix fois avec un incrément de un |
() | Si l'accumulateur n'est pas nul, exécutez l'instruction à l'intérieur une fois |
h | Arrêt |
w | Bonjour le monde! le message d'accueil s'affiche |
Certaines de ces commandes sont un peu ambiguës, j'ai donc décidé que pour cette implémentation
c
, affiche l'accumulateur sous forme de caractère ascii, laissant la valeur dans l'accumulateur inchangée{}
, les instructions à l'intérieur des accolades sont répétées dix fois.Le code n'effectue aucune vérification des erreurs et les commandes invalides ou les accolades mal imbriquées sont ignorées silencieusement, tout comme l'auteur original de Deadfish l'aurait souhaité.
#Usage
Le code source est entièrement contenu dans deadfish.py
. Évaluez les chaînes Deadfish avec la méthode deadfish.deadfish
.
>> > import deadfish
>> > deadfish . deadfish ( "iisiiiis{ic}{ic}icicicicicic" )
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Il existe également une CLI pour Deadfish~, accessible avec deadfish.deadfish_cli()
>>> deadfish.deadfish_cli()
>>iiio
3
>>h
De deadfish_cli()
:
>>iisiiiisiiiiiiiiciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiciii{c}dddddddddcdddddddciiiiiiiiiicdddddddc
Horrrrrrrrrrible
>>o
101
>>w
Hello, World!
Cet exemple montre les requêtes standard du haut de la page wiki Deadfish, démontrant que l'arithmétique fonctionne exactement comme on pourrait s'y attendre dans Deadfish.
>>iisssoiissiso
0289