面向数据和数据驱动的程序有什么区别?

What's the difference between Data Oriented and Data Driven Programs?

我对面向数据的设计略有了解,比如没有 class 用于单个对象,而是 class 包含多个对象,例如:

struct Circle { int x, y; int radius;  };

你会:

struct Circles { std::vector<int> xpos; std::vector<int> ypos; std::vector radii };

(希望这是对面向数据设计的正确解读) 但是,是否有类似数据驱动的方式来执行此操作?

两者没有关联。数据驱动编程是关于消费和产生信息流的过程。想一想:Unix 命令,您 link 在管道中一起使用。 DDP 涵盖的不仅仅是单线管道;输入和输出的图形网络;甚至以输入为条件的输出路由。在一个进程中,协程网络可以是数据驱动编程的一个例子。维基百科文章对此进行了很好的介绍。

面向数据的设计关注复杂数据的存储方式;缓存有效性,或通过生成副本来消除锁争用。数据的列存储与行存储是 DoD 的数据库应用程序。作为副作用,DoD 似乎与 OOD 交锋;后者试图隐藏对象基础数据。 DoD 公开数据,因此用户可以选择以最适合实际存储的方式处理结构化集合。维基百科文章有点薄。