现在我们一说到“面向对象编程”似乎感觉就是编程的全部,实际上它是 20 世纪 60 年代就已经出现的一门“古老”技术,在 2000 年以后,随着 Java 和 .NET 等编程语言的出现,才逐渐开始在企业软件开发中发挥重要作用。
那为什么后来面向对象编程变得这么重要呢?或者说为什么开发人员要学习面向对象编程呢?因为面向对象编程是一门能让你轻松编写高质量软件的综合技术。
之所以这么说,是因为现在软件的复杂性已经从过去的底层复杂性(操作系统、编译器)转移到了更高的抽象层面(应用程序)。
-
一方面,底层操作系统和基础设施技术趋于稳定。现代软件重视可重用性、可维护性更胜于效率(性能),但并不是说性能不重要,而是因为基础设施,例如,操作系统、网络等变得越来越稳定,相反,上层软件的功能扩展需求则变得越来越多。
-
另一方面,人们期望通过理解高级抽象来快速认识计算机系统。对于一个用户来说,App 能提供什么样的功能体验比它到底是被如何被设计开发出来的更重要,但是矛盾也由此产生,没有运行良好的 App 程序,就无法提供体验更丰富的功能。
实际上,面向对象技术的出现就是为了解决软件的大规模可扩展性问题。
那今天我们就来一起聊聊:随着面向对象技术的发展,它在编程上到底能给我们带来哪些优势?
一、编程语言 VS 编程范式
这里我们先来看一个问题:现在 Java 8 以上已经提供了 Lambda 表达式进行函数式的编程,同时也能进行面向对象的编程,那么 Java 是属于什么类型的编程语言?可以使用哪些编程范式?
估计你已经注意到这两个问题所用的措辞:编程语言和编程范式。
那什么是编程语言?编程语言,是一种标准化的通信方式,用来向计算机发出指令。 比如,C 语言的 Hello World 代码示例:
#include <stdio.h>
int main()
{
printf