After reading this book, I simply had to throw everything I read about OOP, Domain Driven Design, Functional Programming into the garbage. It’s a breath of fresh air to actually look at everything as Data Transformations. I have pushed code with this stuff into Production and code is sane even for a mill users and with just 30k loc. Forget all you know about Code Reuse, Data Transforms are the real deal !
I’m going to read up on this later as the intro is interesting. What it reminds me of initially is something that’s extremely old with long-time application in both gaming and high-assurance systems: state machine model. These model the system as essentially pieces of data with operations on them that change their state. The Abstract and Interacting State Machine models compose them often with interface checks (aka sanity/safety checks) between them. Hardware showed us some could also be stateless with easier analysis or synthesis with functional programming doing something similar as pure functions. The use of these models combined with good requirements and decomposed design led so some of the highest reliability and security systems ever constructed. Also many AAA game titles albeit without the assurance activities outside performance, memory efficiency, and economical testing. ;)
The similarity means it’s worth exploring further. The basic principle is tried and true: the thing you should default to where possible. I’ll find it interesting comparing and contrasting to older models both informal and formal.
EDIT to ADD: Intro also sounds like a complete focus on bottom-up programming. Not that upfront design and focus on problem domain was absolutely critical to success of many projects with many failures in the field coming from a lack of that. The basic data and machine ops only tell you so much. Hybrid is almost always better where one looks at things abstractly in terms of problem domain & general principles + specifically in terms of data, functions, environment, and hardware/OS/tools.
As far as I can tell, this concept’s mostly been applied to gaming. I’m curious how well it would apply line-of-business or other application areas with different data access patterns. I suspect the high-level thinking (a focus on data layouts that are correct and efficient by construction) would transfer, but some of the patterns would shift. The prevalence of memory-abstracted languages like Java and C# in other areas would also reduce the relevance of many of these patterns..
Has anyone read or had experience with applying this concept outside of game development?
In the introduction it does say “This book is a practical guide for serious game developers. It is for game developers working to create triple A titles across multiple platforms, for independent developers trying to get the most out of their chosen target hardware, in fact for anyone who develops cutting edge software in restrictive hardware.”