昨天花了点时间读了序言和作者的两版前言,感觉只能看懂初版的前言,篇幅不长,几乎字字珠玑,摘录如下:
- a computer language is not just a way of getting a computer to perform operations but rather that it is a novel formal medium for expressing ideas about methodology. Thus, programs must be written for people to read, and only incidentally for machines to execute.
- the essential material to be addressed by a subject at this level is not the syntax of particular programming-language constructs, nor clever algorithms for computing particular functions efficiently, nor even the mathematical analysis of algorithms and the foundations of computing, but rather the techniques used to control the intellectual complexity of large software systems.
- students should have command of the major techniques for controlling complexity in a large system.
- ``computer science'' is not a science and that its significance has little to do with computers. The computer revolution is a revolution in the way we think and in the way we express what we think. The essence of this change is the emergence of what might best be called procedural epistemology -- the study of the structure of knowledge from an imperative point of view, as opposed to the more declarative point of view taken by classical mathematical subjects. Mathematics provides a framework for dealing precisely with notions of ``what is.'' Computation provides a framework for dealing precisely with notions of ``how to.''
所谓控制复杂度的主要技术包括:
- We control complexity by building abstractions that hide details when appropriate.
- We control complexity by establishing conventional interfaces that enable us to construct systems by combining standard, well-understood pieces in a ``mix and match'' way.
- We control complexity by establishing new languages for describing a design, each of which emphasizes particular aspects of the design and deemphasizes others.
几乎与目录中各章对应起来:
- 过程抽象
- 数据抽象、
- 模块、对象及状态
- 元语言(metalinguistic ?)抽象
- 用寄存器机器计算
该门课程的视频在这里。
0 comments:
Post a Comment