Joyベースのシェルスクリプトなんかどう?
再びOverview of the language JOY関連のチュートリアルやFAQを読み直しました。 今度はちゃんと理解できたと思います。 さて、以前これを『なでしこ』の様に日本語プログラミングに応用したら良いんじゃないかと書きましたが、撤回します。 日本語プログラミング言語の想定ユーザーとしては、『これからプログラミングを覚えたいという人』に設定するのが良いと思いますが、Joyはそういう人たちにとって難易度高すぎです。 関数型言語として設定されており、手続き型言語でおなじみのforループなどがなくmapやfilterというコンビネーターを使うことが前提となっています。 Joyの構文を日本語の文脈にうまく当てはめたとしても、プログラミングの初学者に向けて易しい解説をする自信はありません。^_^; むしろ、もっとハッカー向けの用途に適用したほうがいいと感じました。(ハッカーには日本語プログラミングは必要無さそうですので。日本語変換するのめんどくさそうとか言いそう。) 例えば、shellスクリプトなんかに適用すると良いのではないかと思います。 下記は、Joyで未定義の関数を外部コマンドから探して実行することを想定したコードになっています。
# bash
find . -name '*.c' | xargs wc -l
– 同じものを Joy風 shellスクリプトで書いた場合
'.' '-name' '*.c' find
*'-l' wc* map
print
– こんな事もできます。
# bash
lst=`find . -name '*.c'`
wc -l ${lst}
grep keyword ${lst}
– 同じものを Joy風 shellスクリプトで書いた場合
'.' '-name' '*.c' find dup
'-l' wc
'keyword' grep
もしかして、mapの実行をCPUの数だけ並列実行するなんてことも許されるのかも。(mapに渡す関数に副作用が無いことを前提にすればOK?) ライブラリはUNIXのコマンドツールをめいいっぱい利用することにすれば実用レベルに持っていくのもたやすいかも。 この言語もそういう悲しい運命をたどるのか、それとも使えるのか。 それは、結局どれだけ短いコードで問題を記述できるかがにかかかっているのだと思います。 実際に作ってみないと分かりませんが、いい線行っていると感じます。自分で作ろうと思うところまでは行きませんが… そういえば、私はscshをインストールしたけど、結局お手軽感が無くて使わなかったりします。 今迄、こういう妄想系アイデアを思いついてもlocalでメモするだけだったり、あるいは忘れてしまったりしていたので公開していくことにします。