Scheme手習いを読み終わったのでScheme修行を読みます。
本文の前に
- 訳者前書き
- 序文
- はじめに
があるのでまずは気になったところのメモと感想など書きます。
訳者前書き
メモ
- Scheme手習いと同じ著者による続編
- 2冊合わせてSchemeの入門書として完結
- なのでScheme手習いの続き、11章から始まっている
- Scheme手習いと同じく質問と答えのペア
- 前作は「再帰的」な考え方、今回は継続と代入
- 他の言語にも継続に似た機能はある
- Lispの例外(catch throw)やCのsetjump, longjump
- 大域的な脱出手段なので後から使えない(のかな?)
- Schemeの継続はいつでも使用することは可能
- Scheme手習い・Scheme修行ではSchemeの制御構造については継続をのぞいては触れられていない
- 末尾再帰最適化の話とか
- Schemeは静的束縛なのでそれが実現出来るらしい
- 動的な束縛をする言語では実現出来ない
- 似たような言語だからといってLispで同じことをやるとスタックが溢れる
- 末尾再帰最適化の話とか
- letccを実現するためにletccを使っているので本書で作成しているインタプリタはSchemeでしか実現出来ない
- 継続渡しスタイルについて調べてみるのも面白い
感想
スタックの話でもあったけどSchemeはLispの方言とは言うがLispとは別物のよう。
Lispによって変数のスコープも違えば言語で規定されてる機能も全然違いそう。
継続渡しスタイルについては後で継続渡しスタイル - karetta.jpを読もうと思う。
ということはSchemeじゃないLispにはSchemeにない機能もあるに違いないので読み終わったら取り組む。
実はPractical CommonLisp読んでる途中でやめちゃいましたので。
序文
メモ
- 「もし誰かに魚をあげたら、一日食べることができる。もし誰かに釣りを教えたら、一生食べることができる。」
- Lispは元々「LISt Processor」、リスト処理
- Lispはリストだけでなく計算を行う関数を持っている。リストはLispの心臓、関数は魂。
- 生きるためには食べ物以外のものも必要。釣りを習いましょう!
感想
リストが心臓で関数が魂ってなんかアツい!
確かにLispにはどっちも欠かせない気がする。
リストが心臓で関数が魂なら、マクロは一体なんだろう?
序文の最初に出て来る言葉は深い。
ググってみたけど中国のことわざ?元ネタが分からないです orz
はじめに
メモ
- 「この本の目的は、読者に計算の性質について考えることを教えることにある。」
- プログラミング言語は、計算の性質を伝える最も良い方法、数学と違い直接体験出来る
- プログラミングの実用的な世界への入門書ではないが、計算の性質を理解する出発点
- ガイドライン
- 急いで読んではだめ。5回未満で読み切ろうとしないこと。(ちなみにScheme手習いには2回未満で読み切ろうとしないこと、と書いてる)
- 飛ばして後ろから読んではだめ。少しずつ難しくなっていくので完全に理解してから進む。
- 「読みながら例を試してほしい」
- 「この本では形式的な定義はしない。読者が自分の定義を形式化し、覚えて理解するほうがよいと信じているからである」
- しかし戒律はその先を読む前に知って理解しておくこと。
- プログラミングのこつはデータおよび処理のパターンを認識すること。
感想
最後に「次のページで読者を待っている挑戦を楽しんでほしい。」と書いていた。なので、Scheme修行も楽しみながら読むぞ!
ガイドラインに書かれていたように、本にちりばめられたヒントから自分の定義を形式化し、覚え、理解したい。
ちりばめられたヒントを拾うためにも5回ぐらい読まないと気づかない点があるんだと思う。
計算の性質について考えれば、一生プログラマで食べていくこと、出来るかな?
0 件のコメント:
コメントを投稿