[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 (生于1632年,卒于1704年10月28日),英国哲学家约翰·洛克是全面系统地阐述宪政民主基本思想的第一位作家。他的思想深刻地影响了美国的开国元勋及法国启蒙运动中的许多主要哲学家。[/color]
原文在 http://oregonstate.edu/instruct/phl302/texts/locke/locke1/Essay_contents.html
SICP是一本关于抽象的书,所谓抽象能力则是把一个概念从那些在具体场景中与它一起出现的其他概念中抽离出来,从而获得普遍性认识的能力。举例来说,当你考察“山的高度”和“山的硬度”时,你能否意识到你在考察“形状的高度”和“固体的硬度”。这是不是就是所谓的“看山不是山”呢?
正文开篇第一句,作者就用实例让我们看到了什么是抽象:[color=darkblue]“我们准备学习的是有关"计算过程"的知识。计算过程是存在于计算机里的一类抽象事物,在其演化进程中,这些过程会去操作一些被称为"数据"的抽象事物。人们创建出一些称为"程序"的规则模式,以指导这类过程的进行。”[/color]
对于有基础的程序员,这两句话的字面意思是显而易见的;对于没编程基础的学生,看了也暂时不知道作者想说什么。这两句话的价值在于,它向读者展示了什么叫做抽象以及作者的抽象能力。两句话,引出三个抽象概念,为全书定下了基调:本书要探讨的是“计算过程”。不妨代入角色想一想,如果我要写书,第一句话会写什么?
[color=darkblue]“这些特征之中最重要的就是:计算过程的Lisp描述(称为"过程")本身又可以作为Lisp的数据来表示和操作。这一事实的重要性在于,现存的许多威力强大的程序设计技术,[b]都依赖于填平在“被动的”数据和“主动地”过程之间的传统划分[/b]。正如我们将要看到的,Lisp可以将过程作为数据进行处理的灵活性,使它成为探索这些技术的最方便的现存语言之一。能将过程表示为数据的能力,也使Lisp成为编写那些必须将其他程序当作数据去操作的程序的最佳语言。”[/color]
“计算过程”中存在着“过程”与“数据”两个抽象概念。Lisp的威力源泉,在于它成功地提升了“数据”的抽象层次,令“过程”归入了“数据”之中,从而获得了巨大的灵活性与统一性。在这里读者第一次在概念上感受到了“抽象”的威力。但还没有看到具体的示例。
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 (生于1632年,卒于1704年10月28日),英国哲学家约翰·洛克是全面系统地阐述宪政民主基本思想的第一位作家。他的思想深刻地影响了美国的开国元勋及法国启蒙运动中的许多主要哲学家。[/color]
原文在 http://oregonstate.edu/instruct/phl302/texts/locke/locke1/Essay_contents.html
SICP是一本关于抽象的书,所谓抽象能力则是把一个概念从那些在具体场景中与它一起出现的其他概念中抽离出来,从而获得普遍性认识的能力。举例来说,当你考察“山的高度”和“山的硬度”时,你能否意识到你在考察“形状的高度”和“固体的硬度”。这是不是就是所谓的“看山不是山”呢?
正文开篇第一句,作者就用实例让我们看到了什么是抽象:[color=darkblue]“我们准备学习的是有关"计算过程"的知识。计算过程是存在于计算机里的一类抽象事物,在其演化进程中,这些过程会去操作一些被称为"数据"的抽象事物。人们创建出一些称为"程序"的规则模式,以指导这类过程的进行。”[/color]
对于有基础的程序员,这两句话的字面意思是显而易见的;对于没编程基础的学生,看了也暂时不知道作者想说什么。这两句话的价值在于,它向读者展示了什么叫做抽象以及作者的抽象能力。两句话,引出三个抽象概念,为全书定下了基调:本书要探讨的是“计算过程”。不妨代入角色想一想,如果我要写书,第一句话会写什么?
[color=darkblue]“这些特征之中最重要的就是:计算过程的Lisp描述(称为"过程")本身又可以作为Lisp的数据来表示和操作。这一事实的重要性在于,现存的许多威力强大的程序设计技术,[b]都依赖于填平在“被动的”数据和“主动地”过程之间的传统划分[/b]。正如我们将要看到的,Lisp可以将过程作为数据进行处理的灵活性,使它成为探索这些技术的最方便的现存语言之一。能将过程表示为数据的能力,也使Lisp成为编写那些必须将其他程序当作数据去操作的程序的最佳语言。”[/color]
“计算过程”中存在着“过程”与“数据”两个抽象概念。Lisp的威力源泉,在于它成功地提升了“数据”的抽象层次,令“过程”归入了“数据”之中,从而获得了巨大的灵活性与统一性。在这里读者第一次在概念上感受到了“抽象”的威力。但还没有看到具体的示例。