Linus说: "烂程序员关心的是代码。好程序员关心的是数据结构和它们之间的关系。"
代码体现的是过程。数据结构(和它们之间的关系)体现的是实体。
这里讲的过程和实体,都是模型,是人类思维对现实世界认知进而处理的手段。
相比较而言,人类对实体的掌握,似乎要优于对过程。我们觉得实体比过程更直观和易处理。
所以面对复杂和大规模的过程,人们借助实体,来增强认知和处理能力 -
- 一方面,我们借助实体,对过程做分割和组合。比如卖个东西,是个复杂的过程,我们借助订单、出库单、送货单等实体,把这个过程分解为相互配合的多个过程,通过分解降低了过程的复杂性。
- 另一个方面,我们借助实体,对过程作记录和可视。比如用账目来记录经营过程,用看板来可视化生产。虽然没有直接降低复杂性,但帮助了认知和理解。
以上来看,实体是我们对付世界的首选武器,即使不得不处理过程,我们也人为地引入实体来帮忙。
回到Linus的话,说代码与数据结构,实际上说的是程序员如何建模设计的问题。我理解Linus的意见是,多用实体,辅助过程,符合人类思维模式,是聪明的选择。