ASAHIネット(
[URL] )のjouwa/salonから。
---
著者の笹川さんから、献本していただきました。
ありがとうございます。
笹川さんの処女作とのことですが、なんと、Lisp処理系を作りながら、Lispを解説する本です。\(^O^)/
こういうLisper, Lispファンがいるのは、心強いし、うれしい限り。
処女作、おめでとうごいます。\(^O^)/
[URL]
やさしいLispの作り方: C言語で作るミニミニLisp処理系 [Kindle版]
笹川 賢一 (著)
カスタマーレビューを書きませんか?
Kindle 購入価格: ¥ 500
プライム会員: ¥ 0 (Kindle 端末上のストアから、無料でお読みいただけます)
プライム会員は、無料なんですね。
さっそく拝読しました。
テンポのよい会話調です。ポイント毎に、ちゃんと図やソースを示して解説があり、とても読みやすくわかりやすいと思いました。
Lispの仕様としては、非常に小さな仕様のLispです。その分、はっきり何をどうやっているのか、はっきりわかります。
C言語といっても、ポインタは使わず、配列でやっていて、わかりやすくなっています。
小さなLispだけど、GC(ガベージコレクション、ごみ集め)は、ちゃんと実装してあります。GCって、どうやってるの?と思っている人は、読むと理解できるでしょう。
Lisper(Lisp屋)、Lispファンは、大体、自分でLispの処理系を実装した経験があるんです。私の周りの人間は、そうです。
LispをJava, C#, D, Goのような、CGがある言語で実装するならいざ知らず、普通は、自分でCGも実装します。
それで、昔から、ぼくが言っているのは、「Lisperのパラドックス」あるいは「Lispのパラドックス」。
50年ほど前、世界初(きっと)のGCを備えたプログラミング言語Lispによって、プログラマはメモリ管理から解放され、楽にプログラムを書けるようになったけれど、Lisperほど、メモリ管理に詳しい人たちはいなかったし、いまだにその傾向は強いと思います。
その点、最初からGCを備えているPerl, Ruby, Python, PHPなどスクリプト言語やJava, C#, D, Goといった言語でプログラミングを始めた人は、メモリ管理を知らない人が多いし、これらのGCを備えた言語でも、CやC++と違った意味で、メモリリークが起きることがあることも知らないから、メモリ消費が多いプログラムを書いてしまって、それに気づいてないことがあります。
もっというと、GCのないCやC++で、メモリ管理ができないのにプログラムしている奴、C++にはデストラクタがあるのに、ちゃんとメモリ管理ができない奴、メモリの所有権も知らず、意識もせず、C++のコンテナを使っている奴、スマートポインタを使えない奴、「お前ら、みんな死ね!」の世界がありますね。
CG本の世界は最後に。
「やさしいLispの作り方」に戻ると。
evalのところで、特殊形式という言葉がいきなり出てきて、説明なしなのは、 ちょっと戸惑うかもしれませんね。evalの補講で、FSUBRに特殊形式の説明と思われるものが出てはきますけど。
気づいた誤植。
evalのところ。
誤
ほかにも(setq a 1)なんてももそうですね。
正
ほかにも(setq a 1)なんてものもそうですね。
GCのマークのところ。
誤
途中で(g y)とい関数の計算
正
途中で(g y)という関数の計算
著者の笹川さんサイト。
[URL]
好きい夢 Joyful Programming
好きい夢は、Schemeの当て字でしょう。Schemeは、Common Lispと並ぶ、Lispの2大方言の1つ。どちらも、公式に規格化されています。
ぼくは、Schemeのことも、たくさん書いているので、上の検索窓に「Scheme」と入れて検索してください。
自分で検索してみたら、ああああああああああああ、なんということ。
[URL]
セコメントをする