2011年8月22日月曜日

Scheme修行の11章を読む前に



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 件のコメント:

コメントを投稿