【内容简介】
这是一本很有特色的教材,其核心是讨论程序设计语言的工作原理和技术。本书融合了传统的程序设计语言教科书和编译教科书的有关知识,并增加了一些有关汇编层体系结构的材料,以满足没学过计算机组织的学生们的需要。书中通过各种语言的例子,阐释了程序设计语言的重要基础概念,讨论了各种概念之间的关系,解释了语言中许多结构的形成和发展过程,以及它们演化为今天这种形式的根源。书中还详细讨论了编译器的工作方式和工作过程,说明它们对源程序做了什么,以及为什么要那样做。书的每章最后附有复习题和一些更具挑战性的练习。这些练习的特别价值在于引导学生进一步深入理解各种语言和技术。本书第2版新增了脚本语言问题的讨论,涵盖Perl、Python、Ruby、Tcl、PHP、JavaScript、XSLT等和其他语言。
本书在美国大学已使用了十余年,目前被欧美许多重要大学用于“程序设计语言”或者“软件系统”课程。本书适合高年级本科生或者一年级研究生使用,许多内容对专业程序员也很有价值。本书作者Michael L.Scott 是计算机领域的著名学者,译者是北京大学的裘宗燕教授,他熟悉专业,译笔流畅,因此,这是一本难得的著、译双馨的佳作。
【编辑推荐】
全球上百所大学的标准教材和首先参考书!图书馆必备典藏,程序员修炼之道,裘宗燕老师最新译作!创新性地将程序员设计语言与编译器设计有机结合,修炼扎实的基本功,做注重实效的程序员。
《程序设计语言——实践之路》不仅用极清晰的笔触解释了语言的各种概念和实现细节,还仔细解释了计算机体系结构和编译器如何影响语言的设计和实现……。本书展示了程序设计语言如何居于计算机科学真正的中心,是跨越程序员和机器之间的深渊的桥梁。
——摘自Microsoft Research的James Larus写的前言
新版本的《程序设计语言——实践之路》是平衡教科书所需的三个质量要素(广度、深度和清晰性)的典范,它必然成为这一领域里的经典。
——Christopher Vickery, Queens College of CUNY
随着虚拟机、脚本语言、移动代码和图形用户界面的兴起,对语言设计和语言实现进行某种集成处理的需要变得比任何时候都更加紧迫。《程序设计语言——实践之路》强调的就是这种集成,同时保持了对程序设计语言设计的关注。无论是学生还是专业程序员,都能从本书对当代各种最重要语言的基础概念的广泛探究中大获裨益。经过彻底更新,本书第2版新增了有关脚本语言的一章,同时也涵盖了C99、C#2.0和、Java 5。
第2版的特点:
涵盖程序语言设计的最新发展,包括C99、C#2.0和Java 5。在新增的一章和全书通篇中讨论了脚本语言的有关问题,涵盖Perl、Python、Ruby、Tcl、PHP、JavaScript、XSLT和其他语言。
包含了深入探讨并发性的一章,其中讨论了C#和新的、Java并发包(JSR 166)。
许多章节和论题增加了内容,包括迭代器、异常、多态性、模板/泛型、作用域规则和声明顺序、分别编译、废料收集、线程和同步等类型推理和异常处理等。
随书配套光盘上提供了许多进一步学习的材料,包括高级的和可选的内容,成百的工作实例,直接可用的搜索功能,以及对WWW上的手册、教程、编译器和解释器的活链接。
【作译者介绍】
本书提供作译者介绍
Michael L.Scott 是罗切斯特大学计算机科学系的教授,前任系主任。他于1985年获得麦迪逊的威斯康星大学博士学位。他是Lynx分布式程序设计语言、Charlocle和Psyche并行操作系统、Bridge并行文件系统、Casllmere和InterWeave分布式共享存储系统和许多广泛使用的同步算法和并发数据结构的设计者或共同设计者。2001年获得该大学的“Robetl和Pamela Goergen本科生教学突出贡献奖”。
.. << 查看详细
【目录信息】
第1部分 基础
第1章 引言
1.1 语言设计的艺术
1.2 程序设计语言的谱系
1.3 为什么研究程序设计语言
1.4 编译和解释
1.5 程序设计环境
1.6 编译概览
1.7 总结和注记
1.8 练习
1.9 探索
1.10 有关参考文献
第2章 程序设计语言的语法
2.1 描述语法:正则表达式和上下文无关文法
2.2 扫描
2.3 语法分析
2.4 理论基础
2.5 总结和注记
2.6 练习
<< 查看详细目录
【译者序】
Michael Scott的Programming Language Pragmatics是一本很有价值的教科书,其内容涵盖程序设计语言、编译技术、软件系统的许多方面,甚至延伸到硬件体系结构等许多领域。出现这一情况的根源很明显:程序语言在计算机科学技术领域居于一种中心地位。程序是计算机科学技术里最核心的概念,而作为描述程序的语言,集中体现了程序设计和软件开发实践中形成的最有价值、最具普遍性的认识和技术。程序语言下接硬件体系结构,上承丰富多彩的计算机应用需求,既反映了开发者的专业发展和局限性,又受到实现的制约。这样,程序语言里很自然地浓缩了相关领域的大量知识和技术精华,要理解语言发展和演化的现状和趋势,也..
<< 查看译者序
【前言】
计算机程序设计的课程给了普通学生有关计算机领域的第一个印象。在上这种课程之前,大多数学生已经在自己的生活中使用着计算机,用于诸如电子邮件、计算机游戏、浏览网页、做文字处理、即时消息(聊天),以及大量其他事项,而且在他们还没有写出自己的程序之前,就已经开始关注这些应用系统的工作方式了。在获得了作为程序员的一定能力之后(假定已经学过很好的有关数据结构和算法的课程),很自然地,下一步就是想知道程序设计语言是如何工作的。本书就是对此提供一个解释。本书的目标很简单,就是采用尽可能容易理解和最精确的语言,采用普通本科生愿意阅读并易于接受的风格。这一目标反应了我的一种信念:如果我..
<< 查看前言
【序言】
计算机科学惯于在抽象之上建立抽象。在我们的领域里,把细节隐藏到简化界面之下的功能既是一种利器,也是不得已而为之。操作系统、数据库和编译器都是非常复杂的程序,历经40年理论和开发的磨砺。在绝大多数情况下,为使用一个软件提供的功能,程序员很少或根本不必理解其内部逻辑或结构。在大部分情况下,不知这是祸是福。.
然而,模糊的抽象也可能变成阻碍发展和进步的壁垒,而不是新生事物的可靠基础。请看一看本书考察的主题:程序和程序设计语言。为什么一个程序运行得慢如蜗牛,而从执行剖析却看不出其中有任何明显的瓶颈,或者无法给其瓶颈找到一种算法解释?有些潜在问题根源于从语言结构到机器指令..
<< 查看序言
免费试读 第1章..
免费试读 第2章..
>>
进入在线免费试读