出版社: The MIT Press
出版年: 2004-2-20
页数: 930
定价: USD 75.00
装帧: Hardcover
ISBN: 9780262220699
内容简介 · · · · · ·
豆瓣成员常用的标签(共53个) · · · · · ·
喜欢读"Concepts, Techniques, and Models of Computer Programming"的人也喜欢 · · · · · ·
按有用程度 按页码先后 最新笔记
-
第9页
huangz (El Psy Congroo)
Correctness To prove correctness in general, we have to reason about the program. This means three things: We need a mathematical model of the operations of the programming language, defining what they should do. This model is called the language’s semantics. We need to define what we would like the program to do. Usually, this is a mathematical definition of the inputs that the program ... (更多)
正确性一般为了验证正确性,我们需要对程序进行推理。这意味着以下三件事:我们需要一个定义了编程语言中的操作该做什么的数学模型。这称为语言的语义。我们需要定义自己想要程序做什么。通常来说,这是对程序所需的输入和计算所得的输出的一个数学定义。这称为程序的规格。我们需要使用数学技术(技巧,方式),通过语义对程序进行推理,证明程序满足了规格。 (收起)Correctness To prove correctness in general, we have to reason about the program. This means three things: We need a mathematical model of the operations of the programming language, defining what they should do. This model is called the language’s semantics. We need to define what we would like the program to do. Usually, this is a mathematical definition of the inputs that the program needs and the output that it calculates. This is called the program’s specification. We use mathematical techniques to reason about the program, using the semantics. We would like to demonstrate that the program satisfies the specification.
2011-05-24 04:48:59 1人收藏 回应
-
第8页
huangz (El Psy Congroo)
Top-down software development Let us summarize the methodology we used to write Pascal: The first step is to understand how to do the calculation by hand. The second step is to write a main function to solve the problem, assuming that some auxiliary functions are known. The third step is to complete the solution by writing the auxiliary functions. The methodology of first writing the main... (更多)
自上而下的软件开发让我们总结一下编写Pascal函数时所使用的方法学:第一步是要明白如何去手工计算结果。第二步是编写解决问题的主要函数,假设其他所需的辅助函数已经存在。第三步是通过编写辅助函数,完成解答。先编写主要函数,再填其他坑的方法学,称为自上而下的软件开发。这是最广为人知的程序设计方法之一,但这还只是我们将看到的故事的其中一小部分。 (收起)Top-down software development Let us summarize the methodology we used to write Pascal: The first step is to understand how to do the calculation by hand. The second step is to write a main function to solve the problem, assuming that some auxiliary functions are known. The third step is to complete the solution by writing the auxiliary functions. The methodology of first writing the main function and filling in the blanks afterward is known as top-down software development. It is one of the best known approaches to program design, but it gives only part of the story as we shall see.
2011-05-23 22:20:30 1人收藏 回应
-
Preface
读过了前言。前言给出了“计算模型”的定义。 安装了mozart。我的系统是64-bit,没有对应的安装包。解决方法是从 http://www.mozart-oz.org/download/mozart-ftp/store/1.4.0-2008-07-02-tar/mozart-1.4.0.20080704-linux-i486.tar.gz 下载二进制的包,解压,然后把platform目录下的liunx-i486重名为unknown-unknown。这样就可以运行bin/oz来启动基于emacs的oz开发环境了。 (更多)读过了前言。前言给出了“计算模型”的定义。安装了mozart。我的系统是64-bit,没有对应的安装包。解决方法是从 http://www.mozart-oz.org/download/mozart-ftp/store/1.4.0-2008-07-02-tar/mozart-1.4.0.20080704-linux-i486.tar.gz 下载二进制的包,解压,然后把platform目录下的liunx-i486重名为unknown-unknown。这样就可以运行bin/oz来启动基于emacs的oz开发环境了。 (收起)2012-02-12 08:23:46 回应
-
第1页
huangz (El Psy Congroo)
书中的前言部分 Programming as defined above has two essential parts: a technology and its scientific foundation. The technology consists of tools, practical techniques, and standards, allowing us to do programming. The science consists of a broad and deep theory with predictive power, allowing us to understand programming. Ideally, the science should explain the technology in a way that is as... (更多)书中的前言部分
上面定义的编程有两个主要部分:技术及其科学基础。技术包括工具、实用技术和标准,让我们得以进行编程。科学包括具有前瞻性力量、广泛而深入的理论,让我们得以理解编程。实际上,科学应该尽可能直接而有效地阐明技术。如果这两者任意一个被落下,那我们进行的也就不再是编程了。离开技术,我们进行的是纯粹的数学。离开科学,我们进行的是手工艺——也就是说,我们放弃了深入理解。因此,正确教授编程也就意味着同时教授技术(通用工具)和科学(基础概念)。让学生在实践之前,了解工具。让学生在进行进一步的开发之前,了解概念。Programming as defined above has two essential parts: a technology and its scientific foundation. The technology consists of tools, practical techniques, and standards, allowing us to do programming. The science consists of a broad and deep theory with predictive power, allowing us to understand programming. Ideally, the science should explain the technology in a way that is as direct and useful as possible. If either part is left out, we are no longer doing programming. Without the technology, we are doing pure mathematics. Without the science, we are doing a craft, i.e., we lack deep understanding. Teaching programming correctly therefore means teaching both the technology (current tools) and the science (fundamental concepts). Knowing the tools prepares the student for the present. Knowing the concepts prepares the student for future developments.
程序员最艰难、同时也最有益的工作,不是编写代码,而是设计抽象。 (收起)The most difficult work of programmers, and also the most rewarding, is not writing programs but rather designing abstractions.
2011-05-23 16:47:13 回应
-
第8页
huangz (El Psy Congroo)
Top-down software development Let us summarize the methodology we used to write Pascal: The first step is to understand how to do the calculation by hand. The second step is to write a main function to solve the problem, assuming that some auxiliary functions are known. The third step is to complete the solution by writing the auxiliary functions. The methodology of first writing the main... (更多)
自上而下的软件开发让我们总结一下编写Pascal函数时所使用的方法学:第一步是要明白如何去手工计算结果。第二步是编写解决问题的主要函数,假设其他所需的辅助函数已经存在。第三步是通过编写辅助函数,完成解答。先编写主要函数,再填其他坑的方法学,称为自上而下的软件开发。这是最广为人知的程序设计方法之一,但这还只是我们将看到的故事的其中一小部分。 (收起)Top-down software development Let us summarize the methodology we used to write Pascal: The first step is to understand how to do the calculation by hand. The second step is to write a main function to solve the problem, assuming that some auxiliary functions are known. The third step is to complete the solution by writing the auxiliary functions. The methodology of first writing the main function and filling in the blanks afterward is known as top-down software development. It is one of the best known approaches to program design, but it gives only part of the story as we shall see.
2011-05-23 22:20:30 1人收藏 回应
-
第9页
huangz (El Psy Congroo)
Correctness To prove correctness in general, we have to reason about the program. This means three things: We need a mathematical model of the operations of the programming language, defining what they should do. This model is called the language’s semantics. We need to define what we would like the program to do. Usually, this is a mathematical definition of the inputs that the program ... (更多)
正确性一般为了验证正确性,我们需要对程序进行推理。这意味着以下三件事:我们需要一个定义了编程语言中的操作该做什么的数学模型。这称为语言的语义。我们需要定义自己想要程序做什么。通常来说,这是对程序所需的输入和计算所得的输出的一个数学定义。这称为程序的规格。我们需要使用数学技术(技巧,方式),通过语义对程序进行推理,证明程序满足了规格。 (收起)Correctness To prove correctness in general, we have to reason about the program. This means three things: We need a mathematical model of the operations of the programming language, defining what they should do. This model is called the language’s semantics. We need to define what we would like the program to do. Usually, this is a mathematical definition of the inputs that the program needs and the output that it calculates. This is called the program’s specification. We use mathematical techniques to reason about the program, using the semantics. We would like to demonstrate that the program satisfies the specification.
2011-05-24 04:48:59 1人收藏 回应
-
Preface
读过了前言。前言给出了“计算模型”的定义。 安装了mozart。我的系统是64-bit,没有对应的安装包。解决方法是从 http://www.mozart-oz.org/download/mozart-ftp/store/1.4.0-2008-07-02-tar/mozart-1.4.0.20080704-linux-i486.tar.gz 下载二进制的包,解压,然后把platform目录下的liunx-i486重名为unknown-unknown。这样就可以运行bin/oz来启动基于emacs的oz开发环境了。 (更多)读过了前言。前言给出了“计算模型”的定义。安装了mozart。我的系统是64-bit,没有对应的安装包。解决方法是从 http://www.mozart-oz.org/download/mozart-ftp/store/1.4.0-2008-07-02-tar/mozart-1.4.0.20080704-linux-i486.tar.gz 下载二进制的包,解压,然后把platform目录下的liunx-i486重名为unknown-unknown。这样就可以运行bin/oz来启动基于emacs的oz开发环境了。 (收起)2012-02-12 08:23:46 回应
-
第179页
阿声 (你好小朋友!来叔叔抱抱!)
difference list有点像用两个指针表示list,一个指向队头,一个指向队尾 不过list是嵌套的结构,所以是一个指向最外层,一个指向最内层 最内层指向的是一个unbound的variable,所以bound这个variable到另一个list就等于连接两个list 比如 1 | 2 | X # X = A # X 3 | 4 | Y # Y = B # Y X是unbound的,如果X = B,也就是X bound到3 | 4 | Y 那么 1 | 2 | 3 | 4 | Y # X = A # X 1 | 2 | 3 | 4 | Y = A A仍然指向最外层,... (更多)difference list有点像用两个指针表示list,一个指向队头,一个指向队尾不过list是嵌套的结构,所以是一个指向最外层,一个指向最内层最内层指向的是一个unbound的variable,所以bound这个variable到另一个list就等于连接两个list比如 1 | 2 | X # X = A # X3 | 4 | Y # Y = B # YX是unbound的,如果X = B,也就是X bound到3 | 4 | Y那么1 | 2 | 3 | 4 | Y # X = A # X1 | 2 | 3 | 4 | Y = AA仍然指向最外层,但内层已经链接起来了,最内层的unbound variable是Y于是A和Y又可以产生另一个difference list A # Y把difference list当queue用,过程如下创建队列的时候,两个variable identifier是指向同一个variable的,也就是q(0 X X),这个X指向的variable是unbound的从指针的角度看,就是队首队尾指针指向同一个位置然后是插入,首先创建一个unbound的variable,也就是E1,然后将要插入的值X和它组成一个tupleX | E1再将这个tuple bound到当前队列里那个unbound的variable,也就是EE = X | E1也就是原来的S # E (这个S和E应该就是Start和End的缩写了成了S # X | E1相当于队尾指针指向了一个新的值X于是E1成了队尾,所以返回的队列是q(N + 1, S, E1)出队时,S = X | S1,相当于X指向队首元素,S1作为新的队首,所以返回的队列是q(N - 1, S1, E) (收起)2012-01-15 16:33:13 回应
-
第33页
huangz (El Psy Congroo)
context-free & context-sensitive The EBNF notation given above defines a class of grammars called context-free grammars. They are so-called because the expansion of a nonterminal, e.g., digit , is always the same no matter where it is used. A grammar that contains a nonterminal whose use depends on the context where it is used is called a context-sensitive grammar. (更多)context-free & context-sensitiveThe EBNF notation given above defines a class of grammars called context-free grammars. They are so-called because the expansion of a nonterminal, e.g., digit , is always the same no matter where it is used.
(收起)A grammar that contains a nonterminal whose use depends on the context where it is used is called a context-sensitive grammar.
2011-05-24 13:35:23 回应
书评 · · · · · · 我来评论这本书
热门评论 最新评论
关于编程,还有很多~~~
-
- RONGE KUTA 这是一本和SICP有相似内容的书,粗略的浏览一下,书中设计到多种计算模型, 而这些计算模型都仅仅在SICP中作为介绍性的进行阐述,而在这本书上更具备体系化,我们可以将其称之为: 编程范式(programming paradigm)的东西。......2011-05-15
"Concepts, Techniques, and Models of Computer Programming"的论坛 · · · · · ·
| 这么好的书,怎么没人翻译呢? | 来自[已注销] | 8 回应 | 2010-02-20 |
- > 点这儿转让 有335人想读,手里有一本闲着?
以下豆列推荐 · · · · · · (全部)
- 语言、思维与智能 (pem)
- learn about computer science (Simon.emacs)
- LISP & FPL (FTS.)
- my interest books (htyu_0203_39)
- 要读的书(二) (huyichen)
谁读这本书?
喜欢这本书的人常去的小组 · · · · · ·

- 集智AI(人工智能)讨论组 (360)

- 豆瓣同城Android (658)

- 人工生命 (530)

- Cognitive Science 认知科... (5878)

- Haskell (890)

- 儿童产品设计 (1061)

- 程序设计语言 (1836)

- 复杂自适应系统研究 (945)
喜欢这本书的人关注的活动 · · · · · ·
订阅关于Concepts, Techniques, and Models of Computer Programming的评论:
feed: rss 2.0











