2009-07-28
■ [book][lisp] Let Over Lambdaを読んでCommon Lispに興味を持った
途中まで読んだ。
4434133632
Lispマクロを使っていろいろ遊ぶぜ!という本。内容は濃いけど、章(テーマ)が7つあり、一つ一つの節は短めなので少しずつ読んでいくことができる。
Lisp方言には「Common Lisp」と「Scheme」(あとArcとかClojureとか)があるわけだけど、 本書で「Lisp」と書いてあればCommon Lispの方を指す。だからLispコンパイラの存在は当然だし、リーダーマクロもある。 第3のアンクオート「,.」とか全く知らなかったぜ。
んでまあ、マクロと関係ないんだけど、Schemeはシンプルさを取るために、Lispが持っていたいろいろなものを切り捨ててるんだなぁというのを今さら。 loopマクロとか、「Common Lisp使いの書くLispプログラム」を見てるとSchemeとは結構雰囲気が違って、昔のLispというか、伝統というか、「濃い」というか、 「"Lisp"らしい」雰囲気を感じた。
R6RSには構造体とかライブラリとか色んなものが入ったけど、CLはずっと前からそれを持っている。良いデザインをするためには時間が必要で(と最近思うようになった)、 成熟しているというのはそれだけで魅力的に見える。
Common Lispも面白そうだ。
おまけ
一応書いておくと全くもって初心者向けの本ではないので、Lisp知らないよっていう人は「On Lisp」…は読んでなくても大丈夫だけど「ANSI Common Lisp」か「実践Common Lisp」は 読んでおかないと意味不明かも。
4274066371
ボトムアップ(「リストとは何か」から始まるような)が好きな人は「ANSI」、手を動かしながら学びたい人は「実践」がいいよ。
4894714337
4274067211
■ [git] Gitのコマンド名はBitKeeper由来なのか?
LinuxカーネルはBitKeeperというVCSを長らく使っていたが、その有料化と共にGitに移行した。 という歴史を鑑みれば、Gitのコマンド名がBitKeeperの影響を受けていてもおかしくはない (そして、LinusのSubversion嫌いを考えればSubversionの影響が全くなくてもおかしくはない) のだけど、実際はどうなんでしょう。
BitKeeperのサイトのチートシートを見てみる。
リポジトリの複製が(svnのように)checkoutではなく、Gitと同じcloneになっている。 git cloneはここから取られた可能性は大きそうだ。
#ちなみにBitKeeperのコマンド名は「bk」。バッドノウハウにしか見えないw
svn/gitで意味が異なるコマンドというとあとはaddが思いつくのだけど、なんとbk addというコマンドは存在しないようだ。 ファイルの追加はbk newで行う。じゃあgit addじゃなく、git stageで良かったんじゃないかなぁ…。