我发现了学习函数式编程的错误。所以我的 下一个自学项目是通过Structure and Interpretation of Computer Programs。不幸的是,我从来没有 我学习了Lisp,因为我不是大学的CS专业。
虽然SICP没有强调编程工具,但是做了 练习需要选择一种类似Lisp的语言。这好像是 Scheme的某些实现将是最少的路径 抵抗性。另一方面,我听说其他人使用了Common Lisp和Clojure。在我看来,Common Lisp或Clojure会是 更有可能在生产代码中使用,因此略有用处 我的简历更好。顺便说一句,我完全得到了学习a的论点 语言本身是值得的,但学习一种语言 帮助我的简历仍然是一个好处。我是资本家和学者 关于我的学习。
如果您必须自学SICP,您会选择哪种语言?为什么? 理想情况下,我想使用可以在JVM上运行的语言。 我当然可以使用REPL与bash一起工作的语言 和emacs。
附加:你们有没有尝试过不使用Scheme阅读SICP?如果是这样,你的经历是什么样的?
答案 0 :(得分:40)
使用Scheme。它是现存最简单,最简单的语言之一,您将花费很少的时间学习它以理解SICP。一旦理解了SICP,您将看到这些概念如何适用于任何语言。
答案 1 :(得分:22)
使用 DrScheme 。正如其他人所说,Scheme是一种简单的语言,DrScheme是一个很好的使用它的环境,其中有很多支持和中等到良好的文档。
答案 2 :(得分:9)
不是直接的答案,但我希望这些信息对于通过SICP工作的任何人都有用。请务必查看视频:
http://swiss.csail.mit.edu/classes/6.001/abelson-sussman-lectures/
每集有20集,每集一小时。他们于1986年由Abelson和Sussman为Hewlett Packard员工颁发。我把它们放在我的iPod上并在通勤时观看它们。迷人。
此外,本书的全文可在http://mitpress.mit.edu/sicp/
在线获取答案 3 :(得分:4)
作为雇用员工的人,我会告诉你,在简历上使用Scheme是一件好事。在你的简历中有Scheme,SML,Ocaml或Haskell表明你是一个非常全面的程序员,而且是一个思想家。
那就是说,如果你正在尝试函数式编程,为什么不用Haskell呢? Scheme是多范式的,它可以是OO,Funcitonal,Streams,或者在阳光下的任何其他东西。这使得尝试新的编程风格和范例变得非常棒,但如果你的目标是严格的功能,那么它可能是一个问题。 (你最终会编写非功能代码而没有实现它。)
答案 4 :(得分:4)
我同意你应该使用Scheme。但是,如果你真的有使用Common Lisp或Clojure的痒,我会选择后者。 Scheme和Clojure都是Lisp-1,所以书中的代码在两者之间会更加一致(尾部调用除外,但如果你理解如何补偿你就没问题)。 Common Lisp是一个Lisp-2,可能会掩盖SICP试图教你的美丽。
答案 5 :(得分:3)
本书中的代码是Scheme,因此无论如何你都必须阅读它 - 你也可以写它。你甚至可能喜欢它!
答案 6 :(得分:3)
我认为Clojure非常适合您想做的事情。它比Scheme更具功能性,因为数据结构是不可变的,并且它在JVM上运行时非常有用。但是,请注意,无论如何,您最终都会学习Scheme,以便能够理解本书中的代码。
答案 7 :(得分:3)
要从书中获得真正的价值,您必须使用Scheme。方案的哪种实施取决于您当前的环境:
Windows - 博士计划(PLT计划) - http://download.plt-scheme.org/ Linux - 如果这是一个远程帐户 - 您可以考虑使用MZScheme(PLTScheme)(http://download.plt-scheme.org/),否则如果这是Linux的本地实例,您将需要使用Dr Scheme。
答案 8 :(得分:2)
当我看到sicp时,我用了lua
效果很好
答案 9 :(得分:2)
警告:我还没看过整本书
由于示例依赖于闭包和延续,因此使用具有这两种功能的语言会更好,否则您需要自己实现它们。
例如,在Scheme中编写metacircular评估器会利用Scheme提供闭包和延续的事实。
答案 10 :(得分:2)
使用除计划之外的任何东西。
在使用其他方式然后进行计划时,我们会鼓励您多思考,并避免仅重新键入示例的诱惑。这是件好事。
当然,它必须足够相似,在lisp-1意义上,所以clojure和arc很好。
答案 11 :(得分:2)
我发现了学习函数式编程的错误。
从我所听到的来看,SICP不仅仅是函数式编程。
答案 12 :(得分:2)
我使用方案进行自学。从SICP学习的最好方法是彻底地做所有的练习。
我使用Gnu guile作为计划。
答案 13 :(得分:2)
虽然您可以使用Scheme之外的其他内容,但您不必要地添加额外的工作,并可能使自己完全无法理解本书的内容。 SICP是一本入门编程书。它是计算机科学更深层次主题的踏脚石。陷入“翻译”的困境从Scheme到CL或Clojure可能会模糊更精细的点。这将是一个耻辱,因为SICP真正是理解编程真正意义的门户。
学习计划非常简单(特别是与CL和Clojure相比),事实上,入门课程和书籍假定学生已经不知道。 CL和Clojure相对于手头的任务承担了相当大的责任。
答案 14 :(得分:1)
我听说过其他人使用过Common Lisp和Clojure。
你应该使用最能激励你的语言,但99%通过SICP工作的人会使用Scheme。
答案 15 :(得分:1)
我今年早些时候完成了大部分工作,并使用了Common Lisp,因为我没有使用Scheme(不要问)。
正如已经注意到的,Scheme是一种Lisp-1语言,而Common Lisp是一种Lisp-2。语言之间有足够的差异意味着你仔细考虑翻译书中的代码,所以它迫使我真正掌握了这些材料。
答案 16 :(得分:0)
但学习一种有助于我的简历的语言仍然是一种好处。
你应该尝试使用VB6或COBOL,因为有一个很多的结算工作。
答案 17 :(得分:0)
我认为Scheme是自然的选择(因为它是SICP的“原生”语言)
然而,由于SICP的真正价值来自概念而不是特定语言的机制,我认为用任何类似Lisp的语言尝试它是一种有价值的学习练习。我亲自尝试过Clojure中的一些练习,但它们的翻译都非常好。
对于那些感兴趣的人,有一个正在进行的项目来创建Clojure translation of SICP。