Deadfish はジョーク プログラミング言語です。難解なプログラミング言語 wiki によると、ジョーク プログラミング言語とは、
潜在的なユーモアの価値以外には何の興味もありません。一般的に言って、理論上でもプログラミングにはまったく使えません
そのようなジョーク言語の 1 つが Deadfish です。その名前の由来は、
Deadfish は、この言語でプログラミングするのは生の魚の頭を食べるようなものであるため、当初はフィッシュヘッドと呼ばれる予定でした。しかし、言語の機能が制限されているため、この言語でのプログラミングは、死んだ腐った魚の頭を食べる (そして臭いを嗅がなければならない) ようなものとなり、一般に楽しいとは考えられない経験となりました。
それにもかかわらず、Deadfish の Wiki ページには、C だけでも C、C#、C++、Chicken、Clever、COBOL、Commodore 64 BASIC を含む 65 の異なる言語での実装が含まれています。
Deadfish は、元の Deadfish 言語のスーパーセットである Deadfish~ に拡張されました。おそらく正当な理由により、Deadfish~ は未実装のままでした...今日まで。
Deadfish プログラムには、ゼロに初期化される単一の整数アキュムレータ変数があります。プログラミング言語で定義されている操作は 4 つだけです
cmd | 説明 |
---|---|
私 | これによりアキュムレータがインクリメントされます |
d | これによりアキュムレータがデクリメントされます |
s | アキュムレータの値を二乗します |
ああ | アキュムレータを出力します |
アキュムレータが -1 または 256 になると、ゼロにリセットされます。
Deadfish~ は、Deadfish プログラミング言語のスーパーセットです。プログラムには、Deadfish と同じ単一の整数アキュムレータ変数があり、ゼロに初期化され、値 -1 と 256 に関して同じ動作をします。言語は esolangs.org のページで定義されており、サポートされているコマンドの次の表が含まれています。
cmd | 説明 |
---|---|
私 | これによりアキュムレータがインクリメントされます |
d | これによりアキュムレータがデクリメントされます |
c | アキュムレータを文字にします |
ああ | アキュムレータを出力します |
s | アキュムレータの値を二乗します |
{} | 中括弧内の命令は、1 ずつ増分して 0 回から 10 回ループします。 |
() | アキュムレータがゼロでない場合は、内部のステートメントを 1 回実行します |
h | 停止 |
w | こんにちは世界!挨拶が表示される |
これらのコマンドのいくつかは少しあいまいなので、この実装では次のようにすることにしました。
c
は、アキュムレータを ASCII 文字として出力し、アキュムレータ内の値は変更されないままにします。{}
、中括弧内のステートメントは 10 回繰り返されます。このコードはエラー チェックを実行せず、無効なコマンドや不適切にネストされた中括弧は、Deadfish のオリジナルの作成者が望んでいたように、警告なしにスキップされます。
#使用法
ソース コードはすべてdeadfish.py
に含まれています。 deadfish.deadfish
メソッドを使用して Deadfish 文字列を評価します。
>> > import deadfish
>> > deadfish . deadfish ( "iisiiiis{ic}{ic}icicicicicic" )
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Deadfish~ 用の CLI もあり、 deadfish.deadfish_cli()
でアクセスできます。
>>> deadfish.deadfish_cli()
>>iiio
3
>>h
deadfish_cli()
から:
>>iisiiiisiiiiiiiiciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiciii{c}dddddddddcdddddddciiiiiiiiiicdddddddc
Horrrrrrrrrrible
>>o
101
>>w
Hello, World!
この例は、Deadfish wiki ページの先頭にある標準クエリを示しており、Deadfish で「期待する」とおりに算術が機能することを示しています。
>>iisssoiissiso
0289