魔術師をめざして

魔術師を目指して、相場・数学・プログラム言語を研究しています。

APLとJ言語あとR言語

こんかいは APL、J言語、R言語をひとまとめに考察してみたい。この3つの共通性とはなんだろう。ぼくは、これらは共に「配列指向言語」であると表現してみたい。ちょっとまえに R言語の人気が世界的に高まっているようだという記事を書いた。
f:id:fxrobot:20141127012258j:plain

R言語は統計分析専用のソフトウェアと見られがちだが、ぼくはR言語を強力な汎用プログラミング言語でもあると思う。

R言語をいったん汎用プログラミング言語と見てみると、APL との比較が必要になるだろう。ぼくは APL のほうが優れると見るが、現実には R言語のほうが使えるという局面も多いだろう。

ところで、APL はもっとも古い言語のひとつで、もっとも未来の言語のひとつであるともいえると思う。そして、ぼくは APL に残りの人生を掛けようと思っているのだ。でもね、念のために言っておくなら、BASICSchemeProlog などもぼくの趣味であり続けることに変わりはない。

APL のほか未来に通じる言語として有力なのは、HaskellErlangScala などではないかと思うが、これらは未来のある若者に任せたい。

では、J言語はどうだろう。ぼくにとって J言語は APL よりもさらに刺激的で魅力的な言語なのだ。 しかし、一般的な評価は高いとはいえない。変態的と言われることもあるようなのだ。でもそれはね、J言語の説明者(Evangelist)がいないからじゃないか。

f:id:fxrobot:20141130053220j:plain

現在の J言語利用者というのは、数学者ばかりのように思える。彼らは説明にはそれほど興味がないように思えるのだ。とはいっても、ぼくにはその実体の詳細はよく分かっていない。それでも、もっとよい説明があれば、評価を見直されるべき言語であると言うことができるのではないだろうか。

さて、J言語の基本はすべてが APL にある。だから、J言語を学びたい人はその前にまずは APL を学ぶとよいと思う。回り道に思われるかもしれないが、ぼくはそうではないと思う。APL の日本語書籍はいまでも手軽に手に入るので、まずは APL の入門書を読んでみるとよいだろう。

APL は特殊な記号を使うため、軽快なるパソコン利用者には敬遠されてきたと思う。しかし、Unicode の普及により APL の特殊記号の壁はなくなりつつある。あとは、日本語環境で動作するフリーの処理系が望まれるところで、これが敵えば APL 人気が爆発したとしても不思議はない。

ぐるぐる回っているが、つぎは R言語。実用的で強力な言語。そして妥協的。ぼく的にはウンザリするのだが、記述は C言語スタイルで、オブジェクト指向もある。

R のみ        → 要素数 → 2^31-1 → 2147483647            → 約21億個
bigmemory → 要素数 → 2^52    → 4503599627370496 → 約4500兆個
(要素数:ベクトル、行列、配列などの要素数

上を見てほしい。このとおり R言語は強力だ。 bigmemory というのは、R向けのパッケージで、なんと LGPL3ライセンスで提供される。その他 ff という類似パッケージがある(GPL2ライセンス)。

NARS2000(APL の処理系、フリー)だと以下のとおりのレベル。

NARS2000 → ι 314000
NARS2000 → 314000 ρ 10000
NARS2000 → 200000 ρ 1000000000000000000

こんかいは詳細を説明しないが、R言語に比べると実に頼りない。しかしそれは APL の本質とは関係ないことで、処理系の制限に他ならない。APL の言語思想が妥協的でないだけに現実世界においては逆にむしろ妥協的にならざるをえないということだろう。

最後に、最初に出てきた APLJR のロゴ。APL と J言語のぴんから兄弟に、アイドル歌手の R言語。これを抱える芸能事務所。そこのロゴだから、艶やかに R 辺りは赤系の色にしようと思ったが、そうすると全体のバランスが崩れる。R をグリーンに押さえたので、全体的に男の子系の雰囲気になった。R は目立ってはいけないのだ。

さあさあ、というわけで、APLJR ロゴの旗印の下、ぼくは現れるのだ。どこに?

至る所に。