版权所有 © 2021.02.22 林鹏程, 保留所有权利。
-
Eric Steven Raymond, Unix编程的艺术
在进行数据驱动的编程时,可以清楚地将代码与 代码所作用的数据结构区分开来,并且可以对两者进行设计, 从而使人们可以通过编辑数据结构而不是代码来更改程序的逻辑。
-
在计算机编程中,数据驱动编程是一种编程范式, 其中程序语句描述要匹配的数据和所需的处理, 而不是定义要采取的一系列步骤。
-
在计算中,面向数据设计是一种程序优化方法, 其动机是高效使用视频游戏开发中使用的CPU缓存。 方法是根据需要时专注于数据布局、分离和排序字段, 并考虑数据的转换。
-
Noel, 面向数据设计(或者为什么您可能搬了OOP砸了自己的脚)
面向数据的设计将编程的视角从对象转移到数据本身: 数据的类型、内存中如何布局以及游戏中如何读取和处理数据。
根据定义,编程是关于转换数据的:它是创建一系列机器指令, 描述如何处理输入数据并创建某些特定输出数据的行为。
-
Richard Fabian, 面向数据设计
本质上,面向数据设计是通过开发格式正确的数据的转换 来设计软件的实践,其中格式良好的标准由目标硬件以及 需要对其进行操作的转换的模式和类型来指导。
-
Clojure的面向数据编程
- 使用Clojure的核心API函数来操纵数据。Clojure的大部分核心API函数用于操纵数据,其他API函数是辅助的和平台的。
- 围绕着Clojure的4个不可变的持久数据结构进行开发工作。
-
数据驱动编程
- 通过编辑数据结构而不是代码来更改程序的逻辑
- 代码和数据结构分离
-
面向数据的设计(编程)
- 它是一种程序优化方法
- 动机: 高效使用CPU缓存
- 方法: 专注于数据布局、分离和排序字段,并考虑数据的转换
-
纯函数管道数据流和基于原则的仓库/车间模型
-
它是一种系统论, 包括架构、编程、原则、质控、美学 一系列完整、简单、统一的理论。它和制造业、集成电路、计算机硬件架构的系统理论高度一致. 其他两种方法缺乏这种完整、简单、统一的系统理论。
-
优化方法
- 仓库调度函数根据可用资源, 按甘特图算法 动态规划任务的完成顺序,据以调用车间完成分派的任务。 这种做法效率最高, 也没有资源竞争和事务冲突.
- 系统的连贯性: 把软件当成生产数据的工厂, 通过设计一个优秀的产品(数据)标准规范, 以把软件设计成一个简单、高效、可靠、流畅的数据制造生产线. 它注重整个系统数据流动的连续性, 整个运行时系统就是一个奔流不息的长江水系图, 或者是一个运行的集成电路系统, 在系统里, 数据流(水流, 电流)持续不断地顺畅流动, 它本质上是持续运行的树形甘特图.
- 仓库/车间模型有利于全局优化
- 面向数据的设计(编程) : 专注于数据布局、分离和排序字段,并考虑数据的转换
- 数据驱动编程没有这方面论述。
-
它可以很自然地兼容和吸收
数据驱动编程
和面向数据设计(编程)
作为一种技术手段. -
和函数式编程的关系
- 我崇尚简单。目前的FP理论太复杂了,所以我只使用了最简单、最基本、最核心的部分:纯函数,函数一等公民。
- 将"类型理论"替换成为"制造业的标准规范体系", 使用制造业制造标准化产品的方法。 我认为这应该是Clojure的spec的发展方向, 但我认为现在spec太丑了, 可读性很差。
-
和关系式数据库的关系
- 使用hash-map实现关系数据模型
- 用Clojure核心API函数实现关系式数据操纵。
- 并行(事务)方法:把"MVCC(STM)或锁机制"替换为基于 Gantt 图表算法的动态计划,避免了资源竞争和事务(版本)冲突, 并结合制造业最佳实践和管理科学,最终创造此方法。
- 另见
-
和Clojure的关系
- 它和Clojure的早期理念STM的目标是相似的, 但很遗憾, 现在STM好象在clojure社区里并不流行。
- 它和lisp一样, 都追求的简单和统一, 但好象在lisp社区这只是成为宏和S表达式的宣传口号。
- 它源自Clojure的面向数据编程的思想和管道函数(->>,->),但不幸的是,Clojure社区中的某些人非常不喜欢将两者合在一起全面使用, 当它在Clojure社区中发布相关主题时, 它经常被投诉偏离主题., 以致它被隐藏并删除。
-