Scheme 程序语言介绍

Scheme 是差不多三十年前诞生在 MIT 人工智能实验室的一门程序语言。它是 Lisp 语言的发展。今天的 Scheme 在程序语言的理论研究和工程应用两方面都发挥着持久和越来越重要的影响。

在网上有这样一句有趣的评论:计算机科学的大部分,就是在重复发现很久以前别人就早已 发现过的东西。当然,这是一句玩笑。不过我们可以给这句玩笑接个下巴:对于程序语言中 的每一个重要概念,你都可以先在 Lisp 当中发明一次,再在 C++ 里面发明一次,再在 Java 里面发明一次,再在 Python 里面发明一次,再在 Perl 里面发明一次,再在 Ruby 里面发明一次,当然,最后还要在 C# 里面再发明一次。我们以此开始我们对 Scheme 的介绍。^_^

Scheme 的前身是 Lisp。和 Scheme 一样,这也是一门诞生在 MIT 人工智能实验室的语言。 据说 Lisp 在程序语言的族谱上,班辈仅次于 Fortran,是第二古老的语言。但和 Fortran 不同,Fortran 经常被大名鼎鼎的计算机科学家批评,作为反面教材,这些计算机科学家当 中有著名的图灵奖获得者 Edsger Dijkstra。而 Lisp 和 Scheme 恰恰相反,它们常被计算 机科学家作为正面例子,一个优秀作品的例子。赞扬 Lisp 的人当中有 Smalltalk 和图形 用户界面的发明人之一 Alan Kay。

Lisp 由图灵奖获得者 John McCarthy 发明。据说一开始 McCarthy 只想把这门他正在设计 的语言的语法的设计,往后拖一拖,等到后面有趣的工作做完了,再回头来给这门基于 Lambda 演算的程序语言加上为数学家们所熟悉的语法。可是 McCarthy 的一个学生很快发 现,直接在还没有正式语法的抽象语法里面写程序,感觉非常好。就用不着一个正式的语法 了。于是 Lisp 诞生了。Lisp 重要的特征就是:第一,基于 Lambda 演算的计算模型;第 二,加上 List processing,这也是 Lisp 名称的由来;第三,直接在抽象语法里面工作, 这是非常特别的。前两个重要特征,是 McCarthy 天才的设计,第三个特征则是有趣的巧合。

又过了十多年,还在 MIT 人工智能实验室,不过这次不是 McCarthy,而是两个更年轻的计算机科学家。Guy Steele, Jr. 和他的老师 Gerald Sussman 合作对古典 Lisp 做了两个重 要改进。一是把 Lisp 从 Dynamic scope 变成了 Lexical scope。现在大家熟悉的几乎所 有的语言都是 Lexical scope,所以大家见怪不怪了。后来 Steele 成为 Common Lisp 设 计的主力,Common Lisp 把 Scheme 的 Lexical scope、还有其它一些由 Scheme 所创造的 特征,都加入到主流 Lisp 语言当中,Dynamic scope 终于成为了历史。Steele 和 Sussman 做的另一个主要改进是把 Continuation 这个概念引入到程序语言里面。这样一门 新的程序语言就此诞生。他们按照人工智能实验室的传统,把它命名为 Scheme。

节选自,IBM DeveloperWorks

参考:

用 scheme 语言进行 UNIX 系统编程

http://groups.csail.mit.edu/mac/projects/scheme/

打赏

《Scheme 程序语言介绍》有1个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注