2011/04/12

日記(Scheme/Lisp とか、DSL とか)

近頃、Scheme(Gauche) で DSL を書くお仕事をしています。domain specific language のあれです。先日までは、Gauche で JSON を使って PostgreSQL とやり取りする CGI な API を書くお仕事をしていました。(主に設計面と進捗的なとこでボツりましたけどね。。面目なさ過ぎて涙目 orz)

現在お世話になっている会社にて、「言語は Scheme でも Common Lisp でも、他のなんでも好きなものを使って良いよ。」という素敵なお話で、Scheme を選びました。Lisp が好きな身としてはすごく幸せな環境です。(windows 環境であれば C# を選らんだと思いますが。)

ただ。私のような下級戦士にとっては仕事で Scheme を使うというのは、それが例え Gauche であっても茨の道だということを実感しました。春ですね。

というのは、Scheme や Lisp という言語がパワフルかどうかとは関係ないところで困るんです。ユーザーが少な過ぎるんだと思います(他国では違うのかも?TIOBE Software: Tiobe Index)。ユーザーが少ないということは、ググっても情報(ある意味"答え")が出てこないんです。「こういう方法で解決した」「こうやったら、こうなった」「これをこう使ったら、結果こうなった」というような情報もすごく少ないです。あっても「入れてみた」「使ってみた」「試してみた」がほとんどです。なので自ら、"考えること"、"試してみる必要のあること"が多くなります。結果的に他の言語でググったり、他の言語のドキュメントを読んだりしなければならなくなります。この状況にアンビバレントな感情を抱かざるを得ません。仕事では時間を無制限に使うわけにはいきませんよね。ググって「あーこれでできるんだ。(ちゃちゃっ!終)」とはなりません。

弱音でしょうか、いいえゆとりです。ただ、これってプログラミングとしてはすごく楽しいんですよね。Lisp は書くこと自体楽しいですし。その点は幸せです。

で、急に「ダイの大冒険」の話です。大魔王バーンが使う「光魔の杖」ってありましたよね。簡単に言えば「理力の杖」を超強力にしたもの、ってロン・ベルクが言ってたあれです。理力の杖は、魔力を打撃力に替えることで攻撃力が上がるんですが、これは誰が使ってもだいたい同じくらいの攻撃力になるわけです。光魔の杖は、その上限がなくて、魔力が強ければ強いほど攻撃力が無限に上がるんです。Lisp って、光魔の杖だと思うんですよね。既に高い技術を持ったプログラマが更なる自由とパワーを得ることができる言語。でも私が使ってもせいぜい理力の杖なんじゃないかと。

本題

今やってる DSL については、画像処理系の DSL です。「できたら、BSD ライセンスか何かで公開しちゃえば?」とのことなので、そういうこともあるかもです。
  • DSL とはインターフェースである
  • DSL とは極限まで抽象化した API である
  • DSL のデザインとは、API のデザインである
こういうことを、見たり聞いたりしました。ホントそうだなと思います。API デザイン力(というか抽象化能力)が高くないと、いくらパワフルで DSL 定義が得意と言われてる言語(つまり Lisp のことですが)を使っても意味がないと感じています。当たり前っちゃ当たり前ですよね。

で、いろいろ読んだりするわけです。そのメモ。Martin Fowler 先生は DSL の本(Domain-Specific Languages (Addison-Wesley Signature Series (Fowler)))まで出してるんですね。確かにリファクタリング(リファクタリング―プログラムの体質改善テクニック (Object Technology Series))の一つの極地の様な気もします。

DSL 本関連。


Scheme で DSL といえば
などを思い浮かべます。でもよく考えてみれば、On Lisp でも LOL(LET OVER LAMBDA Edition 1.0) でも PAIP(実用 Common Lisp (IT Architects’Archive CLASSIC MODER)) でもほとんどが DSL と呼べるようなものばかりだったじゃないですか。私は一体何を読んできたんだろう。。

あ、直接関係ないけど、見かけたのでメモ。Monads in Scheme の和訳みたいです。


そして、DSL といえば、リトル言語。リトル言語といえば UNIX 。UNIX に憧れを持ち始めたこの頃。

Domain-Specific Languages (Addison-Wesley Signature Series (Fowler))

0 件のコメント:

コメントを投稿