我在这里看到很多关于函数式语言的讨论。为什么你要使用传统语言而不是传统语言呢?他们在哪些方面做得更好?他们更不擅长什么?理想的函数式编程应用程序是什么?
当前回答
呃,很抱歉,我是一个学究,但它已经流行起来了——我们称之为Excel。
http://research.microsoft.com/en-us/um/people/simonpj/papers/excel/
在计算机上运行的绝大多数程序都是用Excel或其众多流行克隆版本之一编写的。
(有许多程序运行多次,而用Excel编写的程序往往不是其中之一-大多数Excel程序都有1个运行实例)
其他回答
实际上,在阅读了《黑客与画家》之后,我正在学习LISP,我相信我会从LISP中学到一些东西,这将使我更好地理解我所编程的其他东西。现在我不认为我会在我的日常生活中使用LISP,只是因为有人在1995年创建了一个网站,成为雅虎商店。所以无论如何这是一个双赢(如果它流行起来,我赢了,如果没有,我得到了更多关于如何编程和如何工作的观点)
现在…关于另一个有点相关的问题,我认为明年32核处理器到来后编程会发生很大变化吗?是的,我不知道它是否会是函数式编程,但是…我很确定会有一些不同的东西!
因为FP在生产力、可靠性和可维护性方面有显著的好处。多核可能是一个杀手级应用程序,最终让大公司在大量遗留代码的情况下转换。此外,即使是像c#这样的大型商业语言,也因为多核问题而呈现出一种独特的函数风格——副作用根本不适合并发性和并行性。
我不认为“普通”程序员不能理解它。他们会的,就像他们最终理解了面向对象编程一样(它同样神秘和怪异,如果不是更神秘的话)。
此外,大多数大学都教授FP,许多甚至将其作为第一门编程课程。
大学里并没有真正教授(或者现在有吗?)
我不知道现在的情况,但在90年代中期,我在计算机科学课程中学习了米兰达语言和Lisp语言。尽管从那以后没有使用纯函数语言,但它影响了我解决问题的方式。
大多数应用程序都足够简单,可以用正常的面向对象方法解决
在90年代中期的CS课程中,面向对象(使用Eiffel教授)的教学与函数式编程相当。两者在当时都是非主流的。面向对象现在可能是“正常”的,但过去并非如此。
我很有兴趣看看f#是否是将FP推向主流的东西。
我不认为函数式编程方法“流行起来”有任何问题,因为它(作为一种编程风格)已经被使用了大约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.
一般的公司程序员,例如。 和我一起工作的大多数人都会 不懂它和大多数工作 环境不允许您编程 在这
不过,这只是时间问题。一般的公司程序员都在学习当前的大事。15年前,他们不懂面向对象编程。 如果FP流行起来,你的“普通公司程序员”也会跟上。
大学里并没有教过 (还是现在?)
变化很大。在我的大学里,SML是学生接触的第一门语言。 我相信麻省理工学院将LISP作为第一年的课程。当然,这两个例子可能不具有代表性,但我相信大多数大学至少提供了一些关于政策政策的选修课,即使他们没有将其作为课程的必修课。
大多数应用程序都很简单 可以用正常的面向对象方法解决
这并不是一个“足够简单”的问题。在FP中,解决方案会更简单(或更可读、更健壮、更优雅、更高效)吗?许多事情“简单到可以用Java解决”,但它仍然需要大量的代码。
无论如何,请记住,政策政策的支持者几十年来一直声称这是下一个大事件。也许他们是对的,但请记住,5年、10年或15年前他们做出同样的声明时,他们是不对的。
不过,有一件事肯定是对他们有利的,那就是最近,c#向FP的方向急转直下,在某种程度上,它实际上正在把一代程序员变成FP程序员,而他们甚至没有注意到。这可能会为计划生育“革命”铺平道路。也许吧。;)