好吧,现在我引起了你的注意,让我解释一下。功能编程没有单一的定义,&#39易于同意。有些人使用它来表示任何类型的编程,以围绕的一流函数传递为其他功能的参数。其他人以一种方式使用它在诸如ƒ(x)= x + 2的函数的数学定义;也就是说,纯粹转换参数值以返回值。我相信它'更有助于将其视为A"功能性&#34的谱;而不是制作二进制&#34的标准;功能或没有"判断。
所以功能规划是一种动作;它描述了你所做的事情,或者也许你可以说它描述了你可以编程的方式。功能规划导致功能计划。任何给定的程序都存在于与#34之间的频谱上的某处;在所有情况下都没有功能" "纯粹的功能"所以&#34的质量;功能性"是您申请的属性。
显然"功能规划语言"是一个广泛使用的人,人们用来描述某种语言。但它真的是什么意思?我争辩说语言不能正常工作;只有程序可以或多或少都有功能。当人们说"功能编程语言"他们的意思是一种鼓励或允许以功能方式编写程序的语言。
除了非常罕见的情况外,语言本身并不强制将其写入的程序或多或少的功能。所有语言都可以做到来,它可以使其难以编写功能程序。Ruby很少被称为功能性编程语言。但它'可能(并且通常是明智)在Ruby中编写功能性程序。 Haskell基本上是功能编程语言的教科书示例,但存在势在必行的Haskell程序。因此,调用编程语言功能(当实际上拍摄)是类别错误的一点。但是"一种鼓励以功能方式编程的语言"是一个尴尬的短语,所以它缩短到"功能编程语言"
顺便说一下,关于&#34的完全参数;功能编程语言"可以应用于术语和#34;快速编程语言"没有快速的语言这样的东西。只有程序只能快速[1]。该语言通过确定努力/速度折衷来影响速度,并通过设置速度的上限,而是可以在保留语言的语义的同时实现[2]。但它并不是自己确定的速度。
请不要误解我 - 我不会说这是为了迂腐和喊叫使用这个词"功能编程语言"我认为它&#39实际上很清楚人们在使用这个术语时意味着什么,而且它在人们使用它时真的打扰了我。我只想提供替代的思考方式;一个新的视角,让你重新评估你的一些假设,以在不同的光线中看到东西。
[1]如果你想更迂腐,只有个别的程序执行程序都可以快或慢。没有具有有意义的方式存在的程序的固有速度,而不将其与程序的特定可衡量的运行中存在。
[2]例如,方案编程语言具有不同实现的分数。 使用Chez方案编译器运行的相同程序通常会速度比it tinyscheme运行的速度快几倍。 所以说"方案是快速" 是一个类别错误; 方案并不快或慢。 Lua也是如此; 使用Luajit VS参考实现时,您通常会在运行Lua程序时获得更快的测量。