面向对象与函数式编程-世界观
面向对象:
一切皆对象;通过对象的构建和组合来模拟系统,最终通过这个系统来解决问题。
消息和信息在这个系统中流转。
语言的底层支持就是通过对象来构建以对象为单元的联系的系统。
函数式编程:
一切皆计算;这个系统就是通过计算单元的组合构建成更大的计算单元,从而完成对信息和信号的处理。
本质上就是构建一个信号处理系统。
语言的底层支持是支持计算的组合和构建。
换句话说,函数式编程语言的关键字和底层单元都是构建器,这个构建器的输入是计算单元,输出是更大的计算单元。
构建器本身完成函数调用的约定、部分变换处理、惰性计算等操作。本质上是组合的关键部件,完成组合和转换的功能。
引入monad就是为了这个目的,即语言底层的组合和变换支持。
这两种编程范式具有不同的世界观。
面向对象模拟多维联系的世界;
函数式编程模拟信号处理系统。
这就决定了它们的使用场景的不同。
面向对象处理联系的复杂性和多维性;面向对象简化联系。
函数式编程处理计算的复杂性和信号处理的复杂性;函数式编程简化计算。
我思故我在