【发布时间】:2019-11-03 22:46:03
【问题描述】:
函数式编程与 c 等普通过程语言或 c++ 等面向对象编程语言相比有何用处?它的优势在哪里?
【问题讨论】:
-
只要在StackOverflow的搜索栏输入"functional programming",就会得到大量的信息和消歧。
函数式编程与 c 等普通过程语言或 c++ 等面向对象编程语言相比有何用处?它的优势在哪里?
【问题讨论】:
C 缺少一些需要解决的函数式编程特性(同样,虽然您可以在 C 中以面向对象的风格编写代码,但您也需要解决一些缺失的特性)。
C 函数不是一流的对象。您不能从函数返回函数、将函数存储在变量中或将函数传递给另一个函数。您不能嵌套函数,也不能创建匿名函数。解决方法是 C 确实允许您使用指向函数的指针,因此您可以编写一个将指向函数的指针作为参数的函数,但这并不像您在面向函数式编程的语言中所做的那样干净。
C 缺少闭包,闭包是一种捕获程序中特定点执行“环境”的方式(即,绑定到哪些变量名)。
C 缺乏泛型,除了最广泛的意义。在大多数函数式语言中,可以编写一个适用于大量不同类型的函数,因为它们不依赖于这些类型的特定属性。
【讨论】:
C 是一种低级语言,让程序员可以完全控制程序的执行。它是针对高级抽象语言而设计的。
函数式编程并不流行,现在使用的大多数语言都是面向对象的。
如果您需要能够控制程序和环境的语言,您应该考虑使用 C++
【讨论】: