我在这里看到很多关于函数式语言的讨论。为什么你要使用传统语言而不是传统语言呢?他们在哪些方面做得更好?他们更不擅长什么?理想的函数式编程应用程序是什么?
当前回答
我敢打赌,当你使用以下方法时,你并不知道你在进行函数式编程:
Excel公式 石英的作曲家 JavaScript Logo(海龟图形) LINQ SQL js(或Lodash), D3
其他回答
我的观点是,既然微软已经把它推向了主流,它就会流行起来。对我来说,它很有吸引力,因为它能为我们做什么,因为它是一个新的挑战,因为它为未来提供了工作机会。
一旦掌握了它,它将成为进一步帮助我们提高编程效率的另一个工具。
因为FP在生产力、可靠性和可维护性方面有显著的好处。多核可能是一个杀手级应用程序,最终让大公司在大量遗留代码的情况下转换。此外,即使是像c#这样的大型商业语言,也因为多核问题而呈现出一种独特的函数风格——副作用根本不适合并发性和并行性。
我不认为“普通”程序员不能理解它。他们会的,就像他们最终理解了面向对象编程一样(它同样神秘和怪异,如果不是更神秘的话)。
此外,大多数大学都教授FP,许多甚至将其作为第一门编程课程。
我不认为函数式语言能解决任何问题,这只是管理层试图推销的一种炒作,记住唯一的事实:
没有灵丹妙药。
其余的都是胡扯,他们还说OO会解决我们的问题,Web服务会解决我们的问题,Xml会解决我们的问题,但最后上面的真理适用了,一切都失败了。而且,20年后,谁说我们还会使用二进制计算机呢?为什么不是量子计算机呢?没有人能预测未来,至少在这个星球上不能。(这是第二条真理)
我一直对“下一件大事”持怀疑态度。很多时候,下一个大事件纯粹是历史的偶然,无论技术好坏,它都在正确的时间出现在正确的地点。例如:c++, Tcl/Tk, Perl。所有的技术都是有缺陷的,都非常成功,因为它们被认为要么解决了当时的问题,要么与根深蒂固的标准几乎相同,或者两者兼而有之。函数式编程可能确实很棒,但这并不意味着它会被采用。
But I can tell you why people are excited about functional programming: many, many programmers have had a kind of "conversion experience" in which they discover that using a functional language makes them twice as productive (or maybe ten times as productive) while producing code that is more resilient to change and has fewer bugs. These people think of functional programming as a secret weapon; a good example of this mindset is Paul Graham's Beating the Averages. Oh, and his application? E-commerce web apps.
自2006年初以来,也有一些关于函数式编程和并行的讨论。因为像Simon Peyton Jones这样的人至少从1984年开始就一直在担心并行性,所以在函数式语言解决多核问题之前,我不会屏住呼吸。但它确实解释了目前一些额外的话题。
In general, American universities are doing a poor job teaching functional programming. There's a strong core of support for teaching intro programming using Scheme, and Haskell also enjoys some support there, but there's very little in the way of teaching advanced technique for functional programmer. I've taught such a course at Harvard and will do so again this spring at Tufts. Benjamin Pierce has taught such a course at Penn. I don't know if Paul Hudak has done anything at Yale. The European universities are doing a much better job; for example, functional programming is emphasized in important places in Denmark, the Netherlands, Sweden, and the UK. I have less of a sense of what's happening in Australasia.
对我来说,主要的优点是它固有的并行性,特别是当我们现在从更多的MHz转向越来越多的内核时。
我不认为它会成为下一个编程范式并完全取代OO类型方法,但我确实认为我们将会达到这样的境地:要么我们需要用函数式语言编写一些代码,要么我们的通用语言将会发展到包含更多的函数式结构。