Serious question. Does DOD mean anything more than array programming, in practice?
Yes. Array programming happens to overlap heavily with DOD in modern hardware because of caching and SIMD, but if you were programming an Atari ST it wouldn't. There are also cases where the optimal data format isn't array oriented because the memory access patterns for the problem in question just require something else. You also have to think of hot vs cold data, which has nothing to do with arrays.
Introduction to Data-Oriented Design [pdf]
11–20 of 83 posts
Re: Introduction to Data-Oriented Design [pdf]
#12Re: Introduction to Data-Oriented Design [pdf]
#13Re: Introduction to Data-Oriented Design [pdf]
#14Re: Introduction to Data-Oriented Design [pdf]
#15At work we are rewriting and reengineering system from scratch and its crazy because the limitations of the old system are now gone we get the most insane feature requests that are even accepted by the team lead et al. This makes such an approach impossible since DoD is exactly the opposite of flexible design in my opinion.
Im curious has anybody really followed this in a big long living commercial project?
Re: Introduction to Data-Oriented Design [pdf]
#16I personally love the idea of DoD but from my experience it rarely works well in practice since one of the key assumptions of understanding ur problem is often not given as new requirements pop up and change all the time. At work we are rewriting and reengineering system from scratch and its crazy because the limitations of the old system are now gone we get the most insane feature requests that are even accepted by…
Re: Introduction to Data-Oriented Design [pdf]
#17The real key pillar to this world view is putting the data first in your design of the algorithm. So if your working on a physics engine and your optimizing collision detection, you think about the data in -> data out of the problem you are solving as the primary driver of how the code should be written. You start with defining the data, and build from there. Different types of applications all have different shapes…
Re: Introduction to Data-Oriented Design [pdf]
#18This seems like a particular branding on cache-aware data structures and algorithms. Is there more to it?
People posted a wide variety of specific ideas under my other comment: https://news.ycombinator.com/item?id=49061421
Re: Introduction to Data-Oriented Design [pdf]
#19I personally love the idea of DoD but from my experience it rarely works well in practice since one of the key assumptions of understanding ur problem is often not given as new requirements pop up and change all the time. At work we are rewriting and reengineering system from scratch and its crazy because the limitations of the old system are now gone we get the most insane feature requests that are even accepted by…
E.g. if your job is writing game engines or middleware used by AAA games with fancy graphics to run on consumer hardware, getting the most efficient use out of the players' limited memory bandwidth may be very important.
For many (most?) arbitrary commercial software projects in other contexts, performance isn't high priority & memory bandwidth isn't a bottleneck. Performance just has to be 'good enough' & 'good enough' performance may be easily attained by writing typical OO code that uses cache & memory very inefficiently - so in those cases DoD is an engineering trade off that solves a problem that doesn't need to be solved & may create new problems if introduced.
Re: Introduction to Data-Oriented Design [pdf]
#20Earlier quoted context omitted.
Yes. Array programming happens to overlap heavily with DOD in modern hardware because of caching and SIMD, but if you were programming an Atari ST it wouldn't. There are also cases where the optimal data format isn't array oriented because the memory access patterns for the problem in question just require something else. You also have to think of hot vs cold data, which has nothing to do with arrays.
Can I propose renaming it to Hardware Oriented Programming?