stableboy

 

(转)面向数据


https://baike.baidu.com/item/%E9%9D%A2%E5%90%91%E6%95%B0%E6%8D%AE/3391168?fr=aladdin

 

面向数据

面向数据主要是指面向数据解析(DOP,Data-oriented parsing),也称为面向数据编程(data-oriented processing),是一种形式主义概率语法的计算语言学。

 

DOP的构思是在1990年由RemkoSchain提出的,其目的是发展以绩效为导向的(performance-oriented)语法框架。不同于其他的概率形式主义,DOP考虑的更多的是在树库中所有的子树,而不是被限制在像2级子树(如:PCFGs)这样的结构中。
已开发DOP已有多个。最初的版本是基于树替换语法的,而最近,DOP已与词汇功能语法(LFG)的结合。由此产生的DOP-LFG在机器翻译中的将会有广阔的应用。
而在分析和设计系统的时候,这面对数据,面对对象,面对过程三种方法各有侧重点。
就定义而言,面向数据是更多的是在分析、设计、以及实现过程中,以数据为中中心,跟踪数据流向,从而保证数据流守恒。例如,由某个模块分别流向某些模块。而上述一切的操作都基于维护这些数据的完整性、一致性和有效性。同时在设计类的时候,面向数据的设计,为了体现数据的重要性,一般是在类的开始就定义数据,方法和具体操作定义如下。 比如:
面对数据
class example_1
{
public: int data;
...
public:// operation
}
面向对象
class example_2
{
public://operation
private:int data;
}
两者略有区。
 
 
 
 
https://www.cnblogs.com/KillerAery/p/11746639.html
 

随着软件需求的日益复杂发展,远古时期面的向过程编程思想才渐渐萌生了面向对象编程思想。当人们发现面向对象在应对高层软件的种种好处时,越来越沉醉于面向对象,热衷于研究如何更加优雅地抽象出对象。然而现代开发中渐渐发现面向对象编程层层抽象造成臃肿,导致运行效率降低,而这是性能要求高的游戏编程领域不想看到的。

GDC2017上的演讲 Overwatch Gameplay Architecture and Netcode 讲述了《守望先锋》所使用的 ECS 架构,这个架构实际上就是基于面向数据编程的思想。

之后,面向数据编程的思想越来越被接受,已经是现代游戏编程中不可或缺的一部分,ECS架构也成了游戏业界里Gameplay架构的一个典中典。

例如 Unity 2018 也跟着推出了 ECS 框架的 preview版本(也有插件所支持的 Entitas 框架),尽管目前仍不完善。

面向数据编程是什么?


先来一个简单的比较:

  • 面向过程:建立解决问题所需的各个步骤(函数)。
  • 面向对象:建立解决问题所需的各个模型(类)。
  • 面向数据:优先考虑数据的存取及布局(数据)。

也就是说,面向过程和面向对象都是解决问题的一种方法,而面向数据只是一种优化的设计思想,而非解决问题的方法。

那么所谓的考虑数据存取/布局是什么意思呢?

 

后面看不懂了。。。

 

 

 

posted on 2021-12-03 11:59  陌翔  阅读(194)  评论(0编辑  收藏  举报

导航