大多数主流语言,包括面向对象编程(OOP)语言,如C#、Visual Basic、C++和Java,都被设计为主要支持命令式(过程化)编程,而Haskell/gofer之类的语言则是纯粹的函数式编程。有人能详细说明一下这两种编程方式的区别吗?
我知道选择编程的方式取决于用户的需求,但是为什么建议学习函数式编程语言呢?
发布于 2017-04-26 19:45:25
函数式编程是“使用函数进行编程”,其中函数具有一些预期的数学属性,包括引用透明性。从这些属性中,进一步的属性流动,特别是通过可替换性实现的熟悉的推理步骤,从而导致数学证明(即证明对结果的置信度)。
由此可见,函数式程序只是一个表达式。
通过注意命令式程序中表达式在引用上不再透明的地方(因此不是使用函数和值构建的,并且本身不能是函数的一部分),您可以很容易地看到这两种风格之间的对比。两个最明显的地方是:突变(例如变量)、其他副作用、非局部控制流(例如异常)
在这个由函数和值组成的程序即表达式的框架上,建立了一个完整的实用范式,包括语言、概念、“函数模式”、组合器以及各种类型系统和评估算法。
根据最极端的定义,几乎任何语言-甚至C或Java-都可以称为函数式语言,但通常人们将该术语保留为具有特定相关抽象(如闭包、不可变值和模式匹配等语法辅助)的语言。就函数式编程的使用而言,它涉及到函数式的使用,并在没有任何副作用的情况下构建代码。用来写校样
发布于 2018-05-03 15:33:50
我知道这个问题由来已久,其他人已经很好地解释了它,我想举一个简单的例子来解释同样的问题。
问题:写入1的表。
解决方案:-
按命令式风格:=>
1*1=1
1*2=2
1*3=3
.
.
.
1*n=n
按函数样式:=>
1
2
3
.
.
.
n
解释在命令式风格中,我们编写的指令更加明确,并且可以以更简单的方式调用。
在函数式风格中,那些不言自明的东西将被忽略。
https://stackoverflow.com/questions/17826380
复制相似问题