Scheme 对于一个新的(ish)程序员来说,学习Lisp会非常困难吗?

Scheme 对于一个新的(ish)程序员来说,学习Lisp会非常困难吗?,scheme,lisp,common-lisp,Scheme,Lisp,Common Lisp,我对Python有一点经验(足够做if/else/elif和一些随机数生成),但我对Lisp语言总是有一种奇怪的迷恋。我下载了一些scheme源代码来查看语法,但对我来说,这简直是胡言乱语 对于像我这样只有一点编程经验的程序员来说,考虑到一些好书、网站和一些时间,学习CommonLisp或Scheme会特别困难吗? 这两者中哪一个更容易?就易学性而言,它们与Python和C相比如何 谢谢Get(计算机程序的结构和解释)。直到最近,它还是麻省理工学院入门级CS课程的教科书。这完全是基于计划的。如果

我对Python有一点经验(足够做if/else/elif和一些随机数生成),但我对Lisp语言总是有一种奇怪的迷恋。我下载了一些scheme源代码来查看语法,但对我来说,这简直是胡言乱语

对于像我这样只有一点编程经验的程序员来说,考虑到一些好书、网站和一些时间,学习CommonLisp或Scheme会特别困难吗? 这两者中哪一个更容易?就易学性而言,它们与Python和C相比如何


谢谢

Get(计算机程序的结构和解释)。直到最近,它还是麻省理工学院入门级CS课程的教科书。这完全是基于计划的。如果你喜欢CS,你会喜欢这本书的。太棒了。在阅读之后(最好是做了大部分练习),你也会成为一个更好的程序员。这是一本理想的初学者读物,它从一开始就让你很容易胜任这个计划。然而,这是一本大学教科书,所以除非你有一点编程的诀窍,否则它可能有点难。

Scheme(有意地)比Common Lisp更紧凑,你会发现你可以很快学会这门语言。现在,掌握(任何)语言和计算机科学概念是另一回事了,@Matt Greer的书建议将是一个很好的起点。

Lisp不难学。它可能教得不好,而且它确实有一些“高级”概念,特别是如果你来自命令式的“经典”编程世界

但今天,现代语言的许多方面都和Lisp提供的非常相似,所以和其他语言(尤其是Python)相比,Lisp中可能并没有多少“新”之处

我的Lisp(和Scheme)的“障碍”就是“lambda”。从本质上说,我的根本问题是,我与“lambda”是什么以及为什么它被称为“lambda”没有任何关系

如果它被命名为“函数”或“例程”之类的东西,它将是微不足道的。但事实上,“lambda”一词毫无意义。他们可以称之为“莫克”、“布莱姆”或“菲兹宾”,它也同样有用

有一次我摸索了一下“lambda”,其余的都适应了

如果您对Lisp感兴趣(即本质上来自Lisp家族的语言),那么Scheme是一个不错的选择。但是,Scheme不是常见的Lisp(这是“Lisp”今天的典型含义),它们实际上是不同的语言

如果您想学习CommonLisp,我将从CommonLisp和SkipScheme开始

可以这样说,您不需要“学习”就可以开始编写Lisp

如果有一些好书、网站和一些时间,学习CommonLisp或Scheme会特别困难吗

否。

这两者中哪一个更容易

方案,因为

  • 是的

  • 它有一个新的名字

  • 它比较小

就易学性而言,它们与Python和C相比如何

我认为学习C要比学习Python或Scheme更难,因为要学习C,你必须学习机器模型、指针和动态内存

在Scheme和Python之间,很难预测每个学习者的反应。我真的很喜欢Python的显著空白,我觉得Scheme的括号很烦人,也很分散我的注意力。很多人真的很喜欢Scheme的括号,他们觉得Python显著的空格很烦人,让人分心。(虽然存在重要的语义差异,但很难摆脱语法的束缚。)

我应该用什么书?(你本该问但没问的问题)

不要使用计算机程序的结构和解释(SICP)。那本书的观点是“让我们通过将所有计算机科学编码到Scheme中来展示我们有多聪明。”这本书是一个巨大的智力之旅,但它根本不适合初学者。当麻省理工学院在6.001中使用它时,它是一门“周末”课程,因为30-40%的麻省理工学院学生想主修EEC,他们试图把人们拒之门外。SCIP对于高年级CS学生或有5年经验的程序员来说是一个极好的选择。不要试图从中学习

有些好书值得学习:

  • Felleisen等人经过多年的经验精心制作和磨练。它使用Scheme并准确地告诉您它在标题中声称的内容。强烈推荐

  • 哈维和赖特写的这本介绍CS的书是由那些认为SCIP需要“前传”的人写的。我很喜欢读它,但我没有从中教书

  • 《如果你能忍受可爱》,作者费莱森和弗里德曼有一种非常不寻常的辩证风格,有大量的例子,你可能会喜欢


我想说,作为一名新程序员,Lisp比等待更容易学习。这是因为大多数语言鼓励你思考编程的方式是学习Lisp的障碍;熟悉更传统的语言可能会在某些方面有所帮助,但不会因为Lisp的独特性而有所帮助

Scheme——我最熟悉的Lisp——可能和Python一样容易学习,特别是如果您选择PLT Scheme(现在改名为Racket),它为您提供了许多有用的扩展。CommonLisp可能也有同样的困难,尽管我发现它不那么本能,原因可能并不普遍。我发现C语言比这两种语言都难,这是诺曼·拉姆齐提出的原因

我建议你学什么,很大程度上取决于你想用它做什么。如果你想学习一门没有虚饰的清晰语言,它的核心可以很快学会,那么就学习一个实现R5的方案