Scheme Language

简介

Scheme 是什么?

Scheme 是一种小巧而强大的程序语言。

Scheme 是小巧的,强大的,优雅的

Scheme 是 LISP 的一种方言,它继承了 LISP 的优点。这里对 Scheme 的描述大部分也适合其它 LISP 方言。

Scheme 不但设计非常干净,而且非常强大。说它小巧是因为它只有7种最基本的语法结构,甚至连循环语句都没有。它的核心语法用几页纸就可以全部叙述完毕。Scheme 的 report 只有 50 多页,还没有某些语言手册的索引长。你可以在这里下载一个 Scheme Report 的 PDF 版本

然而这种看起来简单小巧的语言是那样的强大!

Scheme 可以可以实现几乎所有我们所知道的程序设计方法。函数式,强制式,消息传递式,逻辑式,…… 在 Scheme 里,所有的过程都可以被当成数据操作,而且它可以把通常隐藏在幕后工作的 continuation 作为对象来操作。

Scheme 可以实现优秀的软件工程。用 Scheme 编程可以摆脱普通语言的“计划—实现”的设计流程,而使用自底向上的设计方法。也就是说,你不需要在设计程序之前做好所有的计划。Scheme 语言随着问题改变,语言和问题都向着对方生长,最后达到一个完美的结合点。

Scheme 是非常优雅的,它具有数学的美感。Scheme 从一开始就被设计为一种通用的程序语言。它不是为了解决某个特殊的小问题的设计,不是功能堆砌在功能之上,最后搞的不可理解的语言。

Scheme 是稳定的。Scheme 注重的是“质量”,而不是工业上的利用价值,所以 20 年来 Scheme 基本上没有变化。你不用担心有一天收到这样烦人的消息:“我们鼓励大家使用 'Scheme2004' 的语法。” Scheme 的语法就像象棋的规则,一旦知道这个规则,剩下需要做的就是考虑怎样取得胜利。

Scheme 特别适合描述算法。用 Scheme 编程序,你可以专注于设计算法本身,而不是为语言本身的事情而烦恼,比如语法,内存泄漏之类。所以用这种语言教学,学生可以学会“解决现实世界的问题” 而不是困惑于 “电脑自己的问题”。学生会很快的理解到“计算” 的实质内涵,深刻体会到计算科学是什么。

Scheme 被很多大学用于各个领域的计算机教学,甚至一些中学和小学也开始利用 Scheme 来讲授计算科学。令人惊奇的是一些 10 岁小孩可以用 Scheme 写出 Don Woods 的 adventure 游戏。

使用 Scheme 作为教学工具的一个明显的特征就是,Scheme 语言本身从来不会成为学习的重点。使用 Scheme 作为工具的课程从来不会专门讲授 Scheme,因为没有这个必要。学生在初次接触计算机的几天里就能熟悉 Scheme,学习怎样用它来计算。之后,大家就开始到处找问题来计算,不再考虑语言的问题了。Scheme 的理念是程序语言不是拿来“学”的,而是拿来“用”的。

Scheme 在教育界被如此广泛的使用的结果就是,新一代的优秀的计算学家,很多人的“母语”是 Scheme。

可以免费得到的参考材料

Scheme 的社会是非常开放和自由的。所以你不用奇怪,最好的书都有免费的版本 :)

  • Structure and Interpretation of Computer Programs

    昵称 "The Wizard Book" 或者 "The Purple Book"。

    Scheme 的鼻祖 Gerald Jay Sussman 和计算机教育专家 Hal Abelson 合写的,20 年来影响整个计算机科学教育的著作,著名的 MIT 课程 6.001 的课本。这是 MIT 的电子工程和计算机科学专业本科生的必修课,其它与计算相关专业也鼓励参加。每年上这门课的 MIT 学生超过 500 名。全世界有超过 100 所大学采用这个教材。这里有一个不完全列表

    它着重讲述的不是 Scheme 语言本身,也不是数据结构和算法。在简短的介绍 Scheme 的简单语法之后,课本马上开始讲述深入的计算概念:函数式程序设计,高阶函数,数据抽象,流,数据制导,消息传递,逻辑程序设计,解释器设计,编译器设计,寄存器机器模拟……

    这本书让学生从一个语言设计者和实现者的高度来看待问题,而不只是作为一个普通语言的用户。读了这些内容,学生可以真正体会到“计算科学”的实质内涵,而不是被一些细节束缚,只见树木不见森林。

  • Revised(5) Report on the Algorithmic Language Scheme

    Scheme 语言的规范定义。它可以到这里下载。也可以在本地下载双列 PDF 版本

  • The Scheme programming Language

    R. Kent Dybvig 写的一本书。深入的解析了 Scheme 语言。CPS, syntax-case,……在这里都有详细的解释。

  • Teach Yourself Scheme in Fixnum Days

    Teach Yourself Scheme in Fixnum Days 可以作为一个有使用其它语言经验的程序员的教材,看这本书你可以很快接触到 Scheme 独一无二的强大特点。

  • An Introduction to Scheme and its Implementation

    一个深入的 Scheme 和 LISP 教材。适合 Scheme 解释器,编译器的设计者。

  • The Scheme Programming Language ,一个幻灯片。一目了然的介绍 Scheme 的基本特征。
  • The Internet Scheme Repository

    在这里可以找到许多有用的 Scheme 代码,几乎所有的免费 Scheme 实现,各种算法的 Scheme 实现,处理 Scheme 的工具比如 slatex,

  • http://srfi.schemers.org/

    这里是 SRFI(Scheme Requests for Implementation) 的基地。你如果觉得自己定义很多库函数,比如排序的,操作字符串的, regexp 很麻烦。但是又害怕使用不“标准”的函数库之后跟别人不兼容。

    那么在这里你可以找到一些“准标准”的函数库。SRFI 里定义的函数是鼓励 Scheme 解释器实现的。你会看到有很多工作已经有人帮你做了。你只需要调入 SRFI 的实现就可以使用很方便可移植的函数库了。

    SRFI 有点像 RFC。以后某一些函数一定会成为各种 Scheme 解释器都配备的东西,就像 ftp, http 一样,成为每台支持 TCP/IP 的机器支持的东西。

  • Grinnell College 的一门利用 Scheme 来讲授的计算机科学基础课

    以下的书籍没有电子版本

  • Concrete Abstractions: An Introduction to Computer Science Using Scheme

    另一本用 Scheme 描述计算机科学的教材。

  • Essentials of Programming Languages
  • The Little Schemer

    一本 LISP 的入门书籍。难度没有 SICP 大,但是非常精辟。

Scheme 解释器和编译器

Scheme 的实现很多,几乎所有解释器和编译器都是自由软件,除了 Chez。

你可以随便选择 MzScheme, guile, bigloo, chez, chicken, gambit, kawa, SISC, GNU/MIT scheme, petite, plt, pscheme, scheme48, SCM, scsh, stk, STklos, ELK, Gauche, sxm, umbscheme, ...

每一种解释器都有强项,可以根据自己的需要选择。其中,Guile 和ELK 适合做嵌入式解释器;bigloo, GambitC 和 Chicken 可以把 Scheme 编译成机器代码,速度快;DrScheme/MzScheme 界面最友好, Kawa 和 SISC 支持 Scheme 到 Java 的转换,字节码编译;Scheme 48 非常简洁可靠;Scsh 在 Scheme 48 基础上做了很多根操作系统接合的界面,可以作为通用的的脚本语言;Stk 和 STklos 自带面向对象系统和 gtk 图形接口;Gauche 具有方便的 regexp, 网络,图形接口,UTF-8 支持,可以作为很方便的脚本语言,进行系统管理等操作;Chez 是Cadance Research systems 出品的商业 Scheme 解释器;Petite 是Chez 的免费版本,比 Chez 少了一个编译器。

更多的实现可以在 这里找到。关于部分解释器,有一个比较过时的比较在 这里

我个人推荐使用 Aubrey Jaffer 的 SCM。它遵守 R5RS,非常方便,调试能力很强,有 SLIB 支持,可以编译成 C。

神奇的 Scheme

展现 Scheme 最吸引我的地方。

Scheme 的应用

部分我所知道的 Scheme 的应用。看看 Scheme 被用在什么地方了。

MIT Project on Mathematics and Computation

AL 动画语言

Kali 分布式计算语言

Envision: scheme with pictures

BRL - the Beautiful Report Language

Scheme 的一些工程应用

一个 Scheme 写的量子计算机模拟器


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值