免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4124 | 回复: 0
打印 上一主题 下一主题

[转载] scheme 简介 [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-11-21 23:21 |只看该作者 |倒序浏览
本帖最后由 Lispor 于 2010-11-21 23:26 编辑

Scheme 是什么?

Scheme 是一种小巧、强大、优雅的程序设计语言。

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

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

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

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

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

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

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

Scheme 被很多大学用于各个领域的计算机教学,甚至一些中学和小学也开始利用 Scheme 来讲授计算科学。

使用 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 的简单语法之后,课本马上开始讲述深入的计算概念:函数式程序设计,高阶函数,数据抽象,流,数据制导,消息传递,逻辑程序设计,解释器设计,编译器设计,寄存器机器模拟 ...
这本书让学生从一个语言设计者和实现者的高度来看待问题,而不只是作为一个普通语言的用户。读了这些内容,学生可以真正体会到“计算科学”的实质内涵,而不是被一些细节束缚,只见树木不见森林。



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 少了一个编译器。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP