言語オタきもいよなー。daiqoojiサイコー。
daiqoojiというのはいろんな言語のフィーチャーや躓きやすい点を大胆に取り入れた言語です。再帰やスコープやインデントやコメントという概念がないため非常にとっつきやすいです。ソースコードの一文字一文字が命令となっています。以下にその命令を見ていきましょう。
- *
- メモリを確保します。このメモリはプログラマが明示的に解放しなければなりませんが、解放する命令は用意されていません。(Cより)
- C
- 現在の継続をスタックに積みます。(Schemeより)
- M
- モナドをつくります。(Haskellより)
- J
- 例外 NullPointerException を発生させます。(Javaより)
- X
- 右クリックを禁止します。(JavaScriptより)
- D
- DanKogaiに添削してもらえます。(Perlより)
- R
- gemが重いんですけお…(Rubyより)
- @
- この部分がセキュリティホールになります。(PHPより)
- +
- 難解な記号で誰にも読めないコードを書き、悦に入ることができます。(Brainfuckなどより)
- Y,S,K
- それぞれYコンビネータ、Sコンビネータ、Kコンビネータですが、どう使うかは明らかにされていません。
いやー、どれを取ってもプログラミング言語のエッセンスといっていいものばかりでしたね。さて、daiqoojiには以上の命令の他に、プリプロセス命令として以下のものがあります:
- 大,空,寺,あ,ゆ,(,・,▽,),萌,え,っ,!
- ソースコードにこの文字が表われた時点で、その文字を印字します。
これを利用して、daiqoojiでの最初のプログラムは以下のようになります:
大空寺あゆ(・▽・)萌えっ!!
実行結果:
大空寺あゆ(・▽・)萌えっ!!
最後に、現在のdaiqoojiのPerlでの実装を貼っておきますね。
#!/usr/bin/perl use strict; use warnings; while (<STDIN>) { foreach my $ch (split //) { if ($ch =~ /[大空寺あゆ(・▽・)萌えっ!!]/) { print $ch; } else { # TODO } } }