『コンピュータプログラムの構成と解釈(SICP)読書ノート』

2509 ワード

「effective java」を読み終わったのか、それとも感じが悪くなったのか、恩沢大神はこの「sicp」をお勧めして、気持ちを見てメモを取りましょう.
The acts of the mind, wherein it exerts its power over simple ideas, are chiefly these three: 1. Combining several simple ideas into one compound one, and thus all complex ideas are made. 2. The second is bringing two ideas, whether simple or complex, together, and setting them by one another so as to take a view of them at once, without uniting them into one, by which it gets all its ideas of relations. 3. The third is separating them from all other ideas that accompany them in their real existence: this is called abstraction, and thus all its general ideas are made. John Locke, An Essay Concerning Human Understanding(1690)
20150515
高性能mysqlを見終わってsicpを読み続けます~今日の月曜日、今週末から.
数学は「何であるか」を正確に処理するための枠組みを提供し、計算は「どのようにするか」を正確に処理する概念に枠組みを提供した.
PS:最初は哲学の話をしていたような気がします.

第一章構造過程の抽象


正規シーケンスの値を求める:完全に展開してから帰約する求職モデルの適用シーケンスの値を求める:先に値を求めてから適用して、解釈器の中で実際に使用するのはこれで、一部の原因は表現式に対する繰り返しの値を避けることができるためである.
私を例にとると、GTDのツールが必要ですが、EmacsのOrg-modeは同類のソフトウェアの中で一番いいです(一つもありません).Org-modeで時間を大幅に節約した後、私はEmacsに対して家と烏を愛して、興味は100倍高まった.反対の例は多くの人がLisp教程をかじって彼らのEmacsの旅を始めて、堅持した人はごくわずかです.spacemacsを降りると確かに使いにくい感じがしますが、多くのショートカットキーは原生とは違います.

20170529


第1章を見終わって、感じは最も重要なのはやはりアルゴリズムで、何のニュートンの反復、平均的な減衰、もしあなたが数学が良いならば、あなたは低い計算の複雑度のコードを書くことができます.emcasにはまだ慣れていないので、コードを書いていないので、単純に見ると(これはよくない).時間複雑度O(n)とは、計算ステップの長さ、計算ステップの短さ、時間複雑度の低さを意味することが分かったので、次は悟った.空間の複雑さとは、各ステップの中で、最も長いステップの長さを指す.
オブジェクト向けプログラミングでは、クラスに多くの状態があり、時間とともに変化するという概念が重要です.これらの状態の変化は,時間からなる関数と見なすことができる.このことから,なぜ変化ごとに1つのストリームに入れないのかを考えることができる.そしてこのストリームを処理します.次の文章は対流プログラミングが上手だ.
http://www.binwang.me/2012-03-14-sicp35.html

20170603


lispのstreamはjavaのstreamと同じことですか、読めません.実は私は何が惰性に対して値を求めて、関数式のプログラミングも分からないで、阮一峰の<>書くのは悪くありません.
http://www.ruanyifeng.com/blog/2012/04/functional_programming.html http://blog.csdn.net/jiajiayouba/article/details/49983325例を見てみましょう.ここではxを求めるn次方程式の例を挙げて、伝統的なコマンドプログラミングで書きます.
def expr(x,n): 
    result = 1 
    for i in range(1,n+1): 
        result = result * x 
    return result
if __name__ == '__main__': 
    print(expr(2,5))

ここでは、result変数に値を割り当てていますが、関数プログラミングでの変数は不変であることを知っています.resultの状態を維持するためには、resultを関数パラメータとして渡して状態を維持する必要があります.
def expr(num,n): 
    if n==0: 
        return 1 
    return num*expr(num,n-1)

if __name__ == '__main__': 
    print(expr(2,5))

ああ、これは再帰ではないか.