函数式编程:
它属于"结构化编程"的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用。举例来说,现在有这样一个数学表达式。
1. 代码简洁,开发快速
函数式编程大量使用函数,减少了代码的重复,因此程序比较短,开发速度较快。
2. 接近自然语言,易于理解
函数式编程的自由度很高,可以写出很接近自然语言的代码。
前文曾经将表达式(1 + 2) * 3 - 4,写成函数式语言:
subtract(multiply(add(1,2), 3), 4)
对它进行变形,不难得到另一种写法:
add(1,2).multiply(3).subtract(4)
这基本就是自然语言的表达了。再看下面的代码,大家应该一眼就能明白它的意思吧:
merge([1,2],[3,4]).sort().search("2")
因此,函数式编程的代码更容易理解。
3. 更方便的代码管理
函数式编程不依赖、也不会改变外界的状态,只要给定输入参数,返回的结果必定相同。因此,每一个函数都可以被看做独立单元,很有利于进行单元测试(unit testing)和除错(debugging),以及模块化组合。
4. 易于"并发编程"
函数式编程不需要考虑"死锁"(deadlock),因为它不修改变量,所以根本不存在"锁"线程的问题。不必担心一个线程的数据,被另一个线程修改,所以可以很放心地把工作分摊到多个线程,部署"并发编程"(concurrency)。
缺点: 函数嵌套太深,如果出bug不好排查
复用性比较低。没办法完成大型项目的扩展
面向对象:
面向对象的特点是多态,封装,继承,面向对象的可复用性比较高,比较适合操作大型项目,能够设计出高内聚,低耦合的对象,代码的复用性,灵活性都比较高。比较适合做大型项目。拓展性强
1.2、面向过程的编程思想
面向过程核心是"过程"二字,过程即流程,指的是做事的步骤:先什么、再什么、
后干什么基于该思想编写程序就好比在设计一条流水线,即无论采用什么语言、无
论依据何种编程范式设计出的程序,最终的执行都是过程式的。
优点: 比较符合计算机执行的习惯,比较符合人的思维
缺点: 拓展性差,整个环节有一点修改,就需要重新组织过程步骤。
函数式编程偏向面向过程。