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


当前回答

我不认为函数式编程方法“流行起来”有任何问题,因为它(作为一种编程风格)已经被使用了大约40年。每当OO程序员编写有利于不可变对象的干净代码时,这些代码就是借用了函数概念。

然而,这些天来,强制函数式风格的语言正在获得大量的虚拟墨水,这些语言是否会在未来占据主导地位是一个悬而未决的问题。我自己的怀疑是混合的、多范式的语言,如Scala或OCaml 将很可能统治“纯粹的”函数语言,就像纯粹的OO语言(Smalltalk、Beta等)影响了主流编程一样,但还没有成为最广泛使用的表示法。

最后,我忍不住要指出,你对FP的评论与我几年前从过程程序员那里听到的评论高度相似:

(恕我直言,这是神话)“普通”程序员不理解它。 这并没有被广泛教授。 任何你能用它来写的程序,都能用现有的技术以另一种方式来写。

Just as graphical user interfaces and "code as a model of the business" were concepts that helped OO become more widely appreciated, I believe that increased use of immutability and simpler (massive) parallelism will help more programmers see the benefits that the functional approach offers. But as much as we've learned in the past 50 or so years that make up the entire history of digital computer programming, I think we still have much to learn. Twenty years from now, programmers will look back in amazement at the primitive nature of the tools we're currently using, including the now-popular OO and FP languages.

其他回答

它已经在Hadoop中的Map/reduce中流行起来

我认为函数式编程语言成为“下一个大事件”的最大理由是,在未来,多核处理器将成为标准。程序员将不得不利用这一点,而函数式编程为构建顶级并发软件提供了极好的可能性。

附注:当我在波士顿大学(1998 - 02)读大学时,我们花了一个学期学习Scheme,它是LISP的近亲。我们刚开始学的时候,我都想把头发扯下来。课程结束时,一切都变得很自然了。

在我看来,那些从未在本科阶段学习过Lisp或Scheme的人现在正在发现它。与这个领域的许多事情一样,有一种炒作和创造高期望的倾向……

一切都会过去的。

函数式编程很棒。然而,它不会统治世界。C、c++、Java、c#等语言仍将存在。

我认为这会带来更多的跨语言能力——例如,用函数式语言实现一些东西,然后用其他语言访问这些东西。

我要指出的是,你所说的关于函数式语言的一切,大约20年前,大多数人都在谈论面向对象语言。在那时候,OO是很常见的:

* The average corporate programmer, e.g. most of the people I work with, will not understand it and most work environments will not let you program in it
* It's not really taught at universities (or is it nowadays?)
* Most applications are simple enough to be solved in normal IMPERATIVE ways

改变必须来自某个地方。无论接受过早期技术培训的人是否认为变革没有必要,有意义的重要变革都会发生。尽管当时有很多人反对,但你认为向OO的转变是好的吗?

为什么函数式编程很重要