年金ロボットをめざして

FX(外国為替証拠金取引)自動運用ロボットの開発ブログのはずだった

青春の APL

APL - A Programming Language。数学が好きだったぼくは青春の頃、夢中になったが、時間の力は恐ろしく、それ以来一切使わなかったため、おぼろげにしか覚えていない。当時、APL で微積分を展開している本を持っていて、その印象が強烈で今でもそのイメージだけは浮かんでくる。

f:id:fxrobot:20131121035757p:plain

時は光速のように現代までワープした。当時は APL の勉強はしても APL を動かす環境がなかった。主に IBM の汎用機で動いていたと思う。それが今ではパソコンで動いている。フリーのものから有料のものまで多種あるようだ。完全にニーズがなくなったかと思う APL だけど、APL を今でも使っている人たちがいるようで、それは主に金融の世界らしい。

ところで、R という言語がある。TIOBE のランキングでは 2013年9月には 18位だった。R は配列やリスト、行列(Matrix)を処理するのに向いており、統計処理の分野で活躍している。APL の能力と共通する言語のようだ。R を使う人には APL も有用かもしれない。

APL のデータ型は基本的に行列で APL はそれを操作する言語だ。行列を一挙に操作する強力なオペレータをいくつも持っている。(APL ではスカラーもベクトルも行列もすべて Array と呼ぶ。そのため Array Oriented Language と呼ばれることがある)

 さて、いくつかある APL 処理系の中から、ぼくは NARS2000(フリーソフト)を選んで Windows 7 にインストールした。Windows バイナリの 64bit 版だ。

【 APL NARS2000 - http://www.nars2000.org/

f:id:fxrobot:20131121031213j:plain(クリックで拡大できる)

 画面の一番上で「Hello World !」は済ませている。

f:id:fxrobot:20131121031705j:plain
画面をみてもわかるように APL では特殊な記号を用いる。

f:id:fxrobot:20131121031948j:plain

こんな記号だ。今ではこれらの記号はすべてユニコードにもマッピングされており、普通のキーボードで使えるが当時は APL 専用のキーボードを使うほかはなかった。f:id:fxrobot:20131121032213p:plain

それはこんな感じ。

この特殊な記号を使わない方式を考えた「J」という言語があって、APL を発明したアイバーソンによって開発された。(http://jsoftware.com/

J 言語には K 言語という後継言語があるようだ。J の意味は不明だけど、K は J の後継という意味で K なのであろう。(http://en.wikipedia.org/wiki/K_%28programming_language%29

 ところで、標準的な APL のドキュメントはネット上にもとても少なく(とくに日本語は)て、学びたい人がいても学べないだろう。このブログでいつか、APL 超入門でも書いてみるかもしれない。お楽しみに。(言うだけかも知れない):P

それで、どこかに入門講座でもないかと探したらここが見つかった。
「APL言語入門」http://homepage3.nifty.com/ysaigusa/jp/apl/guide/intro/

あと、Ruby 開発者のまつもとひろゆき氏の講演のレポートがあって、
http://www.atmarkit.co.jp/news/200902/13/matz.html
f:id:fxrobot:20090212115508j:plain

こんなスライドが載っていた。ちょっと驚く。
Ruby はともかく HaskellErlang はぼくも注目している言語だが、APL を挙げるとは。

今のぼくにとっては APL は実用言語じゃないし、ぼくは APL の応用分野を持っていない。それでも、ぼくの青春の記憶の一部を飾ったともいえる APL が気軽にパソコンで使えるわけだから、細々といじっていきたいと思っている。

 

【 APL 関連記事 - 年金ロボットをめざして 】

・ 青春の APL(この記事)
http://fxrobot.hatenablog.com/entry/2013/11/21/040724

・ APL 知的形式の最高峰
http://fxrobot.hatenablog.com/entry/2013/11/23/092901

・ APL NARS2000 とその他の APL 処理系
http://fxrobot.hatenablog.com/entry/2013/11/25/071758

・ APL 入門
http://fxrobot.hatenablog.com/entry/2013/11/25/162800

・ TryAPL でトライ APL!
http://fxrobot.hatenablog.com/entry/2013/11/27/065215

・ APL 高次元へのアナロジー
http://fxrobot.hatenablog.com/entry/2013/11/28/074857