靠着代码经验与直觉,不时能体会到一些编程本世界描述的精确,准确来说,是人对世界的认知的描述,思考这些问题,对写好代码有巨大的益处。
信息与状态:
本质: 世界被简化为数据。一切实体(对象、用户、文件)、属性(颜色、尺寸、位置)、关系(连接、层级)和事件(点击、交易、传感器读数)都被抽象为信息。
描述方式: 通过变量、常量、数据结构(数组、列表、字典、对象、结构体)来表示信息。世界的当前状况由所有这些数据的值共同定义,这就是状态。
逻辑与过程:
本质: 世界的运作被理解为规则和变化。事物如何相互作用、状态如何根据输入或条件发生改变,都遵循着逻辑规则和操作序列。
描述方式: 通过算法、函数、方法、控制流语句(if/else
, for
, while
)来精确描述规则和过程。计算是核心驱动力,它接受输入(数据/状态),应用逻辑规则,产生输出(新的数据/状态)。
抽象与结构:
本质: 忽略无关细节,聚焦关键特征和关系。现实世界的复杂性通过分层、模块化、封装等手段来管理和简化。
描述方式: 使用函数/方法(封装行为)、类/对象/模块/包(封装数据和相关行为)、接口/协议(定义交互契约)等机制构建层次化的抽象模型。这允许程序员在更高层次上思考和构建复杂系统。
时间与顺序:
本质: 世界是动态的,状态随时间变化。事件的发生、操作的执行都可能具有顺序性(同步)或并发性(异步)。
描述方式: 程序语句的执行顺序(控制流)、事件驱动机制、多线程/并发/协程模型、异步编程(Promise
, async/await
)都是用来描述和处理时间与顺序的工具。状态的变化本质上是离散的(在特定时间点发生)。
交互与边界:
本质: 程序世界需要与现实世界或其它系统交互。它接受输入(用户操作、传感器数据、网络请求),并产生输出(屏幕显示、文件写入、网络响应、控制信号)。
描述方式: 通过输入/输出操作、API、消息传递、事件监听等机制建立边界和交互通道。