我经常发现开发人员将函数式语言和动态语言这两个术语放在一起使用,并想知道为什么它们总是放在一起。它们之间有什么不同?一种语言可以既是动态的又是功能的吗?它们是互补的吗?不管怎样,我们为什么需要它们?我是一名C#程序员,还不理解整个动态/函数式的东西(C#在版本4中将有一些动态特性。它也是函数式的吗?这是怎么回事?)。
谢谢,亚伯拉罕
发布于 2009-06-26 07:22:24
动态的“语言”实际上是动态类型的。
函数式语言提供了对lambda演算等匿名函数的大量支持。
一种执行动态类型并支持匿名函数的语言的示例: javascript。Ruby也有一些函数式样式支持。还有其他的。
发布于 2009-06-26 07:27:34
用一个简单的(但不准确的)答案
sort(list)适用于字符串列表和int列表。例如Ruby et。all然而,语言的界限正在变得越来越模糊,因为它吸收了世界上最好的语言……你可以有一种语言,两者都有,一种或者都不是。
例如,主要是静态C#,在3.0中采用lambda表达式,在4.0中引入动态功能
发布于 2009-06-26 08:13:33
动态类型和函数式编程是独立的概念。在一种语言中,您可以两者都有,也可以两者都有。
静态类型意味着对象的类型在编译时是已知的。在动态类型中,它们在运行时是已知的。
函数式编程意味着编程风格,其中通过计算函数来完成计算,同时避免状态变化。(示例:使用递归而不是for循环,因为循环需要更改计数器变量,等等)这有助于避免bug,并使并发编程更容易。纯语言要求您以函数式风格编程,而其他语言只需启用它。
示例语言:
|----------------+---------+---------|
| | Dynamic | Static |
|----------------+---------+---------|
| Functional | LISP | Haskell |
| Not functional | PHP | Java |
|----------------+---------+---------|另一方面,动态语言是一个更广泛的概念。没有确切的定义,但通常情况下,编译器的更多功能被转移到运行时,更动态的语言是。这意味着在动态语言中,你通常可以在运行时计算表达式,改变对象结构等。
https://stackoverflow.com/questions/1047765
复制相似问题