みなさまはesolangをやってますか?
やってない人は今すぐ初めてみるのがおすすめです。
esolangとは何か
esolangの語源
esolangとはesoteric programming languageの略です。
esotericとは"難解な"といった意味の単語で、そのまま難解なプログラミング言語という意味です。
esolangの特性はなんといってもその可読性の低さでしょう。
正直、可読性が低く人間が記述することを想定していない機械語またはアセンブリ言語ではない言語はesolangだと思います。
有名なesolang
有名なesolangは以下の通りです。
Brainfuck
言わずと知れた代表的なesolang。使用する文字は+
,-
,>
,<
,.
,,
,[
,]
の8文字でそれぞれが8種類の命令と対応しています。それ以外の文字は無視されます。
この言語は非常に仕様が簡単なので実用性を求めないのであればプログラミング初心者にもおすすめできます。
あとはこの言語のインタプリタを作ることが個人的な技術的なベンチマークになってます。
Piet
画像がソースコードになる言語。画像でプログラミングができるという性質から一定の知名度はあるけど仕様が曖昧なesolangの一つです。
wikiなどに添付されているものであっても正しく動作しないことなども普通にあります。
Lazy K
純粋な関数型言語です。これはUnlambdaというesolangを純粋な関数型言語にすることをモチベーションとして作成されました。
Lazy Kではいくつか記法があるもののそのいずれでも根幹を成す技術はSKIコンビネーターというものです。
JSFuck
JavaScriptが動作する環境では動作する言語です。使用する文字は[
,]
,(
,)
,+
,!
の6種類でこれらを組み合わせてJavaScriptの仕様を悪用する感じです。
ちなみに上記6文字以外を使ったalert("hello!");
のようなソースコードも動作はします。
まあそれはJSFuckではないのですが。
つまり、適当な手段を用いることでJavaScriptのソースコードの一部をJSFuckに置換するということが可能ということです。
esolangの有用性
ないです。
真面目な話、全く有用性がないわけではありません。
例えばBrainfuckはチューリング完全(C言語やJava、Pythonなどと同等の十分な計算能力があるという意味)を示すために用いられることがあります [誰によって?]。
また、プログラミング言語の中でも比較的小さい構成なのでLazy Kなどの言語は研究的な価値があると言われています [要出典]。