我刚刚开始在我的大学学习计算机科学,他们教我们使用Scheme编程。
由于我在过去的6年里学过C ++,所以Scheme对我来说有点奇怪。我的教师告诉我你可以编写任何你可以用C或Java编写的程序。
有人真的使用这种语言吗?
答案 0 :(得分:43)
我知道并没有很多人使用它,但绝对值得一看(如果只是尝试在另一种范例中编程,那么你就会学会以不同的方式思考)。你很幸运能够参加一个使用Scheme的课程,因为现在大多数大学都在教Java。如果你想看麻省理工学院的一些讲座或处理样本问题等,这里有一个很好的链接。
MIT Open Courseware - Structure and Interpretation Of Computer Programs
还有免费的随书({3}}(计算机程序的结构和解释)。
<强>更新强>
对于那些对类似的语言感兴趣的人来说,使用JVM并可以访问Java库(因为很多大学使用Java),请查看available on-line。也许这将成为计算机科学引入的新选择语言(我们都希望!)。
答案 1 :(得分:30)
Square USA用它制作电影最终幻想。
以下是他们在其上发表的论文:Gluing Things Together - Scheme in the Real-time CG Content Production。
从那篇论文:
在SIGGRAPH 2000和2001年,我们Square USA R&amp; D团队展示了完整的计算机制作电影“最终幻想:精神内部”的场景渲染。
[...]
我们发现在实时渲染引擎中使用嵌入式Scheme解释器是非常有帮助的。
答案 2 :(得分:21)
Scheme会让你对编程有不同的看法。试着保持开放的态度!
答案 3 :(得分:13)
“有人真的在用这个吗? 语言?“
Paul Graham,着名。
答案 4 :(得分:11)
JavaScript在很多方面与Scheme非常相似(虽然它缺少continuation和Scheme的高级数字系统)。
来自“ECMAScript Language Overview”(PDF)。 2007-10-23。 pp.4。检索2009-05-03。
ES3简单,高度动态, 采用它的基于对象的语言 自我语言的主要观点 和计划。编程风格是 基于对象和功能的混合 编程:主要抽象 ES3中的机制是词法范围的 高阶函数和可变 对象......
答案 5 :(得分:10)
我目前正在完成SICP lectures that Abelson and Sussman gave at Hewlett-Packard in 1986和Cal-Berkeley CS61A podcasts given by Brian Harvey(从同一book讲授)并继续参与计划,并且经验开辟了全新的思维方式为了我。对于像我这样没有任何正式的CS高等教育的人,我强烈推荐它......
答案 6 :(得分:9)
我在制作中使用了方案代码的项目,它可能是非常酷的东西。 Scheme具有dynamically recompiling to self-optimize execution这个很酷的特性。我认为这就像离天网一步之遥。
答案 7 :(得分:7)
我在大学里用它,但自那以后我就没用过了。
如果你对递归感到不稳定,我强烈推荐学习Scheme或Lisp。你将学习如何递归地思考各种各样的事情。递归始终是正确的方法吗?当然不是。但它是工具箱中的有用工具。
我总是鼓励开发人员学习新语言。你学习的语言越多,熟练掌握,你就会越抽象地思考问题。您与特定语言联系越少,就越有可能选择最适合您问题的语言。
答案 8 :(得分:6)
除了个人经验之外,你最接近客观猜测的是TIOBE index,它目前按照市场份额0.470%对LISP / Scheme 21进行排名。 TIOBE使用search engine results创建列表。显然,你需要把这个列表(以及对Scheme使用的任何其他猜测)用一点点盐。
无耻的晋升:查看PLT Scheme。他们创建了一个很好的社区,为许多平台提供了他们的IDE,并为您提供了开箱即用的nice library选择。
这是一篇描述商业应用中PLT Scheme的文章:http://www.untyped.com/downloads/icfp068-welsh.pdf。
答案 9 :(得分:4)
在俄罗斯,我们使用PLT Scheme开发软件。它卖得很好;)
答案 10 :(得分:4)
Clojure是一种类似Scheme / Lisp的语言,可以在JVM中运行,并且非常适合并行处理(据称)。使用Clojure的好处是可以访问整个Java API和任何其他Java库。
Clojure与Scala一起受到语言极客的欢迎。
答案 11 :(得分:3)
所有语言都可以用来写任何东西,并付出足够的努力:)
然而,根据我的经验,Scheme很酷的知道方案会影响你在其他语言的编程。
Scheme宏非常强大,并且使用current-continuation调用是一种思维方式。
经典测试是计算机程序的结构和解释(“SICP”)。值得一读。
答案 12 :(得分:3)
Jazz Scheme是一个基于Gambit Scheme的开源计划环境,似乎积极推动工业用途,请查看:
他们在新闻中报道了新用途:
根据this页面,在以下情况下使用Scheme:DEC,TI,Tektronix,HP和Sun.
This guy的LinkedIn简历报道在迪士尼使用Chez Scheme。
只需谷歌搜索一下就可以揭示很多东西。在这种情况下,它证明了我曾经听说过Scheme的使用非常普遍,只是不公开。答案 13 :(得分:3)
Java平台有很多方案实现,它们用于Java应用程序的脚本和原型设计。 J2EE中存在基于continuation的Web框架,称为SISCWeb。
Guile方案在某些GNU应用程序中用作脚本语言 - 例如GnuCash主要用Scheme编写。
此外,TinyScheme用作GIMP的脚本语言,其中一些变体用于嵌入式系统。
答案 14 :(得分:2)
是的!方案非常有趣。我在滑铁卢大学的第一年学到了这一点。一开始有点不同,特别是如果你来自OOP /命令背景。
它为你做了许多美好的事情,功能范式绝对是你应该探索的范畴,如果只是为了获得不同的视角,那就是它。
它也非常有用,例如,我只为C的超简化版本编写了一个编译器,我无法想象没有函数式语言(
答案 15 :(得分:2)
绝对。 Scheme适用于许多不同类别的问题。 Jim Blandy正在研究Scheme called Minor的一个版本,该版本与本机系统更紧密地集成在一起,并且具有高性能。
我知道LilyPond使用Guile进行扩展,虽然我不知道我认为LilyPond是软件的理想光照,因为它严重伤害了我的OS X安装......
答案 16 :(得分:1)
Scheme主要用于教学目的。这是没有标准模块系统直到(有争议的)RSR6系统的一个原因:当编写小作业做家庭作业时,需要大量的大型库是不常见的。
Scheme开始是一个将类似Smalltalk的OOP添加到Lisp的实验。它最终更改了宏系统,添加了call/cc
(和dynamic-wind
,dynamic-unwind
),并且增长了很多。
除了使用Guile作为脚本语言的GNU项目之外,我不知道任何使用Scheme的生产系统。我确实知道一些使用Lisp的生产系统(Orbitz has Lisp code in its reservation system)。
答案 17 :(得分:1)
这些天我正在玩IronScheme,但不知道有谁使用Scheme进行实际工作。
答案 18 :(得分:1)
我最近在stackoverflow播客上听说Reddit最初是在LISP中写的!
答案 19 :(得分:1)
我已经学习了Scheme超过2年了,它对我作为一名程序员有很大的帮助。它教会了我如何以不同的方式思考并理解编程语言之间更深层的概念和联系。事实上,你可以像在Java和C中一样在Scheme中编写任何程序,但这很困难。在将其解释为Java或C代码之前,必须进行一系列程序转换。至少在学习基础知识时是值得的。
答案 20 :(得分:0)
我正在我的程序语言设计课程中学习它,它有一些巧妙的用途。我只会将它用于一个易于尾递归的问题。