Scheme语言极其实现.docx
- 文档编号:4268116
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:6
- 大小:18.60KB
Scheme语言极其实现.docx
《Scheme语言极其实现.docx》由会员分享,可在线阅读,更多相关《Scheme语言极其实现.docx(6页珍藏版)》请在冰豆网上搜索。
Scheme语言极其实现
Scheme语言极其实现
Scheme语言极其实现来自:
木头书
2012-09-0115:
19:
231scheme一种小巧而强大的语言
scheme是一种简洁、小巧而又强大的语言,是一种通用编程语言,一种脚本语言,一种可以嵌入到其他程序中的拓展语言等等。
scheme被设计成支持多种实现策略,而且已经有大量的实现已经完成,它们中的大多数都是自由软件。
有的是解释器实现(例如BASIC与Tcl),或编译为机器码的编译器(如C和Pascal),以及编译为虚拟机字节码的编译器(如Java)。
已经存在的有多种Scheme语言的拓展实现,包括我们的RSchem系统,它是一种集成有一个对象系统并可拓展可移植的Scheme实现。
本书是三本计划中的Scheme文档中的第一部分,Scheme实现以及RScheme语言与其实现。
在全部完成后我也许会将它们集中到一部大书中。
三本都会为Texinfo格式,以支持打印为可硬拷贝的文档,支持可在线浏览的Info文档(通过Info浏览器或Emacs编辑器的Info系统),或自动转为HTML格式文件以便于使用Web浏览器浏览。
无论你通过何种方式阅读到本书,都欢迎来到Scheme的世界。
2.本书面向的读者
本书针对的群体是那些对Scheme的工作机理,Scheme语言的设计以及Scheme语言的使用感兴趣的人。
以上三条并不矛盾,因为学习编程语言最好的方式之一——同时也是语言设计的重要原则——就是研究Scheme语言是如何用其自身实现的。
我将通过实现若干Scheme语言子集的解释器和一个简单的编译器来展示Scheme语言的强大之处。
Scheme语言编译器的简洁与明晰将令人惊叹。
这是一种由AbelsonandSussman在《计算机程序的构造与解释》一书中发起的并广泛应用与编程介绍书籍的传统途径。
许多介绍Scheme编程语言的书籍都遵循了这一途径,而它们中的大多数又是为初学者提供的。
虽然我本人认为Scheme是一种适宜于初学的优秀语言,但对于那些已经用C和PASSICAL语言工作的人来说,仅仅为了学习Scheme去阅读编程介绍类的书实在有些强人所难。
本书与当前大多数介绍Scheme语言的书在许多方面有所不同。
我会将基本的编程概念一带而过,例如什么是变量,什么是递归。
我将会比绝大多数Scheme书籍的作者介绍得更加具体,因为看起来这样学生们能更容易理解。
我会深入到语言层面告诉你大多数Scheme语言的实现是如何工作的。
我发现这样的具体说明能够帮助我的学生以及我自己解开心中的许多困惑。
我不会从函数式编程的角度开始让你以为Scheme是通过表达式重写来执行的。
我将把Scheme描述为一种“弱面向对象”语言的特例。
我所指的弱面向对象语言并不是那种有着继承关系等的面向对象概念,尽管很多Scheme的拓展实现了这一点。
我的意思仅仅是这种语言中的值都属于某种数据对象,那意味着你能够比较两个指向对象的指针来看他们是否属于不同种类的对象,而不是同一种对象的不同状态——同一种对象也许会有许多种可变的状态。
许多人也许不太喜欢我的讲授方式,因为我过早开始关于状态与赋值的讨论。
在Scheme语言中普遍认为没有限制地使用赋值操作是一种糟糕的编程风格。
好的编程风格是去写几乎“纯函数式”或"applicative"的程序。
尽管我同意“纯函数式”对于Scheme来说通常是一件好事,我的想法是尽可能早地明确Scheme的语法以让新的Scheme程序员们清楚Scheme是一种非常通用的编程语言,尽管它非同寻常的简洁与表达能力。
我的经验告诉我许多人获益于对早期对赋值操作的领会,它澄清了变量与变量绑定的基础。
风格的事儿咱们等到各种选择性都比较清楚的时候再讨论。
如果你曾经学习过Lisp或Scheme,但又不够深入,那么这本书正是你想要的。
很多人接触Lisp或Scheme就像鸭子接触到水一样,但也有些人不是。
但我认为那是由学习材料呈现的方式不同导致的,其实Lisp与Scheme语言的学习没有什么困难。
为了避免读者们在阅读大多数书时遇到的问题,我通过异于以往的方式去解释一些概念。
这些非常具体的解释将避免读者因语言不熟导致的理解困难。
Scheme语言只是一种普通的编程语言,但也同时具备了能以特殊的方式使用的强大特性。
如果你是一位语言设计者,但对Lisp或Scheme语言又不够熟悉,那么本书将澄清你对这些语言的看法。
我一直坚信Lisp的世界与通用的命令式语言之间有着无法逾越的鸿沟,很大程度上源于不同社区之间的不同话语。
Scheme语言最新的发展并没有受到其他语言的设计者们的广泛赞扬。
甚至Lisp语言的早期特性——宏,也没有被一般的语言设计者所理解,尽管他们的问题已经被Scheme在本质上解决了。
如果你是一位编程语言的实现者,或教授编程语言实现的课程,这本书也许会有用。
我会展示各种Scheme解释器与一个编译器。
Scheme是一种用于教授语言实现的原则的优秀工具,因为它语法简洁,而且其解释器从简易到复杂,从解释器到编译器有着简单的演化过程。
这使得教授编程语言的实现原则能尽量避免无关的细节。
3人
喜欢
喜欢回应
推荐
喜欢
只看楼主欲飞的翅膀
2012-09-0208:
24:
52
本书?
书名呢?
其实,我现在最郁闷的就是,Dr.Racket到底怎么用?
以前,用SCHEME怎么读输入,也就是对应C语言的scanf的是哪个。
想用SCHEME在OJ上AC一题……有些学校的OJ支持SCHEMEL君撸了一年后(233SeriesDeveloper=v=☆)
2012-09-0210:
47:
41本书?
书名呢?
其实,我现在最郁闷的就是,Dr.Racket到底怎么用?
以前,用SCHEME怎么读输入,也
...
欲飞的翅膀
没有read函数么?
欲飞的翅膀
2012-09-0316:
17:
57没有read函数么?
L君撸了一年后
有啊,但是,具体怎么用?
这里给的示例是错的,让我很是无语欲飞的翅膀
2012-09-0316:
27:
23
另外,Dr.Racket中,到底哪个才是标准的SCHEME语言啊?
好几种呢……不好选啊L君撸了一年后(233SeriesDeveloper=v=☆)
2012-09-0316:
29:
13有啊,但是,具体怎么用?
这里给的
...
欲飞的翅膀
哇,厦大还有这种网站的啊?
!
长见识了~L君撸了一年后(233SeriesDeveloper=v=☆)
2012-09-0316:
29:
46另外,Dr.Racket中,到底哪个才是标准的SCHEME语言啊?
好几种呢……不好选啊
欲飞的翅膀
话说我也分不清,无力……[已注销]
2012-09-0409:
50:
13另外,Dr.Racket中,到底哪个才是标准的SCHEME语言啊?
好几种呢……不好选啊
欲飞的翅膀
别用Dr.Racket欲飞的翅膀
2012-09-0421:
16:
32哇,厦大还有这种网站的啊?
!
长见识了~
L君撸了一年后
我自己搞定了,把最外层的begin去掉反而对了……
一口气把1000,1006,1007AC了,后两题是大整数的加法和乘法,结果,乘法还比加法费时少……震撼了。
欲飞的翅膀
2012-09-0421:
17:
08别用Dr.Racket
[已注销]
那SCEME用什么?
以前MIT的就是DR.SCEME或是MIT.SCHEME?
[已注销]
2012-09-0507:
54:
58那SCEME用什么?
以前MIT的就是DR.SCEME或是MIT.SCHEME?
欲飞的翅膀
我总搞不清出Dr.Racket已启动就占300M,内存耗得多也就算了,连输入的时候都卡卡的。
。
。
不用其IDE又感觉怪怪的。
。
。
推荐Guile和Chicken。
去这里找找总,有一款适合你http:
//community.schemewiki.org/?
scheme-faq-standards#implementationsL君撸了一年后(233SeriesDeveloper=v=☆)
2012-09-0514:
50:
20别用Dr.Racket
[已注销]
其实我也很不爽Racket,因为一直不知道怎么调整键绑定成Emacs那种T_T象道(道法自然)
2012-11-0223:
09:
30
若是修习,gnuMITscheme足以;若是自用,gnuguile极好;若是做营生,racket是重要选项。
去留两昆仑
2012-11-0901:
18:
18若是修习,gnuMITscheme足以;若是自用,gnuguile极好;若是做营生,racket是重要选项。
象道
请问大神,我初学DrRacket,没有编程基础,学校的课程,有没有推荐的参考书啊,英文的HowtodesignProgram看着别扭,汉语翻译过来的感觉被拔高了,不适合我这种零基础的菜鸟啊。
。
。
恳请大神赐教,感激不尽~~KimmyLeo((let((me'out))'(brackets!
)))
2012-11-0908:
45:
11
学校课程居然有教Racket?
?
RrandOm(It'sawayoflivin')
2012-11-0910:
00:
38其实我也很不爽Racket,因为一直不知道怎么调整键绑定成Emacs那种T_T
L君撸了一年后
参数设置的某个地方有个选项允许使用菜单中的快捷键.取消勾选.aeRofLoyD(对不起,请让我自己倒霉一会儿。
)
2012-12-0721:
09:
46另外,Dr.Racket中,到底哪个才是标准的SCHEME语言啊?
好几种呢……不好选啊
欲飞的翅膀
选第一个。
象道(道法自然)
2013-02-0317:
04:
16请问大神,我初学DrRacket,没有编程基础,学校的课程,有没有推荐的参考书啊,英文的Howtode
...
去留两昆仑
多上racket的邮件列表吧。
工具使用对初学者是个小难点,但决不是学习lisp的重点。
[已注销]
2013-04-1502:
48:
20
及其的及打错了[已注销]
2013-04-1503:
08:
13
这是有人想写书吗?
完全本末倒置啊Sicp的精神是,因为Scheme简单到几乎不用学,所以拿来用做教学,以让学生迅速接触程序设计本质,即对表达的复杂性的控制。
temp(?
)
2013-04-1505:
13:
49
这是R.KentDybvig的那本书吗?
temp(?
)
2013-04-1505:
14:
06这是有人想写书吗?
完全本末倒置啊
Sicp的精神是,因为Scheme简单到几乎不用学,所以拿来
...
[已注销]
很明显是某书序言的翻译。
[已注销]
2013-04-1511:
34:
18这是R.KentDybvig的那本书吗?
temp
不是吧?
kent不会说这样的话吧。
。
[已注销]
2013-04-1511:
43:
42
对不起,我错了!
想要为Sicp辩护,
看来我已经有点偏见了temp(?
)
2013-04-1512:
45:
21对不起,我错了!
想要为Sicp辩护,
看来我已经有点偏见了
[已注销]
确实不是KentDybvig那本书。
那本书在这里,序言不一样。
2013-04-1520:
24:
14确实不是KentDybvig那本书。
那本书在这里,序言不一样。
temp
kent的书一样是致力于介绍语言本身的具体特性的,
可惜kent对chez的技术秘而不宣zet(疯狂的二维指针程序员?
..)
2013-12-1121:
19:
16
这是什么书?
楼主呢?
怎么不见人..
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Scheme 语言 极其 实现