为何选择功能语言

时间:2008-08-31 00:21:52

标签: programming-languages functional-programming

我在这里看到很多关于函数式语言和东西的讨论。你为什么要使用“传统”语言?他们做得更好?他们更糟糕的是什么?什么是理想的函数式编程应用程序?

48 个答案:

答案 0 :(得分:208)

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

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

传统上,函数式编程的一大缺点也是缺乏副作用。在没有IO的情况下编写有用的软件非常困难,但IO很难在没有功能副作用的情况下实现。所以大多数人从来没有比从单个输入计算单个输出更多的功能编程。在像F#或Scala这样的现代混合范式语言中,这更容易。

许多现代语言都有来自函数式编程语言的元素。 C#3.0有很多函数式编程功能,你也可以在Python中进行函数式编程。我认为函数式编程普及的原因主要是由于两个原因:并发性在普通编程中成为一个真正的问题,因为我们正在使用越来越多的多处理器计算机;并且语言越来越容易使用。

答案 1 :(得分:196)

我认为对于编程“追赶”的功能方法没有任何疑问,因为它已经使用了(作为一种编程风格)大约40年。每当OO程序员编写有利于不可变对象的干净代码时,该代码就是借用功能概念。

然而,强制执行功能风格的语言现在正在获取大量虚拟墨迹,这些语言将来是否会占据主导地位是一个悬而未决的问题。我自己的怀疑是混合的,多范式的语言,如ScalaOCaml 可能会像纯粹的OO语言(Smalltalk,Beta等)影响主流编程一样主导“纯粹主义”功能语言,但最终却没有成为最广泛使用的符号。

最后,我无法抗拒地指出你对FP的评论与我多年前从程序程序员那里听到的评论高度平行:

  • (神秘的,恕我直言)“普通”程序员不理解它。
  • 没有广泛传授。
  • 任何可以用它编写的程序都可以用现有技术以另一种方式编写。

正如图形用户界面和“代码作为业务模型”是帮助OO得到更广泛认可的概念一样,我相信增加使用不变性和更简单(大规模)并行性将有助于更多程序员看到功能方法提供。但是,尽管我们已经在the past 50 or so years中学到了构成数字计算机编程的整个历史,但我认为我们还有很多需要学习的东西。二十年后,程序员将惊讶于我们目前使用的工具的原始性质,包括现在流行的OO和FP语言。

答案 2 :(得分:125)

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

我认为它不会成为下一个编程范式并完全取代OO类型的方法,但我认为我们会发现我们需要用函数式语言编写一些代码,或者我们的一般目的语言将增长到包含更多功能性结构。

答案 3 :(得分:77)

即使您从未专业地使用函数式语言,理解函数式编程也会使您成为更好的开发人员。它将为您提供有关代码和编程的新视角。

我说没有理由不学习它。

我认为能够很好地混合功能和命令式风格的语言是最有趣的,并且最有可能成功。

答案 4 :(得分:56)

我总是对下一件大事持怀疑态度。很多时候,下一件大事是纯粹的历史事故,无论技术是否好,都能在合适的时间出现在正确的地方。示例:C ++,Tcl / Tk,Perl。所有有缺陷的技术都非常成功,因为它们被认为可以解决当时的问题,或者与根深蒂固的标准几乎相同,或两者兼而有之。功能编程可能确实很好,但这并不意味着它将被采用。

但我可以告诉你人们为什么兴奋关于函数式编程:很多很多程序员都有过一种“转换体验”,他们发现使用了功能语言使它们的生产率提高了两倍(或者生产率提高了十倍),同时生成的代码更易于修改并且错误更少。这些人认为函数式编程是一种秘密武器;这种心态的一个很好的例子是保罗格雷厄姆的Beating the Averages。哦,还有他的申请?电子商务网络应用程序。

自2006年初以来,关于函数式编程和并行性的讨论也很多。因为像Simon Peyton Jones这样的人至少从1984年开始一直担心并行性,所以在功能语言解决多核问题之前我不会屏住呼吸。但它确实解释了现在的一些额外嗡嗡声。

总的来说,美国大学在教授函数式编程方面做得很差。有一个强大的核心支持teaching intro programming using Scheme,Haskell也在那里得到一些支持,但是对功能程序员来说教授先进技术的方式却很少。我在哈佛大学教过这样一门课程,今年春天将在塔夫茨大学再次这样做。本杰明皮尔斯在宾夕法尼亚大学教过这样的课程。我不知道Paul Hudak在耶鲁大学做过什么。欧洲的大学做得更好;例如,在丹麦,荷兰,瑞典和英国的重要地方强调功能性节目。我对澳大拉西亚的情况了解不多。

答案 5 :(得分:33)

我没有看到有人在这里提到大象,所以我认为这取决于我:)

JavaScript是一种功能语言。随着越来越多的人用JS做更高级的事情,特别是利用jQuery,Dojo和其他框架的更精细点,FP将由Web开发人员的后门引入。

结合闭包,FP使JS代码非常轻巧,但仍然可读。

干杯, PS

答案 6 :(得分:25)

  

大多数应用程序都很简单,无法以正常的OO方式解决

  1. OO方式并非总是“正常”。这十年的标准是过去十年的边缘化概念。

  2. 功能编程是数学。 Paul Graham on Lisp(替换Lisp的函数式编程):

  3.   

    所以简短解释为什么会这样   20世纪50年代的语言并不是过时的   这不是技术,而是数学,而且   数学不会变得陈旧。正确的   比较Lisp的事情不是20世纪50年代   硬件,但是,比如Quicksort   算法,发现于   1960年仍然是最快的   通用排序。

答案 7 :(得分:25)

我敢打赌,当你使用时,你不知道你是函数式编程:

  • Excel公式
  • Quartz Composer
  • 的JavaScript
  • Logo(海龟图片)
  • LINQ
  • SQL
  • Underscore.js(或Lodash), D3

答案 8 :(得分:18)

  

普通的公司程序员,例如   与我合作的大多数人都会   不理解它和大多数工作   环境不会让你编程   在其中

那个只是时间问题。您的普通企业程序员可以学习当前的大事。 15年前,他们不了解OOP。 IF FP迎头赶上,您的“普通企业程序员”将会跟进。

  

在大学里并没有真正的教学   (或者现在呢?)

变化很大。在我的大学,SML是学生介绍的第一语言。 我相信麻省理工学院教授LISP作为第一年的课程。当然,这两个例子可能不具代表性,但我相信大多数大学至少提供一些关于FP的可选课程,即使它们不是课程的强制性部分。

  

大多数应用程序都很简单   以正常的OO方式解决

但这并不是“足够简单”的问题。 FP中的解决方案更简单(或者更可读,更健壮,更优雅,更高效)?很多东西“很简单,可以在Java中解决”,但它仍然需要大量的代码。

在任何情况下,请记住,FP支持者声称它已成为几十年来的下一件大事。也许他们是对的,但请记住,他们在5年,10年或15年前提出同样的要求时并非如此。

然而,有一件事对他们有利,那就是最近,C#已经向FP急转直下,以至于它实际上将一代程序员变成FP程序员,没有他们甚至注意到< / em>的。这可能只是为FP“革命”铺平了道路。也许。 ;)

答案 9 :(得分:15)

如果他不能看到其他艺术的价值,他就无法理解他所选艺术的完美和不完美。遵循规则只允许在技术上达到一定程度,然后学生和艺术家必须学习更多并进一步寻求。研究其他艺术以及策略是有意义的。

通过观看他人的活动,谁还没有学到更多关于自己的东西?学习剑学习吉他。学习拳头学习商业。只是研究剑会让你心胸狭窄,不允许你向外生长。

- 宫本武藏,“五环之书”

答案 10 :(得分:11)

我不认为大多数现实的人认为函数式编程会流行(成为像OO这样的主要范例)。毕竟,大多数业务问题不是很好的数学问题,而是毛茸茸的命令规则来移动数据并以各种方式显示它们,这意味着它不适合纯函数式编程范例(monad的学习曲线远远超过OO。)< / p> OTOH,函数式编程使编程变得有趣。它让你欣赏宇宙底层数学的简洁表达所固有的,永恒的美。人们说学习函数式编程会让你成为更好的程序员。这当然是非常主观的。我个人认为这也不完全正确。

它会让你变得更有感觉。

答案 11 :(得分:11)

功能语言的一个关键特征是一流功能的概念。我们的想法是,您可以将函数作为参数传递给其他函数,并将它们作为值返回。

函数式编程涉及编写不改变状态的代码。这样做的主要原因是对函数的连续调用将产生相同的结果。您可以使用支持第一类函数的任何语言编写功能代码,但有些语言(如Haskell)不允许您更改状态。事实上,你根本不应该产生任何副作用(比如打印文本) - 听起来它可能完全没用。

Haskell采用了不同的IO方法:monads。这些对象包含由解释器顶层执行的所需IO操作。在任何其他级别,它们只是系统中的对象。

函数式编程有哪些优点?功能编程允许编码具有较少的错误潜力,因为每个组件都是完全隔离的。此外,使用递归和第一类函数可以简单地证明正确性,这通常反映了代码的结构。

答案 12 :(得分:8)

我会指出你所说的关于函数式语言的所有内容,大多数人都是在大约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的改变是好的?

答案 13 :(得分:8)

我必须密集,但我仍然没有得到它。有没有用F#这样的函数式语言编写的小应用程序的实际示例,您可以查看源代码,看看如何以及为什么使用这种方法比使用C#更好?

答案 14 :(得分:7)

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

临:

  • F#将成为下一版Visual Studio的一部分
  • 微软正在建立一段时间的社区 - 与高知名度客户合作的福音传教士,书籍,顾问,以及在MS会议上的重要曝光。
  • F#是一流的.Net语言,它是第一个带有非常大的基础的功能语言(不是说我说Lisp,Haskell,Erlang,Scala,OCaml没有很多库,它们不是那么完整as .Net is)
  • 对并行性的强烈支持

Contra:

  • 即使你对C#和.Net很好,F#也很难开始 - 至少对我而言:(
  • 可能很难找到好的F#开发者

所以,我给F#50:50的机会变得重要。其他功能语言不会在不久的将来出现。

答案 15 :(得分:5)

我认为一个原因是有些人认为语言被接受的最重要部分是语言有多好。不幸的是,事情很少这么简单。例如,我认为Python接受的最大因素不是语言本身(尽管 非常重要)。 Python如此受欢迎的最大原因是它庞大的标准库以及更大的第三方库社区。

Clojure或F#等语言可能是规则的例外,因为它们是基于JVM / CLR构建的。结果,我没有答案。

答案 16 :(得分:4)

大多数应用程序都可以通过[插入您喜欢的语言,范例等]来解决。

虽然这是事实,但可以使用不同的工具来解决不同的问题。功能只允许另一个高(更高?)级别的抽象,允许在正确使用时更有效地完成工作。

答案 17 :(得分:4)

在我看来,那些从未学过Lisp或Scheme作为本科生的人现在正在发现它。与这个领域的很多事情一样,人们倾向于炒作并创造很高的期望......

它将通过。

功能编程很棒。但是,它不会接管世界。 C,C ++,Java,C#等仍然存在。

我认为这将带来更多的跨语言能力 - 例如以功能语言实现事物,然后以其他语言提供对这些内容的访问。

答案 18 :(得分:4)

阅读Epic Games的Tim Sweeney撰写的“下一个主流编程语言:游戏开发者的视角”时,我的第一个想法是 - 我学习了Haskell。

PPT

Google's HTML Version

答案 19 :(得分:3)

它正在流行,因为它是控制复杂性的最佳工具。 请参阅:
   - Simon Peyton-Jones的第109-116段幻灯片“A Hasteell的味道”
   - Tim Sweeney的“下一主流编程语言:游戏开发者的视角”

答案 20 :(得分:3)

答案 21 :(得分:3)

您最近是否一直关注编程语言的发展?所有主流编程语言的每个新版本似乎都借用了函数式编程中越来越多的特性。

  • 闭包,匿名函数,传递函数和返回函数作为曾经只有Lisp和ML黑客才知道的异域特征的值。但逐渐地,C#,Delphi,Python,Perl,Javascript,增加了对闭包的支持。如果没有关闭,任何新兴语言都不可能被认真对待。

  • 有几种语言,特别是Python,C#和Ruby,它们对列表推导和列表生成器有本机支持。

  • ML在1973年开创了泛型编程,但对泛型(“参数多态”)的支持在过去5年左右才成为行业标准。如果我没记错的话,Fortran在2003年支持泛型,其次是Java 2004,2005年的C#,2008年的Delphi。(我知道C ++自1979年以来一直支持模板,但90%的关于C ++ STL的讨论始于“这里有恶魔” 。)

是什么让这些功能对程序员有吸引力?它应该是显而易见的:它可以帮助程序员编写更短的代码。如果他们想要保持竞争力,未来所有语言都将支持 - 至少 - 关闭。在这方面,功能性编程已经成为主流。

  

大多数应用程序都很简单   以正常的OO方式解决

谁说不能将函数式编程用于简单的事情呢?并非每个功能程序都需要是编译器,定理证明器或大规模并行电信交换机。除了我更复杂的项目之外,我经常使用F#作为临时一次性脚本。

答案 22 :(得分:3)

事情已经在功能方向上发展了一段时间。过去几年中两个很酷的新孩子,Ruby和Python,都比以前更接近函数式语言 - 以至于一些Lispers开始支持其中一个或者“足够接近”。

随着大规模并行硬件对每个人施加进化压力 - 以及处理变化的最佳位置的函数式语言 - 它并不像以前那样认为Haskell或F#将成为下一个大事件的飞跃

答案 23 :(得分:2)

哇 - 这是一个有趣的讨论。我对此的看法:

FP使一些任务相对简单(与非FP语言相比)。 非FP语言已经开始从FP中获取想法,所以我怀疑这种趋势将继续下去,我们将看到更多的合并,这将有助于人们更容易实现FP的飞跃。

答案 24 :(得分:2)

讨论中遗漏的一点是,当代FP语言中找到了最好的类型系统。更重要的是,编译器可以自动推断所有(或至少大多数)类型。

有趣的是,在编写Java时,花费一半的时间编写类型名称,但Java到目前为止并不是类型安全的。虽然您可能永远不会在Haskell程序中编写类型(除了作为一种编译器检查的文档),并且代码是100%类型安全的。

答案 25 :(得分:2)

我的观点是,现在微软已经将其推向主流。对我而言,这是有吸引力的,因为它可以为我们做些什么,因为这是一个新的挑战,并且由于工作机会,它对未来感到不满。

一旦掌握,它将成为另一个工具,可以进一步帮助我们提高程序员的工作效率。

答案 26 :(得分:2)

我同意第一点,但时间有所改变。即使他们是后期采用者,如果他们认为有优势,公司也会做出回应。生活是充满活力的。

他们在90年代后期在斯坦福大学教授Haskell和ML。我确信像卡内基梅隆大学,麻省理工学院,斯坦福大学和其他好学校这样的学校都会向学生们展示。

我同意大多数“暴露网络上的关系数据库”应用程序将在这种情况下持续很长时间。 Java EE,.NET,RoR和PHP已经为这个问题发展了一些非常好的解决方案。

你已经找到了一些重要的东西:它可能是一个无法通过其他方式轻松解决的问题,这将促进函数式编程。那会是什么?

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

答案 27 :(得分:2)

我不知道它是否会流行起来,但从我的调查来看,功能语言几乎肯定值得学习,并会让你成为更好的程序员。只需了解参考透明度,就可以使很多设计决策变得更加容易,并且所得到的程序更容易推理。基本上,如果遇到问题,那么它往往只是单个函数输出的问题,而不是不一致状态的问题,这可能是由数百个类/方法/函数中的任何一个引起的用副作用的比较语言。

FP的无状态特性更自然地映射到Web的无状态特性,因此函数式语言更容易为更优雅的RESTFUL webapps提供支持。与JAVA和.NET框架形成对比,这些框架需要使用像VIEWSTATE和SESSION键这样可怕的丑陋HACK来维护应用程序状态,并在基本无状态的功能平台(如Web)上维护有状态命令语言的(偶尔相当漏洞)抽象。

而且,应用程序越无用状态,它就越容易适用于并行处理。如果你的网站很受欢迎,那对网络来说非常重要。为站点添加更多硬件以获得更好的性能并不总是直截了当。

答案 28 :(得分:2)

因为FP在生产力,可靠性和可维护性方面具有显着优势。尽管存在大量的遗留代码,但很多核心可能是一个杀手级的应用程序最终让大公司转换。此外,即使像C#这样的大型商业语言也会因许多核心问题而产生不同的功能 - 副作用只是简单的不适合并发性和并行性。

我不同意“普通”程序员不会理解它。他们会像他们最终理解OOP一样(这也是一种神秘和奇怪的,如果不是更多的话)。

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

答案 29 :(得分:1)

  

在大学里没有真正的教学(现在是不是?)

我现在还不知道,但是在20世纪90年代中期,我和米兰达和Lisp一起被教导为我的CS课程的一部分。尽管不使用纯函数式语言,但它影响了我解决问题的方式。

  

大多数应用程序都很简单,无法以正常的OO方式解决

在90年代中期的CS课程中,OO(使用Eiffel教授)与函数式编程相当。两者当时都不是主流。 OO现在可能是“正常的”,但事实并非如此。

我很想知道F#是否会将FP推向主流。

答案 30 :(得分:1)

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

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

答案 31 :(得分:1)

  • 普通公司程序员理解OOP需要多长时间......?
  • 我在乌特勒支大学教授函数式编程 - 我认为 - 1994年只是看到它在过去几年中开始流行“在现实世界中”。
  • 没有“简单的应用程序”这样的东西。 ; - )

我认为,当我们开始在硬件中获得越来越多的内核时,对软件的某些关键部分进行(接近)副作用免费编程将是必不可少的。给函数式编程多一点时间。 C#的当前版本和未来版本中的功能性将在准备那些企业程序员进行函数式编程时有很长的路要走,而他们甚至没有意识到它......

答案 32 :(得分:1)

我认为函数式编程语言成为“下一件大事”的最大理由是,未来多核处理器将成为常态。程序员必须利用这一点,而函数式编程为构建顶级并行软件提供了非常好的可能性。

P.S。当我在波士顿大学('98 -'02)上大学时,我们花了一个学期的学习计划,这是LISP的近亲。当我们第一次开始学习它时,我想撕掉我的头发。在课程结束时,它非常自然。

答案 33 :(得分:1)

一些想法:

  • 自从Lisp与Fortran之后,FP和命令式编程(面向对象,结构化等)之间的争论一直在激烈。我认为你提出了很好的问题,但认识到它们并不是特别新鲜。
  • FP上的部分喧嚣是我们似乎认识到并发非常困难,而OO中的锁和其他机制(例如Java)只是一种解决方案。 FP提供了令人耳目一新的大变革,其中包括演员和无状态计算的强大功能。对于那些与OO搏斗的人来说,景观看起来非常吸引人。
  • 是的,学校教FP。事实上,滑铁卢大学和其他学院在一年级课程中提供了计划(reference here)。
  • 关于普通程序员,我确信在20世纪90年代早期对C ++提出了相同的论点。看看发生了什么。 如果企业可以通过技术获得优势,您可以打赌人们将接受培训。

这并不是说这是肯定的事情,或者说3 - 5年内不会出现反弹(总是如此)。然而,FP的趋势是有价值的,值得关注。

答案 34 :(得分:1)

除了其他答案之外,使用纯函数术语强制解决问题会迫使人们更好地理解问题。相反,以功能性方式思考将发展出更好的解决问题的能力。

*要么因为功能范例更好,要么因为它会提供额外的迎角。

答案 35 :(得分:1)

来自Slava Akhmechet的一篇名为Functional Programming For The Rest of Us的精彩文章(这篇文章让我了解了FP btw)。在FP带来的好处中,他非正统地强调了以下内容(我认为这有助于吸引软件工程师):

  • 单元测试
  • 调试
  • 并发
  • 热门代码部署
  • 机器辅助证明和优化
然后继续讨论FP更传统讨论的方面的优点,如高阶函数,currying,懒惰评估,优化,抽象控制结构(虽然不讨论monad),无限数据结构,严格性,延续,模式匹配,关闭等等。

强烈推荐!

答案 36 :(得分:1)

我很难想象一种纯粹的功能语言是当时的共同语言,我不会理解的原因(因为它们是火焰饲料)。话虽这么说,以功能方式编程可以提供好处,无论语言如何(如果允许的话)。对我来说,这是更容易测试我的代码的能力。我经常使用数据库...我倾向于:

  1. 编写一个获取数据,操作数据并返回数据的函数
  2. 编写一个调用数据库的死简单包装器,然后返回通过我的函数传递该数据的结果
  3. 这样做可以让我为我的操作函数编写单元测试,而不需要创建模拟等。

    我认为纯函数式语言非常有趣......我认为这是我们可以从中学到的对我来说很重要的东西,而不是我们能用它们做些什么。

答案 37 :(得分:0)

功能编程已经存在了很长时间,因为LISP是最早拥有编译器的语言之一,也是自MIT的LISP机器以来。这不是一个新的范例(OO更新)但主流软件平台倾向于用易于转换为汇编语言的语言编写,而且他们的API非常支持命令式代码(带有C的UNIX,带有C的Windows,带有Pascal的Macintosh)以及后来的C)。

我认为过去几年的新创新是为了吸引各种各样的API,特别是对于平台API无关的网络开发。由于您没有直接编写Win32 API或POSIX API,因此人们可以自由地尝试使用函数式语言。

答案 38 :(得分:0)

我个人认为对于分布式系统和多线程/并行编程功能编程很快就会有所突破。只要它通过编程库与现有的OOP范例集成。所以......在我看来,纯粹的功能性方法仍然是学术性的。

答案 39 :(得分:0)

微软正在推动F#推出Visual Studio上的下一个版本。它是一种混合语言,如Scala,可以很好地与.net框架的其余部分集成。我认为很多微软的商店都会用它来加速高度并行的数据处理应用程序和功能的开发。

答案 40 :(得分:0)

它已经在Hadoop

中使用了Map / reduce

答案 41 :(得分:0)

功能编程可能是工程师,科学家用来解决他们所面临的问题的工具。它不会像早期的langages那样占据世界。然而,要击败的硬件是Excel,如果我是工程师并且需要进行计算,那么Excel非常棒。

然而,F#将成为另一个来源,可能会满足非计算机科学家的设计需求。让我们面对现实吧,计算机科学家在创造全新的做事方式方面做得非常出色。面向对象的编程很棒。但有时你只需要一种方法来解决方程式,获得解决方案并绘制图表。而已。然后像F#这样的语言填写账单。或许你想建立一个有限状态机,F#也可以是解决方案之一,但C也可以是一个解决方案。

但是当谈到并行处理时,Excel会闪耀,并且及时F#也会出现。但是,以友好的方式,F#=友好。

答案 42 :(得分:0)

很多人都提到了功能语言。

但是除了Javascript之外,今天使用的一些最常用的功能语言。

Excel,SQL,XSLT,XQuery,J和K用于金融领域。

当然是Erlang。

所以我会从那个列表中说,功能编程技术每天都在主流中使用。

答案 43 :(得分:0)

FP是下一个最好的范例。现在哪种语言可以成为下一步,这是很难的东西,但我相信可能是Haskell,F#,Clojure,Ocaml或Erlang。或者可以是具有更多FP构造的Python以及对并行性/性能的更好支持,或者Perl 6与parrot看起来非常有趣。

答案 44 :(得分:0)

呃,很抱歉成为一名学生,但它已经流行起来 - 我们称之为Excel。

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

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

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

答案 45 :(得分:0)

我认为你的问题的答案更多地在于声明,“工作的正确工具”,而不是最热门的事情。总会有热门的新技术,总会有人跳过它们。

功能语言已经存在了一段时间,现在它们正在获得更多的新闻。

答案 46 :(得分:-3)

功能编程已经抓住了恕我直言,它还不是很明显。这些语言的优势在于数学/算法,这就是为什么Halo Guys将它用于TrueSkill的原因之一。

答案 47 :(得分:-9)

我不认为功能语言会解决任何问题,而这只是管理层试图推销的炒作,记住唯一的事实:

没有银弹。

剩下的就是废话,他们也说OO会解决我们的问题,Web服务会解决我们的问题,Xml会解决我们的问题,但最终应用了上述真相,一切都崩溃了。此外,从现在起二十年,谁说我们将使用二进制计算机?为什么不定量计算机?没有人可以预测未来,至少在这个星球上没有。 (这是第二个事实)