天天看點

SICP

SICP: Structure and Interpretation of Computer Programs 《計算機程式的構造和解釋》

 且看這精彩的序:

 “

     最小的實體開關元件在量子力學裡模組化,而量子力學又由一組微分方程描述,微分方程的細節行為可以由數值去近似,這種數值又由計算機程式描述,計算機程式的組成……

 ….

     很難找到這樣的二種語言,它們能如此清晰地代表着圍繞這二種語言而聚集起來的兩種差異巨大的文化,。Pascal是為了建造金字塔—壯麗輝煌,令人震撼,是由各就其位的承重巨石築起的靜态結構。而Lisp 則是為了構造有機體---- 同樣的壯麗輝煌并令人震撼,由各就其位但卻永不靜止的無數簡單的有機體片段構成的動态結構。在二種語言裡都采用了同樣的組織原則 ,除了其中特 别重要的一點不同之外:托付給Lisp 程式員個人可用的自由支配權,要遠遠超過在Pascal社團裡可找到的東西,Lisp程式大大擡高了函數庫的地位,使其可用性超越了催生它們的那些具體應用。作為Lisp的内在資料結構,表對于這種可用性的提升起着最重要的作用,表的簡單結構和自然可用性反應到函數裡,就使它們具有了一種奇異的普适性。而在Pascal裡,資料結構的過度聲明導緻函數的專用性,阻礙并懲罰臨時性的合作。采用100個函數在一種資料結構上的操作,遠遠優于用10個函數在10個資料結構上的操作,作為這些情況的必然後果,金字塔矗立在那裡千年不變,而有機體則必須演化,否則就會死亡。

正如由其目标可以預見到的,人工智能的研究産生出許多重要的程式設計問題。在其他程式設計文化中,問題的洪水孵化出一種又一種新的語言。确實,在任何非常大的程式設計工作中,一條有用的組織原則就是通過發明新語言,去控制和隔離作業子產品之間的資訊流動。這些語言變的越來越不基本,逐漸逼近系統的邊界,逼近我們作為人最經常與之互動的地方,作為這一情況的結果,在這種系統裡包含着大量重複的複雜的語言處理功能。Lisp有着如此簡單的文法和語義,程式的文法分析可以看做一種很簡單的工作,這樣,文法分析工作對于Lisp程式幾乎就沒有價值,語言處理器的構造對于大型Lisp系統的成長和變化不會成為阻礙,最後,正是這種文法和語義的極端簡單性,産生出了所有Lisp程式員的負擔和自由,任何規模的Lisp程式,除了那種廖廖幾行的程式外,都飽含着考慮周到的各種功能。發明并調整,調整恰當後再去發明!讓我們舉起杯,祝福那些将他們的思想鑲嵌在重重括号之間的Lisp程式員。”

本文轉自   wenyan  51CTO部落格,原文連結:http://blog.51cto.com/wenyan/10147

繼續閱讀