関数言語ナイトに参加して

これ
聞きかじった内容のメモと雑感が混ざっていて良くないけど忘れないうちに書いた。

ハードウェアの性能を引き出すということ

僕の中で、LispSICP素数夜曲の印象が強かった。つまり、「実用ではない」と僕は考えていた。
Clojureの話は度々聞くけど、職場や周りの人達はみんなLLな感じだったのもあり、Clojureを含むLisp実用の話は他人ごとだった。
しかし、「昔はCGみたいなコンピューティングはLispでなければ実現できなかった」という話も耳にしていたので、そのあたりが疑問ではあった。

今回の目玉は、Lispの実行に特化したLispマシン、Symbolicsの動く実物があるということだ。
早めに会場に入ったので、すぐ目の前で見ることができた。
動くものはもうほとんど無いらしいので、近くで見れて、非常に貴重な経験ができたと思う。


OS "Genera"は、Unix系OSには無い様々な特徴を持っていた。
非常に優れた補完機能、Lispコマンドラインで直接評価できる、画面に描画されている全てがオブジェクトである、など。
また、記号処理が可能であること。

(+ 1/3 1)

を評価すると4/3が返るという例が実演された。
この記号処理は、計算機を使うという事において非常に重要らしい。
人間が考えたことを計算機で実行するには、思考を表現する抽象度レベルと計算機の駆動レベルを考える必要がある、みたいな内容だったと思う...

計算機は駆動レベルで動作するが、人間が書けるプログラムは、人間に理解できる抽象度レベルの水準で表現できることに限られる。
抽象度レベルが高ければ高いほど単純にプログラムを書けるが、それだと駆動レベルとの乖離が起きて実行できないので、駆動レベルと抽象度レベルを高いところで合わせることが重要なのかなと思う。

ハードウェアが性能を引き出すということ


ソフトウェアが例えばセグフォなどで止まるとき、そのエラーはソフトウェアで検出される。
実行時にどこかでエラーが発生し、それが致命的な問題を引き起こした時、OS(かな?)によって動作を止められるほが普通だと思う。
しかし、Symbolicsはそのエラーをハードウェアで検出することができるらしい。


ソフトウェアで検出する場合は、実際にどこでエラーが発生したのか特定が難しい場合がある。
しかし、ハードウェアでエラーを検出することができれば、原因を正確に把握することができる。
Symbolicsでは性格で詳細なエラーが出力される、というデモンストレーションがあった。


ハードウェアでエラーを検出するためには、特殊なハードウェアが必要になる。
Lisp専用のハードウェアは、そんな理由で40bitとかいう変な専用品だったようだ。
ちなみに40 - 32 = 8bitには、型の情報とかそういうのが入っていたらしい。


しかし、経済的な理由やモバイル製品の台頭によって、費用対効果が悪いLispマシンは駆逐されてしまった。
様々な(変な)機能を持った高性能なコンピュータは、安価で低性能なコンピュータで置き換えられて今に至る。
FPGAGPGPUなどではLispマシンのようなことがまた実現できるかもしれない。

Lispを書くということ


Lispプログラミング言語として強力なのは、動いているプログラムに直接手をいれることができるかららしい。
デモでは、3D CADで「マウスで選択したオブジェクトを法線方向に伸び縮みさせ続ける」というプログラムを書いていた。
実行後、頂点を選択するとその1つの頂点のみが、辺を選択するとその辺だけが、面を選択してもやはりその面だけが伸び縮みするという動作をした。
このことはライブラリにも言えて、staticなライブラリを自分の要件に合わせるには手間がかかるが、Lispだとそんなことは無い、みたいな。


で、Lispが敬遠される理由の一つに括弧の多さがあるとよく言われている。
しかし、橋本さんのLispは非常に見やすかった。ネストが妙に深いとか、car, cdrを直接触ったりするのははやり良くないようだ。

(Lispで)実現するということ


最後の方では、橋本さんたちが作ったBlueMarsというサービスの話があった。
セカンドライフのようなサービスもだが、このようなバーチャルリアリティ実現での解釈は様々だ。
Occurs Liftのような視差では実現できないとか、現在に至るまでバーチャルリアリティが実現していないのは技術以外にも理由があるようだ。
とは言え、こういった未来の実現に技術が資するところは多いわけで、そのためにはテクノロジをサービス化し、簡単に利用できるよう提供する必要がある。

ゲンロンカフェの階段を降りる間、Clojureについて考えた

今回は、ハードウェアの話が半分くらいを占めていたと思う。
Lispがここまで重宝されたのはLispマシンがあったからこそであり、マシンの力を引き出せるところにこそLispの魅力があったのだろう。
そうなると、Clojureはどうなるのか。
JVMによってハードが見えなくなることで、Javaの資産による利便性を得て、マシンのポテンシャルを失ったClojure
「金になるのはClojure」との声もあるが、橋本さんはClojureへの興味が薄いようだった。
シンタックスこそLispだが、どうClojureを扱えばよいのだろう。

まずはClojureで何か書けよって話ですね。いずれ頑張ります。