00 環境配置

mit-scheme可以在DrRacket下面實現貌似已經很久了吧。好像也不流行再安裝什麼mit-scheme了。雖然貌似可以配合emacs用其實挺加分的。

不過還是新一點的吧,所以,就用racket。

下載的話,本來應該是brew install racket --cask就可以的。不過貌似網絡原因,這個很慢。racket網站上試一試?貌似官網的鏡像都是國外的。

這不是還有萬能的清華源麼,嘿嘿,果然有racket的安裝包的鏡像。下載安裝就行。

然後啓動,菜單欄里找Package Manager,package source那裏找sicp安裝就可以。

然後racket上面那個框里#lang sicp,然後運行。

下面的命令行里應該就有sicp,那應該就可以了。

01 序

本書中要討論的各種問題都牽涉到三類需要關注的對象:人的大腦、計算機程序的集合以及計算機本身。每一個計算機程序都是現實中的或者精神中的某個過程的一個模型,通過人的頭腦孵化出來。……計算機程序設計領域之令人興奮的源泉,就在於它所引起連綿不絕的發現,在我們的頭腦之中,在由程序所表達的計算機制之中,以及由此所導致的認識爆炸之中。如果說藝術解釋了我們的夢想,那麼計算機就是以程序的名義執行着它們。

就其本身的所有能力而言,計算機是一位一絲不苟的工匠:它的程序必須正確,我們希望說的所有東西,都必須表述得準確到每一個細節。

第1章 構造過程抽象

計算過程的Lisp描述(稱爲過程)本身又可以作爲Lisp的數據來表示和操作。這一事實的重要性在於,現存的許多威力強大的程序設計技術,都依賴於填平在“被動的”數據和“主動的”過程之間的傳統劃分。Lisp可以將過程作爲數據進行處理的靈活性,使它成爲探索這些技術的最方便的現存語言之一。

程序設計的基本元素

每一種強有力的語言都提供三種機制:

  • 基本表達形式
  • 組合的方法
  • 抽象的方法

任何強有力的程序設計語言都必須能表述基本的數據和基本的過程,還需要提供對過程和數據進行組合和抽象的方法。