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


当前回答

因为FP在生产力、可靠性和可维护性方面有显著的好处。多核可能是一个杀手级应用程序,最终让大公司在大量遗留代码的情况下转换。此外,即使是像c#这样的大型商业语言,也因为多核问题而呈现出一种独特的函数风格——副作用根本不适合并发性和并行性。

我不认为“普通”程序员不能理解它。他们会的,就像他们最终理解了面向对象编程一样(它同样神秘和怪异,如果不是更神秘的话)。

此外,大多数大学都教授FP,许多甚至将其作为第一门编程课程。

其他回答

函数式语言使用不同于命令式语言和面向对象语言的范式。他们使用无副作用函数作为语言的基本构建块。这使得很多事情成为可能,也让很多事情变得更加困难(或者在大多数情况下与人们习惯的不同)。

函数式编程的最大优点之一是无副作用函数的执行顺序并不重要。例如,在Erlang中,这用于以一种非常透明的方式启用并发。 因为函数式语言中的函数与数学函数的行为非常相似,所以很容易将它们翻译成函数式语言。在某些情况下,这可以使代码更具可读性。

传统上,函数式编程的一大缺点也是没有副作用。如果没有IO,很难编写有用的软件,但是如果函数中没有副作用,IO很难实现。因此,大多数人从函数式编程中得到的最多的就是从一个输入计算一个输出。在现代混合范式语言(如f#或Scala)中,这更容易。

许多现代语言都有函数式编程语言的元素。c# 3.0有很多函数式编程特性,你也可以在Python中进行函数式编程。我认为函数式编程流行的原因主要有两个原因:并发正在成为常规编程中的一个真正的问题,因为我们拥有越来越多的多处理器计算机;而且这些语言越来越容易使用。

我同意第一点,但是时代变了。公司会做出回应,即使他们是后期采用者,如果他们看到有一个优势。生活是动态的。

90年代末,他们在斯坦福教授哈斯凯尔和ML。我相信卡内基梅隆大学、麻省理工学院、斯坦福大学和其他一些好学校正在向学生们展示它。

我同意大多数“在网络上公开关系数据库”的应用程序将在很长一段时间内继续这样做。对于这个问题,Java EE、. net、RoR和PHP已经演化出了一些非常好的解决方案。

您发现了一些重要的问题:这可能是其他方法无法轻松解决的问题,而这些方法将促进函数式编程。那是什么?

大规模多核硬件和云计算会推动它们向前发展吗?

很多人都提到了函数式语言。

除了Javascript,还有一些最常用的函数式语言。

Excel、SQL、XSLT、XQuery、J、K等应用于金融领域。

当然是Erlang。

所以我想说,从这个列表中,函数式编程技术每天都在主流中使用。

对我来说,主要的优点是它固有的并行性,特别是当我们现在从更多的MHz转向越来越多的内核时。

我不认为它会成为下一个编程范式并完全取代OO类型方法,但我确实认为我们将会达到这样的境地:要么我们需要用函数式语言编写一些代码,要么我们的通用语言将会发展到包含更多的函数式结构。

f#可能会流行起来,因为微软正在推动它。

Pro:

f#将成为Visual Studio下一个版本的一部分 微软建立社区已经有一段时间了——布道者、书籍、与知名客户合作的顾问,以及在微软会议上的大量曝光。 f#是第一个类。net语言,也是第一个具有强大基础的函数式语言(我不是说Lisp, Haskell, Erlang, Scala, OCaml没有很多库,他们只是没有。net那么完整) 强烈支持并行

合同:

即使你精通c#和。net, f#也很难上手——至少对我来说是这样的:( 可能很难找到好的f#开发人员

所以,我给f# 50:50的机会变得重要。其他函数式语言在不久的将来也不会出现。