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),是一种形式主义概率语法的计算语言学。
背景
现状
随着软件需求的日益复杂发展,远古时期面的向过程编程思想才渐渐萌生了面向对象编程思想。当人们发现面向对象在应对高层软件的种种好处时,越来越沉醉于面向对象,热衷于研究如何更加优雅地抽象出对象。然而现代开发中渐渐发现面向对象编程层层抽象造成臃肿,导致运行效率降低,而这是性能要求高的游戏编程领域不想看到的。
GDC2017上的演讲 Overwatch Gameplay Architecture and Netcode 讲述了《守望先锋》所使用的 ECS 架构,这个架构实际上就是基于面向数据编程的思想。
之后,面向数据编程的思想越来越被接受,已经是现代游戏编程中不可或缺的一部分,ECS架构也成了游戏业界里Gameplay架构的一个典中典。
例如 Unity 2018 也跟着推出了 ECS 框架的 preview版本(也有插件所支持的 Entitas 框架),尽管目前仍不完善。
面向数据编程是什么?
先来一个简单的比较:
- 面向过程:建立解决问题所需的各个步骤(函数)。
- 面向对象:建立解决问题所需的各个模型(类)。
- 面向数据:优先考虑数据的存取及布局(数据)。
也就是说,面向过程和面向对象都是解决问题的一种方法,而面向数据只是一种优化的设计思想,而非解决问题的方法。
那么所谓的考虑数据存取/布局是什么意思呢?
后面看不懂了。。。
更多文章请关注《万象专栏》
转载请注明出处:https://www.wanxiangsucai.com/read/cv71803