计算机科学中有一句名言: “计算机领域的任何问题都可以通过增加一个间接的中间层来解决”, 没错这就是抽象的威力
抽象在计算机领域中起着关键的作用, 它简化了复杂性, 封装实现细节, 提供了模型和模式, 定义了抽象数据类型, 并构建了层次结构, 这些作用使得计算机科学和软件开发变得更加可理解, 可组织和可扩展
指令集架构抽象, 指令集架构是计算机系统的底层软硬件接口, 定义了计算机的指令集和寄存器组织方式, 通过指令集架构抽象, 程序员只需要按照指令集提供的规范编写程序, 而不需要关心底层硬件的具体实现细节
微体系结构抽象, 微体系结构是指计算机处理器的内部结构和实现方式, 微体系结构抽象将处理器的内部细节隐藏起来, 提供给程序员和编译器一个统一的视图, 程序员可以将程序视为一系列的指令和数据流进行编写和优化, 而不需要关心具体的处理器实现
逻辑计算抽象, 通过给晶体管一端通电, 在其它两端可以通过电流, 反之, 则电流不同, 利用这个性质我们可以组成基本逻辑门: 与门, 或门, 非门, 通过这些基本逻辑门电路可以组合成其它的门电路, 通过异或门组合与门实现一位二进制加法运算, 通过组合多个异或门和与门的组合可以实现多位二进制加法, 通过表盘原理可以将减法转换成加法, 乘法可以通过多次加法完成, 除法可以通过多次减法完成
面向对象编程, 通过类和对象的抽象, 可以将数据和操作打包在一起, 并对外部隐藏实现细节, 提供一种封装的方式
通过继承和多态的抽象, 可以创建基类和派生类之间的关系, 并在运行时根据对象的实际类型选择调用方法或函数的实现
计算机网络的分层设计就是一种抽象, 每个层次负责不同的功能, 这种分层抽象使网络的设计和管理更加模块化和可扩展, 每个层次都提供特定的抽象接口
网络协议定义了在网络中进行通信和交换信息的规则和标准, 协议抽象隐藏了底层的细节, 提供了一种高级的抽象方式, 使得应用程序和网络设备可以通过协议进行通信
数据包具有源地址和目的地址之间传输的信息, 数据包抽象提供了对数据包的格式和操作的抽象方式, 使得数据可以有效地在网络中传输和处理
设备和服务都有唯一的标识符称为地址, 地址抽象提供了一种方式来标识和定位设备和服务
将正在运行的程序抽象为进程, 进程抽象提供了一种方式来管理和调度程序的执行, 使得多个程序可以并发地运行, 共享计算机的资源
将存储设备中数据抽象成文件系统, 方便计算机数据的访问和管理, 它将存储设备中的数据组织为文件和目录的层次结构, 为应用程序提供了统一的文件操作接口
操作系统管理计算机的内存资源, 使得应用程序可以动态地分配和使用内存。内存管理抽象提供了虚拟内存的概念, 隐藏了物理内存和虚拟内存的映射细节, 使得应用程序可以使用大于实际物理内存的地址空间, 使存放在内存中的程序和数据产生隔离
设备驱动程序抽象, 使得应用程序可以使用和控制计算机硬件设备, 设备驱动程序抽象隐藏了具体硬件设备的细节, 提供了统一的设备访问接口
网络抽象, 使得应用程序可以通过网络进行通信, 网络抽象通过协议栈和套接字接口, 隐藏了网络通信的细节, 为应用程序提供了简洁和统一的网络编程接口
线性结构是一种数据元素之间具有一对一关系的数据结构,例如数组和链表。线性结构的抽象可以提供插入, 删除和访问元素的操作。
树形结构是一种具有层次关系的数据结构, 例如二叉树和堆, 树形结构的抽象可以提供树的遍历, 插入和删除节点的操作
图结构是由节点和边组成的一种数据结构, 可以表示对象之间的关系, 图结构的抽象可以提供图的遍历, 搜索和最短路径等操作
集合和映射是用于存储唯一元素的数据结构, 分别提供不重复元素和键值对的存储和访问操作
模块化, 将系统划分为多个独立的模块或组件, 每个模块负责特定的功能或任务, 模块化抽象可以提高系统的可维护性、可拓展性和重用性
接口定义, 定义模块之间的接口, 包括输入, 输出, 函数调用等, 接口定义抽象可以明确模块之间的依赖关系和通信方式
分层结构, 将系统划分为多个层次, 每个层次负责不同的功能和抽象级别, 分层结构抽象可以使系统的设计和实现更加清晰和模块化
设计模式, 使用常见的设计模式来解决系统设计中的通用问题, 设计模式提供了一种可复用的设计思路和解决方案, 可以减少系统设计中的重复和冗余