首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态语言和函数式语言的区别是什么?

问动态语言和函数式语言的区别是什么?
EN

Stack Overflow用户
提问于 2009-06-26 07:16:19
回答 5查看 6K关注 0票数 7

我经常发现开发人员将函数式语言和动态语言这两个术语放在一起使用,并想知道为什么它们总是放在一起。它们之间有什么不同?一种语言可以既是动态的又是功能的吗?它们是互补的吗?不管怎样,我们为什么需要它们?我是一名C#程序员,还不理解整个动态/函数式的东西(C#在版本4中将有一些动态特性。它也是函数式的吗?这是怎么回事?)。

谢谢,亚伯拉罕

EN

回答 5

Stack Overflow用户

发布于 2009-06-26 07:22:24

动态的“语言”实际上是动态类型的。

函数式语言提供了对lambda演算等匿名函数的大量支持。

一种执行动态类型并支持匿名函数的语言的示例: javascript。Ruby也有一些函数式样式支持。还有其他的。

票数 8
EN

Stack Overflow用户

发布于 2009-06-26 07:27:34

用一个简单的(但不准确的)答案

  • Dynamic languages是那些类型(类名)不像它的克星静态类型语言那样重要的语言。这意味着失去了静态类型的好处(编译器警告),但简单的方法变成了泛型- sort(list)适用于字符串列表和int列表。例如Ruby et。all
  • Functional languages值不变。在此上下文中的纯函数是self-sufficient (根据维基百科,术语是纯):它生成输出所需的一切都存在于它接收到的输入中。它还生成无副作用的(除非明确提到),并为给定的输入返回一致的输出。这可以产生优雅的代码(请参阅:流畅的接口),其中输入数据通过diff函数进行管道传输,以产生最终输出,例如LISP et.all

然而,语言的界限正在变得越来越模糊,因为它吸收了世界上最好的语言……你可以有一种语言,两者都有,一种或者都不是。

例如,主要是静态C#,在3.0中采用lambda表达式,在4.0中引入动态功能

票数 8
EN

Stack Overflow用户

发布于 2009-06-26 08:13:33

动态类型和函数式编程是独立的概念。在一种语言中,您可以两者都有,也可以两者都有。

静态类型意味着对象的类型在编译时是已知的。在动态类型中,它们在运行时是已知的。

函数式编程意味着编程风格,其中通过计算函数来完成计算,同时避免状态变化。(示例:使用递归而不是for循环,因为循环需要更改计数器变量,等等)这有助于避免bug,并使并发编程更容易。纯语言要求您以函数式风格编程,而其他语言只需启用它。

示例语言:

代码语言:javascript
复制
|----------------+---------+---------|
|                | Dynamic | Static  |
|----------------+---------+---------|
| Functional     | LISP    | Haskell |
| Not functional | PHP     | Java    |
|----------------+---------+---------|

另一方面,动态语言是一个更广泛的概念。没有确切的定义,但通常情况下,编译器的更多功能被转移到运行时,更动态的语言是。这意味着在动态语言中,你通常可以在运行时计算表达式,改变对象结构等。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1047765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档