当前位置: 首页 > 计算机/网络 > 计算机程序的构造和解释:原书第2版

浏览历史

×

计算机程序的构造和解释:原书第2版

计算机程序的构造和解释:原书第2版

计算机程序的构造和解释:原书第2版

prev next

  • 商品货号:JSJC001
  • 商品重量:850克
  • 商品点击数:2887
  • 本店售价:€12.89
    注册用户:€12.89
    vip:€12.25
    用户评价: comment rank 5
  • 商品总价:
  • 购买数量:
    购买此商品可使用:0 积分

商品描述:

商品属性

 编辑推荐

  这一版本中强调了几个新问题,其中*重要的是有关的不同的途径中,计算模型里对于时间的处理所起的中心作用:带有状态的对象、并发程序设计、函数式程序设计、惰性求值和非确定性程序设计。这里为并发和非确定性新增加了几节,我们也设法将这一论题集成到整本书里,贯穿始终。每一位严肃的计算机科学家都应该阅读这本书。由于本书清晰、简洁和富于才智,我们强烈推荐本书,它适合所有希望深刻理解计算机科学的人们。    

 
内容简介

  本书1984年出版,成型于美国麻省理工学院(MIT)多年使用的一本教材,1996年修订为第2版。在过去的二十多年里,本书对于计算机科学的教育计划产生了深刻的影响。  第2版中大部分重要程序设计系统都重新修改并做过测试,包括各种解释器和编译器。作者根据其后十余年的教学实践,还对其他许多细节做了相应的修改。  本书自出版以来,世界各地已有100多所院校采用本书做教材,其中包括美国斯坦福大学、美国普林斯顿大学、英国牛津大学、日本东京大学等。

作者简介

  Harold Abelson是MIT1992年度MacVicarFacultyFellow。Gerald JaySussman是Matsushita电子工程教授。他们都在MIT电子工程和计算机科学系工作.都得到过最重要的计算机科学教育奖:如Abelson得到了IEEE计算机学会的Booth奖。Sussman得到了ACM的Karlstrom奖。  Julie Su

目  录

出版者的话
专家指导委员会

第2版前言
第1版前言
致谢
第1章 构造过程抽象
1.1 程序设计的基本元素
1.2 过程与它们所产生的计算
1.3 用高阶函数做抽象
第2章 构造数据现象
2.1 数据抽象导引
2.2 层次性数据和闭包性质
2.3 符号数据
2.4 抽象数据的多重表示
2.5 带有通用型操作的系统
第3章 模块化、对象和状态
3.1 赋值和局部状态
3.2 求值的环境模型
3.3 用变动数据做模拟
3.4 并发:时间是一个本质问题
3.5 流
第4章 元语言抽象
4.1 元循环求值器
4.2 Scheme的变形——惰性求值
4.3 Scheme的变形——非确定性计算
4.4 逻辑程序设计
第5章 寄存器机器里的计算
5.1 寄存器机器的设计
5.2 一个寄存器机器模拟器
5.3 存储分配和废料收集
5.4 显式控制的求值器
5.5 编译
参考文献
练习表
索引

 
前  言

第2版前言
软件很可能确实与其他任何东西都不同,它的本意就是被抛弃:这一观点就是总将它看作一个肥皂泡吗?
—Alan J. Perlis

自1980年以来,本书的材料就一直在MIT作为计算机科学入门课程的基础。在本书第1版出版之前,我们已经用这一材料教了4年课,而到第2版出版,时间又过去了12年。我们非常高兴地看到这一工作得到广泛认可,并被结合到其他一些教材中。我们已经看到我们的学生掌握了本书中的思想和程序,并将它们构筑到新的计算机系统或者语言的核心里—我们的学生已经变成了我们的创造者。我们非常幸运能有如此有能力的学生和如此有建树的创造者。
在准备这一新版本的过程中,我们采纳了成百条澄清性建议,它们来自我们自己的教学经验,也来自MIT和其他地方的同行们的评述。我们重新设计了本书里大部分主要程序设计系统,包括通用型算术系统、解释器、寄存器机器模拟器和编译器,也重写了所有的程序实例,以保证任何符合IEEE的Scheme标准(IEEE 1990)的Scheme实现都能运行这些代码。
这一版本中强调了几个新问题,其中重要的是计算模型里对于时间的处理所起的中心作用:带有状态的对象、并发程序设计、函数式程序设计、惰性求值和非确定性程序设计。这里为并发和非确定性新增加了几节,我们也设法将这一论题集成到整本书里,贯穿始终。
本书第1版基本上是按照我们在MIT一学期课程的教学大纲撰写的。第2版中由于有了增加的这些新材料,已经不可能在一个学期里覆盖所有内容了,所以教师需要从中做一些选择。在我们自己的教学里,有时会跳过有关逻辑程序设计的一节(4.4节);让学生使用寄存器机器模拟器,但不去讨论它的实现(5.2节);对于编译器则只给出粗略的概述(5.5节)。即便如此,这仍然是一门内容非常多的课程。一些教师可能希望只覆盖前面的三章或者四章,而将其他内容留给后续课程。




第1版前言
一台计算机就像是一把小提琴。你可以想象一个新手试了一个音符后丢掉了它。后来他说,听起来真难听。我们已经从大众和我们的大部分计算机科学家那里反复听到这种说法。他们说,计算机程序对个别具体用途而言确实是好东西,但它们太缺乏弹性。一把小提琴或者一台打字机也同样缺乏弹性,那是在你学会了如何去使用它们之前。
—Marvin Minsky,“为什么说程序设计很容易成为一种媒介,
用于表述理解浮浅、草率而就的思想”

本书是麻省理工学院(MIT)计算机科学的入门教材。在MIT主修电子工程或者计算机科学的所有学生都必须学这门课,作为“公共核心课程计划”的四分之一。该计划还包含两个关于电路和线性系统的科目,以及一个关于数字系统设计的科目。我们从1978年开始涉足这些科目的开发,从1980年秋季以后,我们就一直按照现在这种形式教授这门课程,每年600到700个学生。大部分学生此前没有或者很少有计算方面的正式训练,虽然许多人玩过计算机,也有少数人有丰富的程序设计或者硬件设计经验。
我们所设计的这门计算机科学入门课程主要考虑了两个方面。首先,我们希望建立起一种认识:计算机语言并不仅仅是一种让计算机去执行操作的方式,更重要的,它是一种表述有关方法学的思想的新颖的形式化媒介。因此,程序必须写得能够供人们阅读,偶尔地去供计算机执行。其次,我们相信,在这一层次的课程里,基本的材料并不是特定程序设计语言的语法,不是高效完成某种功能的巧妙算法,也不是算法的数学分析或者计算的本质基础,而是一些能够控制大型软件系统的复杂性的技术。
我们的目标是,完成了这一科目的学生能对程序设计的风格要素有一种很好的审美观。他们应该掌握了控制大型系统的复杂性的主要技术。他们应该能够去读50页长的程序,只要该程序是以一种值得模仿的形式写出来的。他们应该知道在什么时候哪些东西不需要去读,哪些东西不需要去理解。他们应该很有把握地去修改一个程序,同时又能保持原来作者的精神和风格。
这些技能并不仅仅适用于计算机程序设计。我们所教授和提炼出来的这些技术,对于所有的工程设计都是通用的。我们在适当的时候隐藏起一些细节,通过创建抽象去控制复杂性。我们通过建立约定的界面,以一种“混合与匹配”的方式组合起一些标准的、已经很好理解的片段去控制复杂性。我们通过建立一些新的语言去描述各种设计,每种语言强调设计中的一个特定方面并降低其他方面的重要性,以控制复杂性。
设计这门课程的基础是我们的一种信念—“计算机科学”并不是一种科学,而且其重要性也与计算机本身并无太大关系。计算机革命是关于我们如何去思考,以及如何去表达自己的思考的。在这个变化里,基本的东西就是出现了一种或许好称为过程性认识论的现象—如何从命令式的观点去研究知识的结构,这一观点与经典数学领域中所采用的更具说明性的观点是完全不同的。数学为精确处理“是什么”提供了一种框架,而计算则为精确处理“怎样做”提供了一种框架。
在教授这里的材料时,我们采用的是Lisp语言的一种方言。我们绝没有形式化地教授这一语言,因为完全不必那样做。我们只是使用它,学生可以在几天之内就学会它。这也是类Lisp语言的重要优


 
商品属性
[出版社] 机械工业出版社
[图书装订] 平装
[作者] [美]哈罗德·阿贝尔森 (Harold Abelson) 等
[图书书号/ISBN] 9787111630548
[开本] 16开

商品标签

购买记录(近期成交数量0)

还没有人购买过此商品
总计 0 个记录,共 1 页。 第一页 上一页 下一页 最末页

用户评论(共0条评论)

  • 暂时还没有任何用户评论
总计 0 个记录,共 1 页。 第一页 上一页 下一页 最末页
用户名: 匿名用户
E-mail:
评价等级:
评论内容: