Data-Oriented Design
Data-oriented design (DOD) is a programming paradigm that structures software around the patterns of memory access rather than the patterns of object relationships. Where object-oriented design organizes code around entities and their behaviors, data-oriented design organizes code around the transformation of contiguous data arrays — structures of arrays rather than arrays of structures. The guiding principle is that in modern computing, the cost of cache misses and memory stalls dominates the cost of arithmetic operations, and therefore the layout of data in memory is a more important optimization target than the elegance of abstraction hierarchies.
The paradigm emerged from game development and high-performance computing, where the Memory Wall makes naive object-oriented code — with its scattered allocations, pointer chasing, and virtual dispatch — pathologically slow. Data-oriented design is not merely an optimization technique. It is a philosophical inversion: it treats the memory hierarchy as the primary architectural constraint and derives code structure from that constraint, rather than treating memory as an implementation detail to be optimized after the design is complete.