Foreword

编程语言被认为计算机科学家必须掌握的一个核心课程。原因很明显:编程语言是我们用于开发新产品和交流新想法的载体。他们通过数百万行的代码描述该领域的问题并施加影响。他们的成功归功于计算机科学界在创建新语言和实施方面的长期努力。

已经有超过 75 种编程语言被讨论。它们代表了过去数十年在语言设计领域最好和最具影响力的贡献。最开始是 1950 年代的 Fortran 和 Lisp,随后又出现了多种语言,以及用于动态编程的 Web 语言。75 种语言中包含的范式有命令性,函数式,逻辑性,静态,动态,序列,共享内存并发,分布内存并发,数据流,high-level 和交互式语言。同时包括了不同的领域,科学计算,符号操作,数据库访问等。语言的多样性对于程序员的生产力是很重要的,并且这些也是计算机学科重要的资产。

本书介绍了流程控制,类型和抽象机制。这些是开发出组织良好,模块化,易于理解,易于维护程序的必要表征。对于当今语言这些核心特性的理解是成为更好的开发者以及更好理解计算机科学的基本前提。

必须与设计范式一起研究实现编程语言的策略。原因是一门语言的成功取决于实现的质量。同样,策略的选择会限制语言的设计。语言的实现开始于解析(parsing)和词法扫描(lexical scanning)来计算出程序的句法(syntactic)结构。今天的解析技术,在 Part I 中讨论,是有史以来最优雅的算法之一,是使用数学对象创建实用工具的例子之一。仅仅作为智力成果就值得学习。当然它们具有巨大的实用价值,也是欣赏这些实现第一版 Fortran 编译器中使用的伟大策略的一个好途径。

实现的另一个组成部分是将 high-level 语言转换成适用机器执行语言的编译器组件。这种转换可以率先完成(静态语言),也可以执行期间完成(动态语言),也可以兼而有之。本书讨论了包括通过解析驱动的转换的优雅机制的方法和实现。为了生成高效代码,转换策略避免冗余计算,高效利用内存的层次,并且利用处理器的并发能力。这些有时候矛盾的目标被编译器的优化组件接管。尽管这些内容并不应该包括在编译器的第一课中,本书还是在第四部分(Part IV)给出了不错的概述。

计算近期最重要的发展是并发能力的普及和利用,在可预期的将来,利用并发性将带来性能提升。本书通过向读者展示并发编程的一系列主题来回应这一发展,包括跨线程同步,通信和线程间协调。这些信息随着并行计算的普及变得越来越重要。

编程语言是开发者和机器之间的桥梁。算法必须表现为可执行文件。编程语言设计的学习和实现将给你一个很好的对于连接计算策略理解。通过对该主题广泛的表述, Michael Scott 的这本书,是对编程语言学的巨大贡献。


本书的网站