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

Posted

技术标签:

【中文标题】面向数据的程序和数据驱动的程序有啥区别?【英文标题】:What's the difference between Data Oriented and Data Driven Programs?面向数据的程序和数据驱动的程序有什么区别? 【发布时间】:2021-04-06 17:16:01 【问题描述】:

我对面向数据的设计有点了解,例如,您拥有一个包含多个对象的类,而不是为单个对象创建一个类,例如:

struct Circle  int x, y; int radius;  ;

你会:

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

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

【问题讨论】:

为什么不将两者结合起来,这样你就有了std::vector&lt;Circle&gt; Circles; @Someprogrammerdude 我认为这可能是因为它是面向数据的而不是面向对象的,代码受到这个答案的启发:***.com/questions/1641580/… 根据答案,你这样做的方式是 OOP 方法而不是国防部的人 【参考方案1】:

两者没有关系。数据驱动的编程是关于消费和产生信息流的过程。想一想:在管道中链接在一起的 Unix 命令。 DDP 涵盖的不仅仅是单线管道;输入和输出的图形网络;甚至输出路由以输入为条件。在一个进程中,协程网络可以是数据驱动编程的一个例子。***的文章很好地涵盖了这一点。

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

【讨论】:

所以,数据驱动编程更像是一个 Discord 机器人 [IIRC 那些使用协程的东西] 而面向数据则类似于粒子系统之类的东西? 我恳求对 Discord 机器人一无所知。协程根本就是 ddp 的一小部分。当银行网络相互传输交易流时,ddp 变得有趣。粒子系统对我来说闻起来像 DDP:许多独立的部分在说话。国防部关注硬时间限制和大量数据。在 youtube 上查看“Mike Acton”:(游戏)专家和健谈者。 DoD 通常看起来比(比如说)面向对象设计更接近金属……但我发现 DoD 适用于高级设计,尤其是在 DDP 情况下:-) hth

以上是关于面向数据的程序和数据驱动的程序有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

laravel 中 Eloquent 和数据库认证驱动有啥区别

vb语言和c语言有啥区别?

ProgramData 和 AppData 有啥区别?

数据库驱动程序和数据库方言之间的区别

ch340驱动和RS232有啥区别? 能不能做一个任何型号的51单片机都能用的下载模块??

DAO 和存储库模式有啥区别?