APL 知的形式の最高峰
ずいぶん大げさなタイトルだけど、APL ってなんだろうって考えたとき浮かんだのが、高度な知的形式ということばだ。そして、APL のそれはプログラミング言語界において最高峰なのではないかということ。まぁ、そのように思い言ってしまう人間がいてもよいだろう。それで、そのように打ち上げてみたというわけなのだ。
知的形式と言った場合に浮かぶその他のプログラミング言語としては、Haskell がある。Lisp や Prolog はその意味ではちょっとだけ違うだろう。Erlang も浮かぶが、うーん、 Haskell が代表すればいいだろう。OCaml は Haskell よりも現実路線だね。それに設計者の個性を感じすぎる。
考えてみると、APL にも Haskell にも、その形式に必然性を感じるのだ。また、その美しさに多くの人が惹かれるのだろう。しかし、どんなに人を惹きつけようが VisualBasic のような人気者にはなれないだろう。Haskell に対しては学習ブームが起きていたようで、その意味である程度の関心を集めたのではないだろうか。しかし、それでは長続きはしなく、本来の利用者層に落ち着いてい来たのだろう。
Haskell はTIOBE ランキングで現在第46位だ。今後もかつてのブーム以上にはならないような気がする。APL に至ってはランキングに名前がないどころか、レガシーであるかさえ疑わしい。こんなに素晴らしいものがなぜだろう。Haskell と同様なのだろう。しかも Haskell にあるような意味での人気が APL にはないようなのだ。
さあ、タイトルに戻ろう。ぼくは今回なにか共通のテーマを与えて、APL、Haskell、Erlang などで、その形式を比較してみたらどうだろうと思いついた。それで、与えられた数までの素数のリストを求めるという問題を考えてみた。しかし考えているうちになんだかつまらなくなってしまった。ぐるぐる(google.com)して他の人によるコードも調べたが、そのコードを眺めているうちに APL 以外を並べても意味がないように思えてきたのだ。
ここでは APL のそれを紹介するので、それ以外については Haskell、Erlang などのファンの方がそれぞれ考えてもらいたい。そうすればぼくがつまらないという意味がわかるだろう。
それは APL ではこうなる。
今回はこの解説はしない。今回はただ眺めて想像してもらいたい。今後もこのブログで APL のことは書いていくつもりなので、そのなかでもっと基礎的なことから解説してみたいと思っている。興味のある人は期待してもらいたい。
さて、上の式の実行結果をお見せしよう。
「青春の APL」の記事で紹介した NARS2000(http://www.nars2000.org/)で実行した。
R←100
(∼R∊R∘.×R)/R←1↓⍳R
としているところを、
(∼R∊R∘.×R)/R←1↓⍳R←100
と一行にしても同じだ。
(APL ではオペレータに優先順位がなく右から左に結合していく)
P←(∼R∊R∘.×R)/R←1↓⍳R←100
もし上のようにすれば直ぐにプリントしないで変数 P に 2~97 までの素数のリストが代入される。
次の例では与える数を1000にしてみた。
最後にネットで見ることのできる参考書を紹介する。
あれ、URL が保存してなくてわからなくなってしまった。
今、再度検索してみたけど出てこない。
検索すれば出てくるはずなので、ぐるぐるしてほしい。申し訳ない。
検索で見つからなくて、英文でもほしい人はコメントでお願いします。
ないかな。