https://mitpress.mit.edu/sites/default/files/sicp/index.htmlBook 公式サイト
http://www.math.pku.edu.cn/teachers/qiuzy/books/sicp/errata.htm 中国語翻訳の正誤表
https://blog.csdn.net/weixin_33894640/article/details/89416538 mitがSICPを停止した理由
https://sicp.readthedocs.io/en/latest/ SICP問題解決セット
lispは関数型言語です
序文:
プログラミングは、APIをスタックすることだけでなく、プログラミング、アルゴリズム、およびデータ構造も含みます。
さまざまなデータ構造アルゴリズムの利点と欠点、これらは基本的なスキルです。基盤となる実装を理解すると、コードを最適化してパフォーマンスを向上させることができます。P10など
プログラムの構造は明確で読みやすいです。コードは美しいです。適切なアルゴリズムと適切なデータ構造を使用します。
第1章:プロセスの抽象化
変数を定義することは、変数名を値に関連付けることです。この関連付けの実現は何であり、それはある種のデータ構造を使用しますか?
プラス記号とマイナス記号は、グローバル環境の変数のような対応する命令シーケンスに関連付けられています。プラス記号は変数名です。これは、単純な操作の部分的な実装です。
defineは特別な形式です。シンプルな操作を組み合わせています。
変数にはスコープがありますが、これはどのように達成されますか?
lispのような対話型言語では、環境は非常に重要です。環境がないと、記号xは意味がありません。プラス記号とマイナス記号でさえ、意味を与えるために環境が必要です。
式評価の最も簡単な実装はありますか?
コンパイラとインタープリタの違いは?
複合プロセスを含むことができる結合された評価ルール。defineは、複合評価とは異なる特別な形式です。
評価モデルは、通常の注文評価とアプリケーションの注文評価です。
線形反復プロセスと再帰計算プロセスの違いP23
再帰的なプロセスは、再帰的な計算プロセスとは異なります。線形反復プロセスと再帰計算プロセスの両方が、それ自体を呼び出す再帰を使用します。線形反復プロセスと再帰計算プロセスは、コンピュータプロセスの進歩の方法です
forが通常使用されるようなループステートメントは反復的です。
線形反復プロセスと再帰計算プロセスの長所と短所はどうですか?
ツリーの再帰は非常に非効率的かもしれませんが、説明と理解は簡単です。多くの冗長な計算があります。再帰の深さは、インタープリターによって許可される最大の再帰の深さによって制限されます
ツリー型の再帰のアイデアはボトムアップです。
時間の複雑さは完了するためのほんの数ステップであり、プログラムが展開された後、スペースは太くて薄いと簡単に理解できます。
このアルゴリズムは、数学、再帰アルゴリズムを設計する機能、反復アルゴリズムにリンクされています。再帰を使用する場合と、反復を使用して時空の複雑さを計算する場合。
最初の章では、主に2つの抽象化について説明します。
抽象化の最初のステップ:数値演算をメソッドとして定義する;抽象化の2番目のステップ:パターンを見つけ、メソッドを数値演算として使用し、パターンを変更せず、値(メソッド)を変更する
プロセスの抽象化に関するすべて
第2章:データ抽象化の構築