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


当前回答

I don't know whether it will catch on or not, but from my investigations, a functional language is almost certainly worth learning, and will make you a better programmer. Just understanding referential transparency makes a lot of design decisions so much easier- and the resulting programs much easier to reason about. Basically, if you run into a problem, then it tends to only be a problem with the output of a single function, rather than a problem with an inconsistant state, which could have been caused by any of the hundreds of classes/methods/functions in an imparative language with side effects.

FP的无状态本质更自然地映射到web的无状态本质,因此函数式语言更容易让自己更优雅,更RESTFUL的web应用程序。与JAVA和. net框架形成鲜明对比的是,它们需要在本质上无状态的功能平台(如web)上使用VIEWSTATE和SESSION键来维护应用程序状态,并维护有状态命令语言的抽象(有时相当容易泄漏)。

而且,应用程序越无状态,就越容易进行并行处理。如果你的网站很受欢迎,这对网络来说非常重要。向站点添加更多硬件以获得更好的性能并不总是那么简单。

其他回答

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

一切都会过去的。

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

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

函数式编程将很可能成为工程师和科学家用来解决他们所面临的问题的工具。它不会像早期的语言那样占领世界。然而,最难打败的产品是Excel,如果我是一名工程师,需要做计算,Excel是很棒的。

However, F# is going to be another source and will likely fill design needs by the non-Computer Scientists. Let's face it, Computer Scientists have done a great job of creating a WHOLE new way of doing things. Object Oriented Programming is GREAT. But sometimes you just need a way to solve an equation, get a solution and graph it. That's it. Then a language like F# fills the bill. Or maybe you want to build a finite state machine, F# again could be one of the solutions, but then C could be a solution as well.

但是当涉及到并行处理时,Excel大放异彩,f#也会及时出现。但是要以友好的方式,F#= friendly。

I don't know whether it will catch on or not, but from my investigations, a functional language is almost certainly worth learning, and will make you a better programmer. Just understanding referential transparency makes a lot of design decisions so much easier- and the resulting programs much easier to reason about. Basically, if you run into a problem, then it tends to only be a problem with the output of a single function, rather than a problem with an inconsistant state, which could have been caused by any of the hundreds of classes/methods/functions in an imparative language with side effects.

FP的无状态本质更自然地映射到web的无状态本质,因此函数式语言更容易让自己更优雅,更RESTFUL的web应用程序。与JAVA和. net框架形成鲜明对比的是,它们需要在本质上无状态的功能平台(如web)上使用VIEWSTATE和SESSION键来维护应用程序状态,并维护有状态命令语言的抽象(有时相当容易泄漏)。

而且,应用程序越无状态,就越容易进行并行处理。如果你的网站很受欢迎,这对网络来说非常重要。向站点添加更多硬件以获得更好的性能并不总是那么简单。

实际上,在阅读了《黑客与画家》之后,我正在学习LISP,我相信我会从LISP中学到一些东西,这将使我更好地理解我所编程的其他东西。现在我不认为我会在我的日常生活中使用LISP,只是因为有人在1995年创建了一个网站,成为雅虎商店。所以无论如何这是一个双赢(如果它流行起来,我赢了,如果没有,我得到了更多关于如何编程和如何工作的观点)

现在…关于另一个有点相关的问题,我认为明年32核处理器到来后编程会发生很大变化吗?是的,我不知道它是否会是函数式编程,但是…我很确定会有一些不同的东西!

呃,很抱歉,我是一个学究,但它已经流行起来了——我们称之为Excel。

http://research.microsoft.com/en-us/um/people/simonpj/papers/excel/

在计算机上运行的绝大多数程序都是用Excel或其众多流行克隆版本之一编写的。

(有许多程序运行多次,而用Excel编写的程序往往不是其中之一-大多数Excel程序都有1个运行实例)