Wednesday 24 September 2008

LISP

このタイトルでは書いてないらしい。最初に触ったLISPは、CP/M80上のmu-LISPです。1980年かな? 大学院で和田研で、utilispのコンパイラを読んだのが、一番大きなソースかも。

Franz lispがBSD標準でついていたし、KCL, Schemeとか、Alegro Common LISPとかも、一応、触っては見ました。たぶん、ABCLの実装か何かで使う羽目になったんだろうと思う。和田先生は、LISPの処理系は何を使っているんだろう?

なんだけど、結局、あまりはまらなかったかな。Prolog の方を良く使っていました。もう使ってないです。

macro とかでコード生成しながらプログラムというスタイルは、C++ではTemplate に、相当するのかな。はまり具合も同じような感じ。macroを展開してpp(prety print)する関数がないとプログラミング出来ないです。

Utilisp (Common LISP以前)では、木でデータ構造を全部書いてしまって、実行時に(nullp x)しながら、木をたどっていく見たいな感じだったと思う。でも、Common LISPな今は、defstruct しちゃうのが普通でしょ? 型が欲しければ、defstruct 多用して書けば良い。実行時チェックするコードを普通に入れれば、型付の言語と使い勝手は同じ。

インタプリタ(eval)があるのが絶対的に便利。でも、Perlだってあるしな。小さいテストをしやすいので、初心者向きだと思う。覚える構文が少ないのも利点の一つか?

未来大学では、Schemeから教えているはずだが、どんな感じかな〜 Schemeの問題は、後で役立たないことなんだよな〜

No comments: