【问题标题】:Are there people using the Scheme programming language out there? [closed]那里有人使用 Scheme 编程语言吗? [关闭]
【发布时间】:2008-11-14 19:01:00
【问题描述】:

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

自从我过去 6 年学习 C++ 以来,Scheme 对我来说似乎有点奇怪。我的导师告诉我,你可以用它编写任何可以用 C 或 Java 编写的程序。

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

【问题讨论】:

  • 心存感激!我会为了我的大学在 Scheme 中教书而杀人。
  • 毫无疑问。现在大多数大学都教 Java...
  • 学 Java 没什么不好,但有些大学(我的)专门教 Java,好像 Programming == Java。
  • 不过,至少了解某种 LISPy 语言非常有用。我在工业界,我的团队正在使用 Clojure 进行相当多的新开发;如果我们正在寻找实习生,Scheme 经验将是一个很大的优势。
  • ESR 的观点在这里也值得注意:“LISP 值得学习的另一个原因——当你最终获得它时,你将获得深刻的启蒙体验。这种体验将使你成为一个更好的程序员。你的日子,即使你从来没有真正使用过 LISP 本身”

标签: scheme


【解决方案1】:

据我所知,使用它的人并不多,但它绝对值得一看(即使只是尝试在另一种范式中编程,以便您学会以不同的方式思考)。您很幸运能够参加使用 Scheme 的课程,因为现在大多数大学都教授 Java。如果您想观看麻省理工学院的一些讲座或研究示例问题等,这里是一个很好的链接。

MIT Open Courseware - Structure and Interpretation Of Computer Programs

还有一本免费的附书available on-line(计算机程序的结构和解释)。

更新:

对于那些对与使用 JVM 并可以访问 Java 库(因为许多大学都使用 Java)的方案相似的语言感兴趣的人,请查看 Clojure。也许这将成为计算机科学介绍的新语言选择(我们都希望!)。

【讨论】:

  • 虽然有传言说 MIT 正在从 Scheme 转向 Python:lambda-the-ultimate.org/node/3312
  • 不只是谣言;麻省理工学院已经将他们的 CS 课程介绍(MIT6.00)从 Scheme 转换为 Python,放弃了 SICP(这本书和课程名称),并改用 Allen Downey 的“如何像计算机科学家一样思考”。不过,伯克利的 CS61A 仍然使用 SICP 和 Scheme。
  • @Alex:Berkeley 现在也跳了上去,从下学期开始改用 Python(我猜 Harvey,真正了不起的 61A 教授,不再教它了)。我认为这真的很不幸——61A with Scheme 是一门出色的 CS 课程,我真的很幸运,因为我在倒数第二个学期参加了它。
  • 我是一名经验丰富的程序员,一年前我观看了这些讲座,非常精彩,纯粹的快乐。我还偷看了新的 Python 讲座视频,这是一场灾难。不是因为python,而是因为讲师。材料充满了错误。
  • @VisakhVA 这取决于你在做什么。您是否打算转换具有特定需求的现有程序?或者你只是想学习一些新的和有趣的东西?如果你想坚持使用另一种 Lisp 方言,我建议使用 Clojure。如果你想要一些有趣的东西(Clojure 就是这样),我现在最喜欢的两种编程语言是 Elixir 和 F#。
【解决方案2】:

Square USA 用它制作了电影最终幻想

这是他们在上面发表的一篇论文:Gluing Things Together - Scheme in the Real-time CG Content Production

来自那篇论文:

在 SIGGRAPH 2000 和 2001 上,我们 Square USA 研发团队展示了对完整计算机生成的电影“最终幻想:灵魂深处”的场景的实时渲染。

[...]

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

【讨论】:

    【解决方案3】:

    方案将使您对编程有不同的看法。试着保持开放的心态!

    【讨论】:

      【解决方案4】:

      “真的有人在用这个吗 语言?”

      Paul Graham,著名的。

      【讨论】:

      • 嗯,方言。他的咆哮和底部的链接仍然适用。
      • 这个 stackoverflow 问题的症结也总结在 Paul Graham 的一句话中:“我想我应该学习 Lisp,但它似乎很陌生。”
      • Paul Graham 使用 Scheme 方言来实现 Arc:paulgraham.com/arc0.html(“MzScheme,当前版本的 Arc 编译为 ...”)。
      【解决方案5】:

      JavaScript 在很多方面都与 Scheme 非常相似(尽管它缺少延续和 Scheme 的高级数值系统)。

      来自“ECMAScript Language Overview”(PDF)。 2007 年 10 月 23 日。第 4 页。检索于 2009 年 5 月 3 日。

      ES3 是一个简单的、高度动态的、 基于对象的语言 语言自身的主要思想 和计划。编程风格是 基于对象和功能的混合 编程:初级抽象 ES3 中的机制是词法范围的 高阶函数和可变的 对象...

      【讨论】:

        【解决方案6】:

        我目前正在学习SICP lectures that Abelson and Sussman gave at Hewlett-Packard in 1986Cal-Berkeley CS61A podcasts given by Brian Harvey(由同一个book 教授)并在Scheme 中学习,这段经历为我开辟了全新的思维方式。对于像我这样没有接受过正规 CS 高等教育的人,我强烈推荐它...

        【讨论】:

          【解决方案7】:

          我曾在一个项目中使用方案代码在生产中工作,它可能是非常酷的东西。 Scheme 有 dynamically recompiling to self-optimize execution 这个很酷的功能。我觉得离天网只有一步之遥。

          【讨论】:

          • 你能再扩展一点吗?听起来很酷,但必须下载 PDF 才能阅读它有点尴尬……
          【解决方案8】:

          我在大学里用过它,但从那以后我就没怎么用过。

          如果您对递归完全不满意,我强烈建议您学习 Scheme 或 Lisp。你将学会递归地思考各种各样的事情。递归总是正确的方法吗?当然不是。但它是工具箱中的一个有用工具。

          我总是鼓励开发人员学习新语言。你学习和精通的语言越多,你对问题的思考就越抽象。您与特定语言的联系越少,您就越有可能选择最适合您的问题的语言。

          【讨论】:

            【解决方案9】:

            除了个人经验之外,最接近客观猜测的是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

            【讨论】:

              【解决方案10】:

              在俄罗斯,我们使用 PLT Scheme 开发软件。而且卖得很好;)

              【讨论】:

                【解决方案11】:

                Clojure 是一种类似于 Scheme/Lisp 的语言,可以在 JVM 中运行,并且非常适合并行处理(据说)。使用 Clojure 的好处是您可以访问整个 Java API 以及任何其他 Java 库。

                Clojure 和 Scala 一样受到语言爱好者的欢迎。

                【讨论】:

                  【解决方案12】:

                  只要付出足够的努力,所有语言都可以用来写任何东西:)

                  但是,Scheme 非常酷 - 根据我的经验,了解 Scheme 往往会影响您使用其他语言进行编程。

                  Scheme 宏非常强大,并且 call-with-current-continuation 是一种思维扭曲功能。

                  经典测试是计算机程序的结构和解释(“SICP”)。值得一读。

                  【讨论】:

                    【解决方案13】:

                    Java 平台的方案实现有很多,它们用于Java 应用程序的脚本和原型设计。方案中存在基于 continuation 的 J2EE Web 框架,称为SISCWeb

                    Guile 方案在一些 GNU 应用程序中用作脚本语言 - 例如 GnuCash 主要是用 Scheme 编写的。

                    TinyScheme 也用作 GIMP 的脚本语言,它的一些变体用于嵌入式系统。

                    【讨论】:

                      【解决方案14】:

                      是的!方案很有趣。我在滑铁卢大学的第一年就学会了它。一开始有点不同,特别是如果您来自 OOP/命令式背景。

                      它为你做了很多好事,而函数式范式绝对是你应该探索的,如果只是为了获得不同的视角。

                      也蛮好用的,比如我刚做了一个超简化版C的编译器,没有函数式语言我是无法想象的(:

                      【讨论】:

                        【解决方案15】:

                        Jazz Scheme 是一个基于 Gambit Scheme 的开源方案环境,它似乎在积极推广工业用途,请查看:

                        Jazz Scheme

                        他们在新闻中报道新用途:

                        Jazz Scheme News

                        根据this 页面,Scheme 正在(或曾经)在以下公司使用:DEC、TI、Tektronix、HP 和 Sun。

                        This guy 的 LinkedIn 简历报告在迪士尼使用 Chez Scheme。

                        只需用谷歌搜索一下就可以发现很多。在这种情况下,它证实了我曾经听说过 Scheme 的使用非常普遍,只是不是很公开的观察。

                        【讨论】:

                        【解决方案16】:

                        当然。 Scheme 适用于许多不同类别的问题。 Jim Blandy 正在开发一个版本的 Scheme called Minor,它与本地系统更紧密地集成在一起,并且旨在提高性能。

                        我知道 LilyPond 使用 Guile 来实现可扩展性,但我不知道我是否会将 LilyPond 视为理想的软件示例,因为它严重损害了我的 OS X 安装...

                        【讨论】:

                          【解决方案17】:

                          这些天我在玩 IronScheme,但不知道有谁在实际工作中使用 Scheme。

                          【讨论】:

                            【解决方案18】:

                            我最近在 stackoverflow 播客上听说 Reddit 最初是用 LISP 编写的!

                            【讨论】:

                            • 我认为 digg 是用 PHP 完成的。
                            • Digg 一直是用 PHP 编写的。我确定您正在考虑 Reddit。
                            【解决方案19】:

                            方案主要用于教学目的。这就是在(有争议的)RSR6 之前没有标准模块系统的原因之一:为家庭作业编写小程序时,需要大量大型库是不寻常的。

                            Scheme 最初是一项将类似于 Smalltalk 的 OOP 添加到 Lisp 的实验。它最终改变了宏系统,添加了call/cc(和dynamic-winddynamic-unwind),并且增长了不少。

                            除了使用 Guile 作为脚本语言的 GNU 项目之外,我不知道任何使用 Scheme 的生产系统。不过,我确实知道一些使用 Lisp 的生产系统 (Orbitz has Lisp code in its reservation system)。

                            【讨论】:

                            • “方案开始是作为向 Lisp 添加类似 Smalltalk 的 OOP 的实验。”,对吗?请引用。
                            • Guy Steele (dreamsongs.com/ObjectsHaveNotFailedNarr.html):“Scheme 编程语言诞生于 1975 年的一次尝试,旨在用 Gerry Sussman 和我能够理解的术语来解释面向对象的编程。特别是,我们想要可以说,用一个音节的话重述卡尔·休伊特的演员理论。”紧随其后的是en.wikipedia.org/wiki/Actor_model#History
                            • 在听了 Smalltalk 播客后,我写了原始答案,客人说了我写的内容:Scheme 是在 Lisp 中传递类似 Smalltalk 的消息的实验。不过,看看当时做实验的人所说的,这是尝试在 Lisp 中尝试演员的努力,演员受到 Smalltalk(和其他系统)的启发。
                            • 有趣,谢谢。
                            【解决方案20】:

                            我学习 Scheme 已有 2 年多了,它对我作为一名程序员有很大帮助。它教会了我如何以不同的方式思考并理解编程语言之间更深层次的概念和联系。事实上,您可以像在 Java 和 C 中一样在 Scheme 中编写任何程序,但这是相当困难的。在将其解释为 Java 或 C 代码之前,必须进行一系列程序转换。至少学习基础知识是值得的。

                            【讨论】:

                              【解决方案21】:

                              我正在我的程序语言设计课上学习它,它有一些巧妙的用途。我只会将它用于容易导致尾递归的问题。

                              【讨论】:

                                猜你喜欢
                                • 2022-08-07
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 2023-03-28
                                • 2019-12-22
                                • 2018-02-22
                                • 2011-02-22
                                • 1970-01-01
                                相关资源
                                最近更新 更多