我在这里看到很多关于函数式语言的讨论。为什么你要使用传统语言而不是传统语言呢?他们在哪些方面做得更好?他们更不擅长什么?理想的函数式编程应用程序是什么?


当前回答

大学里并没有真正教授(或者现在有吗?)

我不知道现在的情况,但在90年代中期,我在计算机科学课程中学习了米兰达语言和Lisp语言。尽管从那以后没有使用纯函数语言,但它影响了我解决问题的方式。

大多数应用程序都足够简单,可以用正常的面向对象方法解决

在90年代中期的CS课程中,面向对象(使用Eiffel教授)的教学与函数式编程相当。两者在当时都是非主流的。面向对象现在可能是“正常”的,但过去并非如此。

我很有兴趣看看f#是否是将FP推向主流的东西。

其他回答

一般的公司程序员,例如。 和我一起工作的大多数人都会 不懂它和大多数工作 环境不允许您编程 在这

不过,这只是时间问题。一般的公司程序员都在学习当前的大事。15年前,他们不懂面向对象编程。 如果FP流行起来,你的“普通公司程序员”也会跟上。

大学里并没有教过 (还是现在?)

变化很大。在我的大学里,SML是学生接触的第一门语言。 我相信麻省理工学院将LISP作为第一年的课程。当然,这两个例子可能不具有代表性,但我相信大多数大学至少提供了一些关于政策政策的选修课,即使他们没有将其作为课程的必修课。

大多数应用程序都很简单 可以用正常的面向对象方法解决

这并不是一个“足够简单”的问题。在FP中,解决方案会更简单(或更可读、更健壮、更优雅、更高效)吗?许多事情“简单到可以用Java解决”,但它仍然需要大量的代码。

无论如何,请记住,政策政策的支持者几十年来一直声称这是下一个大事件。也许他们是对的,但请记住,5年、10年或15年前他们做出同样的声明时,他们是不对的。

不过,有一件事肯定是对他们有利的,那就是最近,c#向FP的方向急转直下,在某种程度上,它实际上正在把一代程序员变成FP程序员,而他们甚至没有注意到。这可能会为计划生育“革命”铺平道路。也许吧。;)

大学里并没有真正教授(或者现在有吗?)

我不知道现在的情况,但在90年代中期,我在计算机科学课程中学习了米兰达语言和Lisp语言。尽管从那以后没有使用纯函数语言,但它影响了我解决问题的方式。

大多数应用程序都足够简单,可以用正常的面向对象方法解决

在90年代中期的CS课程中,面向对象(使用Eiffel教授)的教学与函数式编程相当。两者在当时都是非主流的。面向对象现在可能是“正常”的,但过去并非如此。

我很有兴趣看看f#是否是将FP推向主流的东西。

我的观点是,既然微软已经把它推向了主流,它就会流行起来。对我来说,它很有吸引力,因为它能为我们做什么,因为它是一个新的挑战,因为它为未来提供了工作机会。

一旦掌握了它,它将成为进一步帮助我们提高编程效率的另一个工具。

即使您从未专业地使用过函数式语言,了解函数式编程也会使您成为更好的开发人员。它会给你一个新的视角来看待你的代码和编程。

我认为没有理由不去学习它。

我认为能够很好地混合函数式和命令式风格的语言是最有趣的,也是最有可能成功的。

Slava Akhmechet写了一篇很棒的文章,叫做《函数式编程》(顺便说一下,正是这篇文章让我开始接触FP)。在FP带来的好处中,他非常规地强调了以下几点(我认为这有助于软件工程师的吸引力):

单元测试 调试 并发性 热码部署 机器辅助证明与优化

然后继续讨论FP中更多传统讨论的方面的优点,如高阶函数、咖喱、惰性求值、优化、抽象控制结构(尽管没有讨论单子)、无限数据结构、严格性、延续、模式匹配、闭包等。

强烈推荐!