Sio’s Gadget Blog はてな支店 このページをアンテナに追加 RSSフィード

2008-02-14 SICP を読むときの参考書と講師用マニュアルのメモ

昨日は病院へ行きました

昨日は通院と本店の方の更新などでこちらが更新できなかった。早速毎日更新するぞの誓いが… orz

SICPを読むときの参考書

家にあった Scheme 関係の書籍をリスト化してみた。

プログラミング言語SCHEME

プログラミング言語SCHEME

The Little Schemer

The Little Schemer

The Seasoned Schemer

The Seasoned Schemer

計算論 計算可能性とラムダ計算 (コンピュータサイエンス大学講座)

計算論 計算可能性とラムダ計算 (コンピュータサイエンス大学講座)

Common LISP―Common LISP言語仕様書

Common LISP―Common LISP言語仕様書

Essentials of Programming Languages, 2nd Edition

Essentials of Programming Languages, 2nd Edition

探せばまだありそうだけど、全部"積ん読"状態なので全く自慢できない。でも一応良書と呼ばれるものを買っているらしい。ちゃんと元を取らないとね。

Instructor's Manual to accompany "Structure and Interpretation of Computer Programs"で気になった所の覚書き

1.1 について

  • Scheme数学的なシステムであるかのように考える(ex. 代数
  • 次のような説明をしないように注意!
    • ex. (square (+ x 1)) を評価するには、x をインクリメント(+1)してから square を呼ぶ」
      • 式は常に左側から評価される
  • Basic, Pascal, C のような言語でプログラムしたことがある人への注意
    • 文法的な規則を Scheme に押し付けないように注意する
      • ex. 次のようなプロシージャを書こうとする
(define (sum-of-squares x y)
  (square x)
  (square y)
  (+ x y))
  • Scheme を式のように見られないとき、語彙と文法の問題について混乱しがちである
    • ex. 演算子オペランドの間のスペースを省略する
    • ex. 余分な括弧 () をまき散らす (sprinkle)
      • Scheme は(Basic等の言語とは)違うので、学んだことを覚えるように教える
  • 先入観はなかなかとれないので、これらを常に注意する

1.1.1 について

  • Scheme での原始的な式(primitive expression) は定数 (constant) または可変の名前である。(ここでの primitive の用法は Scheme標準 ではないけれど)
  • 結合 (combination) は常にプロシージャ・アプリケーション (procedure application) を示している
    • 括弧 () はその意味付けをかえない限り、省略したり挿入したりする事はできない
    • 括弧でグルーピングするような言語を使ったことがある学習者はこの点で混乱することがある
  • 用語について
    • 文法的な要素(結合、式、演算子、オペランド)と言語中の操作(手続き(procedure)と与えられた引数(arguments))を区別するように注意
    • 定義 (definition) を式として参照しないように注意する
      • Scheme標準 において、定義は違ったカテゴリとして扱われる
        • 定義が出てくる場所の制限のため(1.1.3 の説明のように define 以外の所では定義できない)
  • 符号付き数字
    • 学習者は符号付き数字の扱いで時々混乱する
    • 加算と減算の演算子とは別
    • ex. 符号と数字の間にはスペースは入らない。3 は +3 と同じ。
    +3
    3
 
    -3
    -3

    (+ -3 -5)
    -8

今日はここまで。