(peek-char t *sexp-life*)

common lispについて書きます。他のプログラミング言語についても書くかも知れません。

local-projectsいろいろ

とりあえず、今日も勉強。

基本自分がlispを書く時はプロジェクトみたいなものは

作らない。hoge.lispみたいに1つのファイルで書いている。

でも、パッケージとか見てるとだいたいプロジェクト単位で作られている。

で、だいたいquickprojectかcl-projectを使うという流れになる。

これの違いについては以下にまとめられているので、割愛。

fu7mu4.hatenablog.com

以前少しいじってみて個人的にはquickprojectの方がシンプルな作りで理解しやすい感じはしたが、cl-projectは深町さんご謹製のパッケージという事で、テストとかまでする時に便利になってくるんだろうなと感じている。

自分のしょぼいレベルでは残念ながらそこまで要求されるレベルはまだ作ってない。ただ、survival common lispでは当然の如くcl-projectで例が書かれているので、cl-projectでやってみた。

make-projectするとhoge.asdというasd形式のファイルが出来るが、

中を除くとdefsystemなんてあまりよくわからない定義が出てくる。

そこでASDFのマニュアルについてきちんと目を通しておくべきだなと

思って読んでたが、

privet-kitty.github.ioここでlocal-projectsがいろいろ出てくる。そう、

~/.roswell/local-projects

~/quicklisp/local-projects

~/common-lisp/local-projects

と少なくとも3つlocal-projectsがある。困ったもんである。

つまらない事だが、なんでこんなに3つも必要なのだろうか?

あちこちデータが分散して、わかりづらい。

個人的には~/common-lisp/local-project以下にまとめてくれた方が

なんとなくわかりやすくて嬉しいんだが。

シンボリックリンクでも貼っておけって言われそう。

lispは何かとオレオレが出来やすいとは思うんだけど、

こんなちょっとした事なんだけど、まとまってた方が

扱い安くなるんじゃないかなと。

あー、読まなきゃいけないもんたくさんあるなぁ。

 

ここまでの過程

思えばEmacsを使い始めた時から自分はlispというものに出会っていた。2004年頃の事だ。当初、自分はviを使っていた。viも癖が酷いエディタで、入力しようとしてもまず、文字の入力すらままならないといういきなり初心者に強烈な先制パンチを食らわすエディタだった。しかし、通勤電車の中で一生懸命viのキーバインドを覚えた。そのままでも良かったのかもしれないが、何故かEmacsというエディタに今度は出会った。初めての浮気とも言うべきか。Emacsはviと違い、最初からテキストを入力出来る。しかし、キーバインドがviの洗練された操作から見ると異常なエディタで、そしてカスタマイズしなければただの箱みたいなこれまたクソをつけたくなるようなエディタだった。何と言う癖の強いエディタたちなんだろう。しかし、linux系では当時エディタと言えばこの2つくらいだった気がする。geditなんてもんが出てきたのはもっと後の話で、出た頃にはもうエディタはこの2つで十分って気になってもはや他に浮気しようという気はなくなってた。そして今に至っている(spacemacsもちょっと浮気したけどすぐやめました)。なんでEmacsにハマったのか?いろいろとカスタマイズ出来て便利だったからかもしれない。何度かviもvimに切り替え、vimもいろいろとカスタマイズしまくったし、emacsのvi-modeみたいなものも使ったが、結局今は基本emacs,ちょっとした編集vimという感じでvimのカスタマイズについてはほとんどしなくなった。そういうのやりたいんだったらemacsでいいじゃないかと。emacselispに比べるとvimのそれはなんとも貧弱で無理している感が強いというか。まぁ、そんなこんなでemacsをどんどんカスタマイズし、その過程でlispという言語に触れるようになっていった。といっても、括弧ばかりでふわふわとして何がなんだかわけわからん言語だなと思ってた。

ただ、2006年頃までにはポール・グレアム氏の”普通の奴らの上を行け”というウェブ上にあった記事を読んで結構lispって面白そうって感じていた。でも括弧だらけで取っ付きにくいとも思ってた。最初の自分はものすごくS式に拒絶反応を示していた。そこで、仕様書がp50だけというschemeはどうかと思った。当時ちょうどgaucheも盛り上がっていたところで、gauche本を買い、kahuaを設定したけど、なんかモノに出来たって感覚はなかった。既にclispとかcmuclをいじってはいたけど、結局実用的なプログラムを書きたいなら何でもありのcommonlispじゃないか?と思ったが、本を買っては積み、本を買っては積みの積読状態の繰り返し。自分が初めて、なんかわかった気になってきた本はポール・グレアム氏のANSI Common Lisp(スタンダードテキスト)だった。実は最初読んだ時、あまり良くわかってなかった。しばらく放置した後、改めて逃げずにじっくりと向き合うと、ようやく捉えたって感覚が生まれてきた。あまりこの本はオススメには出てないかもしれないが、自分のブレークスルーの最初はこの本だった。次が実践とか実用とかややこしいのが出てくるが、自分的には実践commonlispが良かった。lispでデータベースってこういうふうに作るんだってな感じで勉強になったし、実際自分がプログラムを書く時に結構参考にした。その次、land of lispがヒットした。当初なんかキモいキャラクターとゲームの話ってイメージで自分とはあまり関係なさそうな気がしたが、それでも買ってみると、ソースコード1行ずつ説明がついてて分かりやすかった。もしかするとこれを1番最初に読めばわかりやすいかもしれない。最近はon lispとかlet over lambdaあたりをちまちまと読んでいる。仕事はコンピューター関係とは全く別なので(現在無職)多分、普通の人の進みから言うと激遅のレベルだと思う。最近じゃ、pythonも触れないとダメかなとそっちも触ってみたり。でも、lisp、難しいけど、なんか好きなんだ。あれだけ身体、いや、脳みそが拒絶してたのに。今では時に”S式万歳!”と叫びたい瞬間も。いろんな人はS式に代わる形式を模索するけど、でもS式こそが、lispのパワーの源ではないかと自分は思っているから、なんかいろいろやりながらもずっとlispをいじっている。長くなってしまった。次回からはもっと今の学びについて書いていきたい。多分。