「Clojureシンタックスハイライター開発から考えるこれからのLispに必要なもの」を発表しました
7/27に開かれたLisp Meetup #30で「Clojureシンタックスハイライター開発から考えるこれからのLispに必要なもの」というタイトルで話してきました。
内容としては、去年のShibuya.lispのテクニカルトークで話した内容を重点をズラして焼き直したものです。終わった後にいくつか意見をいただきましたが、絶対数は多くないのでどう受け止められているのかはちょっと気になるところです。
「これからのLispに必要なもの」とタイトルにはあるものの、具体的に「これが必要だ」と言えてないのが残念な感じですが。。。この発表でいいたかったのは、「LispコードをCASEツールで解析できる対象にしていきませんか」という提案です。
ICSE勉強会なんかの話を聞いていると、他の言語(特にJavaとか)はコードの解析手法なんかがガンガン積み上げられていってて、開発環境がどんどん便利になっているように思います。一方でLispは、強力なマクロがあることがコードを解析する面では大きな障壁になっていて、このあたりの話がそんなに進んでいないように感じられます。Lispではコード中のどこが式なのかを(コンパイラの外から)判別することすら一般的には難しいのです。
もちろん、マクロ展開時にあらゆる関数が呼び出せてしまう以上、完全な静的解析をするのは不可能ですが、その中でも状況が年を追うごとに改善してきているという実感がさっぱりないのが寂しく感じます。Scheme方面の、マクロをシンタックスオブジェクトからシンタックスオブジェクトへの関数として定義する方向性はひとつの解なのかなぁと個人的には思っています。伝統的なLispマクロを扱う言語についてはどうでしょうか?
リンク
一応、シンタックスハイライターと解析器のプロジェクトのリンクも貼っておきます。
- symbol-analyzer:Clojureの細粒度解析器
- genuine-highlighter:出力先に依存しない汎用的Clojureシンタックスハイライター
- lein-highlight:genuine-highlighterを応用したClojureコードビューワを実行するLeiningenプラグイン
解析器についてはかろうじてインストールして使ってみることができる状態です。シンタックスハイライターとLeiningenプラグインについてはもうしばしお待ちを。