有人在使用Scheme编程语言吗?

52

我刚开始在大学学习计算机科学,他们用Scheme教授编程。

由于我过去六年已经学习了C++,所以Scheme对我来说有点奇怪。我的讲师告诉我,你可以用它编写任何可以用C或Java编写的程序。

真的有人在使用这种语言吗?


62
感恩!我会为我的大学教授Scheme语言而不惜一切代价。 - Mike B
2
毫无疑问,现在大多数大学都教授Java而不是... - Jason Down
5
学习Java没有错,但有些大学(包括我的)只教授Java,好像编程就等于Java。 - Mike B
2
至少了解一种LISPy语言非常有用。我在工业界,我的团队正在使用Clojure进行大量新开发;如果我们正在寻找实习生,Scheme经验将是一个非常大的优势。 - Charles Duffy
4
ESR 的观点在这里也值得注意: "学习 LISP 有不同的价值——当你终于掌握它时,你会有深刻的启蒙体验。即使你以后并不经常使用 LISP,这种体验也会让你成为更好的程序员,受用终身。" - Charles Duffy
显示剩余3条评论
21个回答

47

我认识的人用得不多,但它绝对值得一试(即使只是为了尝试在另一种编程范式中编程,这样你就可以学会不同的思考方式)。你很幸运能够上一门使用Scheme语言的课程,因为现在大多数学校都教授Java。如果你想观看一些来自麻省理工学院的讲座或者练习一些样例问题,这里有一个好链接。

MIT开放式课程 - 计算机程序的构造和解释

还有一本配套的书在线免费阅读,名为《计算机程序的构造和解释》。

更新:

对于那些感兴趣的人,有一种类似于Scheme的语言可以使用JVM并且可以访问Java库(因为很多大学使用Java),请查看Clojure。也许这将成为计算机科学入门的新语言选择(我们都希望如此!)。


1
尽管有传言称MIT将从Scheme转向Python:http://lambda-the-ultimate.org/node/3312 - Sean
4
不只是传言;麻省理工学院已经将他们的计算机科学入门课(MIT6.00)从Scheme转为Python,并放弃了SICP(无论是书还是作为课程名称),改用Allen Downey的《如何像计算机科学家一样思考》。 伯克利的CS61A仍然使用SICP和Scheme。 - Alex Basson
@Alex:伯克利现在也跟风转向Python,从下个学期开始(我猜想那位非常棒的61A教授哈维不再教这门课了)。我认为这真的很不幸——使用Scheme的61A是一门极为出色的计算机科学课程,我非常幸运因为在它的倒数第二个学期里上了这门课。 - Tikhon Jelvis
2
我是一名有经验的程序员,一年前观看了这些课程,感到非常精彩,非常愉悦。我也瞥了一眼新的Python讲座视频,但是感到非常失望,不是因为Python,而是因为讲师。该材料充满错误。 - Karoly Horvath
1
@VisakhVA 这取决于你要做什么。你是打算转换具有特定需求的现有程序吗?还是只是想学习一些新的有趣的东西?如果你想坚持使用另一种Lisp方言,我建议你选择Clojure。如果你想尝试一些有趣的东西(Clojure就是其中之一),那么我目前最喜欢的两种编程语言是Elixir和F#。 - Jason Down
显示剩余3条评论

30

Square USA使用它制作电影《最终幻想》。

这是他们发表的一篇文章:将事物粘合在一起- Scheme在实时CG内容制作中的应用

从那篇文章中:

在SIGGRAPH 2000和2001,我们,Square USA研发团队展示了来自全计算机生成电影《最终幻想:灵魂之城》的场景的实时渲染。

[...]

我们发现在实时渲染引擎中嵌入Scheme解释器非常有帮助。


22

Scheme会让你对编程有不同的思考方式。请尝试保持开放的心态!


13
"有人真的在使用这种语言吗?" ——著名的 Paul Graham

1
呃,方言。他的抱怨和底部的链接仍然适用。 - moonshadow
2
这个stackoverflow问题的关键也可以用Paul Graham的一句话来概括:“我想学习Lisp,但它看起来太陌生了。” - Michael Burr
6
保罗·格雷厄姆使用一种 Scheme 方言来实现 Arc:http://paulgraham.com/arc0.html(“MzScheme,是当前版本的 Arc 编译器所使用的...”)。 - Max Lybbert

12
JavaScript在很多方面与Scheme非常相似(尽管它缺少Scheme的continuations和高级数值系统)。
来源于“ECMAScript语言概述”(PDF)。2007-10-23。第4页。检索于2009-05-03。
ES3是一种简单、高度动态的基于对象的语言,其主要思想来自Self和Scheme语言。编程风格是面向对象和函数式编程的混合体:ES3中的主要抽象机制是词法作用域高阶函数和可变对象...

12

我目前正在学习阅读Abelson和Sussman在1986年在惠普公司提供的SICP演讲,以及由Brian Harvey提供的Cal-Berkeley CS61A播客(使用同一本进行教学),并边学边使用Scheme编程语言。这种体验让我开阔了全新的思路。对于像我这样没有接受过正规计算机科学高等教育的人,我强烈推荐你去学习。


10

我曾经参与过一个使用 Scheme 代码的项目,这是一项非常酷的技术。Scheme有一个很棒的功能,就是可以动态重新编译以自我优化执行速度 (详见此文)。我认为这离天网只差一步之遥。


1
你能再详细介绍一下吗?听起来很酷,但不得不下载PDF才能了解更多有点尴尬... - Display Name

8

我在大学时用过它,但自那以后就没怎么用过了。

如果您对递归不太熟悉,我强烈建议学习Scheme或Lisp。您将学会对各种事物进行递归思考。递归总是正确的方法吗?当然不是。但这是一个有用的工具。

我总是鼓励开发人员学习新语言。您学习并熟练掌握的语言越多,您就越能抽象地思考问题。您与特定语言的联系越少,您就越有可能选择最适合解决问题的语言。


7

除了个人经验外,您能得到的最接近客观猜测的是TIOBE指数,目前将LISP / Scheme排名第21,市场份额为0.470%。 TIOBE使用搜索引擎结果创建列表。显然,您需要对列表(以及任何其他关于Scheme使用的猜测)持保留态度。

不要害羞地推销:请查看PLT Scheme。他们创建了一个不错的社区,为许多平台提供了他们的IDE,并为您提供了一个不错的库选择。

这是一篇介绍商业应用程序中PLT Scheme的文章:http://www.untyped.com/downloads/icfp068-welsh.pdf


5

在俄罗斯,我们使用PLT Scheme开发软件,并且销售情况良好 ;)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接