面向对象与函数式编程-世界观

面向对象:

一切皆对象;通过对象的构建和组合来模拟系统,最终通过这个系统来解决问题。

消息和信息在这个系统中流转。

语言的底层支持就是通过对象来构建以对象为单元的联系的系统。

 

函数式编程:

一切皆计算;这个系统就是通过计算单元的组合构建成更大的计算单元,从而完成对信息和信号的处理。

本质上就是构建一个信号处理系统。

语言的底层支持是支持计算的组合和构建。

换句话说,函数式编程语言的关键字和底层单元都是构建器,这个构建器的输入是计算单元,输出是更大的计算单元。

构建器本身完成函数调用的约定、部分变换处理、惰性计算等操作。本质上是组合的关键部件,完成组合和转换的功能。

引入monad就是为了这个目的,即语言底层的组合和变换支持。

 

这两种编程范式具有不同的世界观。

面向对象模拟多维联系的世界;

函数式编程模拟信号处理系统。

 

这就决定了它们的使用场景的不同。

面向对象处理联系的复杂性和多维性;面向对象简化联系。

函数式编程处理计算的复杂性和信号处理的复杂性;函数式编程简化计算。

posted @ 2018-03-28 10:54  zzfx  阅读(388)  评论(0编辑  收藏  举报