【问题标题】:How can Lisp make me a better C# developer? [closed]Lisp 如何让我成为更好的 C# 开发人员? [关闭]
【发布时间】:2009-12-08 20:54:47
【问题描述】:

我正在考虑学习一种 Lisp 方言(可能是 Scheme,因为我经常听到它的学习语言有多好),以提高我的一般编程技能。

除了学习任何一种新语言可以帮助你成为一个更好的程序员之外,学习 Lisp 如何让我成为一个更好的 C# 程序员?

【问题讨论】:

  • 谁投票结束了这个?
  • 你也可以考虑 F#。 VS2010 将成为主流。
  • 这是个好主意。 IDE 比语言本身更重要。
  • 谢谢大家。对于最接近的选民 - 为什么?
  • 埃里克,我也想问同样的问题。

标签: c# lisp scheme


【解决方案1】:

为什么函数式编程很重要,作者:John Hughes http://www.cs.chalmers.se/~rjmh/Papers/whyfp.html

Paul Graham 超越平均水平
http://www.paulgraham.com/avg.html

【讨论】:

    【解决方案2】:

    我认为学习函数式语言的最大收获是开始以一种更具声明性、更少命令性的方式进行思考。这将导致编写更具可读性、可维护性和可组合性的代码。

    您在使用函数式时学到的另一件事是纯函数的重要性,即没有副作用的函数。

    而且由于 C# 已经获得了越来越多的函数式和声明性特性,例如闭包(又名 lambda)和 LINQ,您可以更好地理解使用这些构造进行编程。我很容易理解延迟执行,这是最常见的 LINQ 陷阱,因为我已经了解了 Haskell,一种惰性求值的函数式语言。

    【讨论】:

    • 它甚至可以让您更好地使用数据库
    • @somebody:是的,这是一个好处。因为 SQL 是一种声明式语言,所以以声明式的方式思考是有帮助的。
    • 我正在写我自己的答案,但基本上是“Martinho 上面所说的”。以声明方式编写,以功能方式编写——Lisp 将让您从外部角度了解为什么这些都是好东西。不仅仅是“函数式编程风格更容易测试”,而是“哇,看看我的程序有多短和可扩展性,因为它是数据驱动的,或者因为关键逻辑可以作为参数传入”。正如您所说,C# 已经获得了使以这种方式工作更容易的功能。 Lisp 可能会告诉你为什么你在乎。
    • 我接受这个而不是最高票数(在撰写本文时),因为它简洁地回答了问题,而不仅仅是将我引荐给其他来源(我仍然很感激)。
    【解决方案3】:

    Joel 几年前写了一篇文章 about programmers knowing anything but Java ,以及为什么学习像 Scheme 这样的东西是个好主意。我认为这些论点也适用于 C#。另一个很好的理由是,有一本关于编程的非常好的书,'Structure and interpreation of computer programs' by Abelson and Sussman,它使用了 Scheme,可以让你对不同的编程概念有很多新的见解。

    【讨论】:

      【解决方案4】:

      您应该学习 Lisp,以便了解 metaprogramming 的强大功能。如果您还没有这样做,您应该学习使用Emacs 并尝试写一些Emacs Lisp。之后,尝试使用SLIME 继续编程Common Lisp

      【讨论】:

      • 投了赞成票,我说选择 Scheme,而不是 Common Lisp。 ;) 我相信有一些支持 CLR 的方案实现,这可能对原始海报有好处。
      【解决方案5】:

      一方面,您可以从内到外学习递归。

      【讨论】:

      • 你不是说里面再里面吗? :)
      • @Kevin:对我来说,这句话感觉更像是迭代(“and”、“again”)而不是递归。我会说“递归内部递归”之类的。
      • 嗯,对于 Lisp 来说,它确实应该是尾端递归,我不知道如何用英语举例说明这一点。
      【解决方案6】:

      学习 Scheme 的一个很好的理由是它经常被用作一种教学语言。因此,有许多以 Scheme 作为目标语言编写的优秀(学术)书籍和论文。

      谷歌:

      • EOPL
      • SICP
      • HtDP
      • 小/老练/理性的策划者

      【讨论】:

        【解决方案7】:

        只需学习它,然后惊讶地回来告诉我们。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-11-03
          • 1970-01-01
          • 2011-06-29
          • 2011-04-29
          • 1970-01-01
          • 2010-09-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多