SICP讀書筆記(4) 目錄,第一章總述

2021-08-25 17:44:18 字數 1680 閱讀 5928

[b][size=medium]目錄[/size][/b]

sicp的前三章是考察任何乙個開發體系(例如程式語言、開發元件、設計模式、開發框架)所必須了解的最最基本的三個方面。接觸任何乙個新的開發體系時,應該按部就班地搞清楚其[color=darkblue][b]「構造過程抽象」[/b][/color]的方式、[color=darkblue][b]「構造資料抽象」[/b][/color]的方式、以及[color=darkblue][b]「模組化、物件和狀態」[/b][/color]的情況。同樣,設計任何一種開發體系時,都應該從這三個方面入手去展開思考。只要理清這三個方面,事實上已經「完備地」掌握了基本的開發體系。

當這一開發體系不滿足於僅僅作用於其預設的基本元素,而希望由使用者對其自身進行擴充套件時,則應考察其[color=darkblue][b]「元語言抽象」[/b][/color]能力(第四章)。

[b][size=medium]第一章 構造過程抽象[/size][/b]

[color=darkblue]心智的活動,也就是它將如何作用於各種簡單認識之上,主要包括以下三個方面:1)將若干簡單認識組合在一起,由此產生出各種複雜的認識。2)將兩個認識放在一起對照,它們可能是簡單認識也可以是複雜認識,並且在對照過程中不試圖將它們合而為一。由此得到關於它們之間的關係的認識。3)[b]將這些認識從那些在實際中和它們同在的所有其他認識中分離出來,這就是抽象[/b],所有具有[b]普遍性的認識[/b]都是這樣得到的。 —— 「有關人類理解的隨筆」 by john locke (生於2023年,卒於2023年10月28日),英國哲學家約翰·洛克是全面系統地闡述憲政民主基本思想的第一位作家。他的思想深刻地影響了美國的開國元勳及法國啟蒙運動中的許多主要哲學家。[/color]

原文在

sicp是一本關於抽象的書,所謂抽象能力則是把乙個概念從那些在具體場景中與它一起出現的其他概念中抽離出來,從而獲得普遍性認識的能力。舉例來說,當你考察「山的高度」和「山的硬度」時,你能否意識到你在考察「形狀的高度」和「固體的硬度」。這是不是就是所謂的「看山不是山」呢?

正文開篇第一句,作者就用例項讓我們看到了什麼是抽象:[color=darkblue]「我們準備學習的是有關"計算過程"的知識。計算過程是存在於計算機裡的一類抽象事物,在其演化程序中,這些過程會去操作一些被稱為"資料"的抽象事物。人們建立出一些稱為"程式"的規則模式,以指導這類過程的進行。」[/color]

對於有基礎的程式設計師,這兩句話的字面意思是顯而易見的;對於沒程式設計基礎的學生,看了也暫時不知道作者想說什麼。這兩句話的價值在於,它向讀者展示了什麼叫做抽象以及作者的抽象能力。兩句話,引出三個抽象概念,為全書定下了基調:本書要**的是「計算過程」。不妨代入角色想一想,如果我要寫書,第一句話會寫什麼?

[color=darkblue]「這些特徵之中最重要的就是:計算過程的lisp描述(稱為"過程")本身又可以作為lisp的資料來表示和操作。這一事實的重要性在於,現存的許多威力強大的程式設計技術,[b]都依賴於填平在「被動的」資料和「主動地」過程之間的傳統劃分[/b]。正如我們將要看到的,lisp可以將過程作為資料進行處理的靈活性,使它成為探索這些技術的最方便的現存語言之一。能將過程表示為資料的能力,也使lisp成為編寫那些必須將其他程式當作資料去操作的程式的最佳語言。」[/color]

「計算過程」中存在著「過程」與「資料」兩個抽象概念。lisp的威力源泉,在於它成功地提公升了「資料」的抽象層次,令「過程」歸入了「資料」之中,從而獲得了巨大的靈活性與統一性。在這裡讀者第一次在概念上感受到了「抽象」的威力。但還沒有看到具體的示例。

第一章讀書筆記

本章內容主要講的是android系統移植和驅動開發概述,通過本章的學習知道了學習linux驅動程式設計一定要了解linux驅動只與linux核心有關,與客戶的使用的linux系統無關。也就是說,不管是那個linux系統,只要使用了同樣的linux核心,驅動就可以通過。唯一可以判斷的linux核心是否...

第一章讀書筆記

android的系統架構分為4層 第一層 linux核心。第二層 c c 庫。第三層 android。第四層 應用程式。android移植可兩個部分 應用移植和系統移植。目前linux核心主要維護3個版本 linux2.4,linux2.6和linux3.x,大多數linux系統都使用了這3個版本的...

第一章讀書筆記

若給android增加新的驅動,則hal也要做出相應修改。不同的linux版本的驅動程式並無法通用,那麼通過判斷linux核心版本號是否相同,可以檢驗驅動是否可以通用。目前最廣泛的核心版本應該是linux2.6。電腦或者手機等不同硬體裝置越來越豐富,則需要更多的linux裝置驅動來完成硬體裝置間的互...