【问题标题】:Benefits of learning scheme?学习计划的好处?
【发布时间】:2010-09-11 01:11:17
【问题描述】:

我刚刚开始了我的一门课程,因为课程刚刚开始 2 周前,我们现在正在在一门课程中学习 Scheme,因为我认为稍后会出现某种原因,但到目前为止,他所教的基本上是如何写在方案中。当我坐在这里试图保持清醒时,我只是想了解为什么我想知道这个,以及为什么有人使用它。它擅长什么?下周我打算问他,在这里学习的目标是什么,而不仅仅是如何在计划中写东西。

【问题讨论】:

  • 顺便说一句,我觉得你的用户名是“鸡”并且质疑Scheme的价值是非常有钱的! call-with-current-continuation.org
  • 你开始学习Scheme已经快4年了。我很好奇你认为学习它的好处是什么。

标签: scheme


【解决方案1】:

Scheme 等函数式语言在数学、人工智能、语言学和其他高度理论化的计算机科学领域(机器学习、自然语言处理等)有很大的应用。这是由于没有副作用的函数式编程语言的纯度,以及它们轻松导航高阶程序的能力。对函数式编程语言的深入了解对于解决许多刚刚超出计算机科学前沿的问题至关重要。作为奖励,你会在高阶过程和递归方面做得很好。

【讨论】:

  • Scheme 不是纯函数式语言。
  • 没错,但如果您使用的 Scheme 主要是非功能性的,那么您不应该使用 Scheme。任何学习 Scheme 而又没有对函数式编程有扎实理解的人都没有成功地“学习”过 Scheme。
【解决方案2】:

我建议在学习时保持开放的心态。在学校的大部分时间里,我们并不完全理解我们在学习特定科目的内容/原因。但正如我在生活中经历了大约一百万次一样,事实证明它非常有用,并且至少意识到它会对你有所帮助。不管你信不信,Scheme 会让你成为一个更好的程序员。

【讨论】:

    【解决方案3】:

    尽量不要纠结于括号和 car/cdr 等细节。您正在学习的大部分内容都以一种或另一种方式翻译成其他语言。不要担心你是否可以将 Scheme 带到市场,你很可能会在其他课程中学习一些其他更具市场价值的语言。你在这里学到的东西更重要。

    如果您正在学习方案,则可以了解对象系统的实现方式(提示:对象系统并不总是与绑定了方法和实例变量的类型有关......)。虽然这种知识对你 95% 的日常工作没有帮助,但对于你 5% 的工作,你将依赖于这些知识。

    此外,您还可以了解完全不同的计算风格,例如流/惰性求值,甚至逻辑编程。您还可以了解更多关于一般计算机程序是如何被解释的;从如何评估程序代码的基础知识,到更深层次的方面,例如制作自己的解释器和编译器)。了解这类信息是优秀程序员与优秀程序员的区别。

    Scheme 并不是真正的函数式语言,它与方法无关。也许更重要的是,如果您想探索不同的计算方法,Scheme 是一种很好的语言选择。例如,在 Scheme 之上构建了一种高度并行的函数式语言“Termite”。

    简而言之,学习计划的重点是让您可以学习编程的基础知识。

    如果您需要一些帮助以使方案编程更愉快,请不要害怕提出要求。许多程序员(例如)被括号挂断了,当有完美的方法来使用方案源代码时,使括号成为珍惜而不是讨厌的东西。例如,带有 paredit-mode、某种方案交互模式和 highlight-parenthesis-mode 的 emacs 非常棒。

    【讨论】:

      【解决方案4】:

      NASA 使用该方案对一些火星探测器进行编程。它在市场上的使用非常具体,但我相信你的老师会告诉你,你在 Scheme 中学到的东西会延续到一般的编程中。

      【讨论】:

        【解决方案5】:

        我在这里看到所有这些人都说,虽然他们再也不会真正使用 Scheme,但它仍然是一门值得学习的语言,因为它强制了某种思维方式。虽然这可能是真的,但我希望您学习 Scheme,因为您最终会发现它很有用,而不仅仅是作为学习练习。

        虽然它不像编译语言那样快得惊人,在服务网站或解析文本方面也不是特别有用,但我发现 Scheme(以及其他扩展的 lisps)在简单、优雅和复杂数据结构的强大功能操作。老实说,我认为在 Scheme 中。这是我解决问题的语言。不要放弃或仅仅容忍 Scheme - 给它一个机会,它不会让你失望。

        顺便说一下,Scheme 的最佳 IDE 是 DrScheme,它包含语言扩展,可以做任何你可以用另一种语言做的事情,如果你发现它不能做的事情,你可以使用 C FFI 并编写自己动手。

        【讨论】:

          【解决方案6】:

          LISP(以及与之密切相关的 Scheme)之类的语言之于编程就像拉丁语之于英语一样。

          你可能在学习完课程后,在日常生活中再也不会说拉丁语了,但只要学习一门像拉丁语这样的语言,就能提高你使用英语的能力。

          Scheme 也是如此。

          【讨论】:

            【解决方案7】:

            有人说,Scheme 的最大优势在于作为一种教学语言。虽然学习函数式编程非常有益(这是一种全新的思维方式),但学习方案的另一个好处是它也是“纯粹的”。当然它不能做很多像 java 这样的事情,但这也是它的优点,它是一种完全由括号、字母数字字符和少数其他标点符号组成的语言。

            在我的入门课程中,我们学习了 Java,我看到很多朋友都在为“public static void main”而苦苦挣扎,尽管这不是程序的重点,而且教授们别无选择,只能“挥手”它直到他们更先进。你在 Scheme 中看不到这一点。

            如果你真的想了解Scheme 可以在Java 等语言中很难实现的小菜一碟,我建议看看这个:http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-12.html#%_sec_1.3

            这可能是关于 Scheme 的最好的书。

            【讨论】:

              【解决方案8】:

              我的问题是,在学习这个的时候,我们同时学习了 clisp。为了保命,我没法守住两条海峡。

              我从他们身上学到的是如何编写更好的 c 和 java 代码。这仅仅是因为我学到了不同的编程风格。我已经将更多的函数式风格应用到我的一些编程中,并且在某些情况下它对我有所帮助。

              如果我没有必要,我再也不想用 scheme 或 lisp 编程了,但我很高兴我至少在它们中做了一点,只是为了学习不同的编程方式。

              【讨论】:

                【解决方案9】:

                它是一种函数式编程语言,可以很好地拓宽您的经验。

                即使您不在现实世界中使用它也不意味着它没有任何价值。它将帮助您掌握递归之类的知识,并帮助您以与平常不同的方式思考问题。

                希望我的学校强迫我们学习一门函数式编程语言。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2020-11-22
                  • 2016-11-21
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-01-04
                  • 2011-08-05
                  相关资源
                  最近更新 更多