Eliminate the unavoidable complexity of object-oriented designs. The innovative data-oriented programming paradigm makes your systems less complex by making it simpler to access and manipulate data.
In Data-Oriented Programming you will learn how
Separate code from data Represent data with generic data structures Manipulate data with general-purpose functions Manage state without mutating data Control concurrency in highly scalable systems Write data-oriented unit tests Specify the shape of your data Benefit from polymorphism without objects Debug programs without a debugger
Data-Oriented Programming is a one-of-a-kind guide that introduces the data-oriented paradigm. This groundbreaking approach represents data with generic immutable data structures. It simplifies state management, eases concurrency, and does away with the common problems you’ll find in object-oriented code. The book presents powerful new ideas through conversations, code snippets, and diagrams that help you quickly grok what’s great about DOP. Best of all, the paradigm is language-agnostic—you’ll learn to write DOP code that can be implemented in JavaScript, Ruby, Python, Clojure, and also in traditional OO languages like Java or C#.
Forewords by Michael T. Nygard and Ryan Singer.
About the technology Code that combines behavior and data, as is common in object-oriented designs, can introduce almost unmanageable complexity for state management. The Data-oriented programming (DOP) paradigm simplifies state management by holding application data in immutable generic data structures and then performing calculations using non-mutating general-purpose functions. Your applications are free of state-related bugs and your code is easier to understand and maintain.
About the book Data-Oriented Programming teaches you to design software using the groundbreaking data-oriented paradigm. You’ll put DOP into action to design data models for business entities and implement a library management system that manages state without data mutation. The numerous diagrams, intuitive mind maps, and a unique conversational approach all help you get your head around these exciting new ideas. Every chapter has a lightbulb moment that will change the way you think about programming.
What's inside
Separate code from data Represent data with generic data structures Manage state without mutating data Control concurrency in highly scalable systems Write data-oriented unit tests Specify the shape of your data
About the reader For programmers who have experience with a high-level programming language like JavaScript, Java, Python, C#, Clojure, or Ruby.
About the author Yehonathan Sharvit has over twenty years of experience as a software engineer. He blogs, speaks at conferences, and leads Data-Oriented Programming workshops around the world.
Table of Contents PART 1 FLEXIBILITY 1 Complexity of object-oriented programming 2 Separation between code and data 3 Basic data manipulation 4 State management 5 Basic concurrency control 6 Unit tests PART 2 SCALABILITY 7 Basic data validation 8 Advanced concurrency control 9 Persistent data structures 10 Database operations 11 Web services PART 3 MAINTAINABILITY 12 Advanced
This book offers a helpful pack of introductory directions to a programming perspective where data is the center of the design. So, it is a good starting point for those who want to understand how game designers solve problems like parallelization.
Professionally, I write code for web applications in PHP for biomedical use. Thus, data play a central role in my professional life. At first, I tried to design my programs around object-orientated (OO) principles, but soon found that data played a strong role that OO actually restrained. Years later, I found how React divided itself between immutable data, state information, and code. Though I no longer code in React, I find this division still helpful in how I design code.
Curious about this book’s title and the theoretical advances that might help me, I picked it up. It makes a similar leap that I made years ago, but it does so in a way that attaches theoretical concepts to my more practical adjustments. It uses language-agnostic technologies like JSON Schema and Multi Methods to teach programming concepts that can be generally applied to multiple contexts.
I read this book as an audiobook. At first, I was skeptical that I would follow much of the book’s flow because of the format. However, I was pleasantly surprised that I retained a great deal. I found myself picturing code even as I drove or washed dishes. The book’s style is conversational and framed as a human story. Therefore, it is not heavily convoluted as some coding textbooks are.
This book’s main audience is clearly the computer programming community. It particularly addresses those who dwell in a space of big data and who see OO as a slower paradigm to complete projects. Indeed, I suggest Yehonathan Sharvit points not only to quicker results but also to more accurate outcomes. The text elegantly describes how to reorient one’s approach to data-driven web programming, both at micro and macro levels, so that a better product can emerge.
extremely harmful book - 4 doubtful ideas spread thinly over 400 pages 1) "Small performance hit" - sure, this is why clojure in all performance tests 8-10 times slower than Java 2) first real array-oriented PL was APL, and all disadvantages of such systems have long been known - poor scalability in terms of entities. In book they barely 10, in typical systems - several hundreds each containing 10-100 fields. Good luck in finding references to fields "name" & "id"
so for prototypes this approach ok, but for production - it's just waste of computation resources to the delight of cloud providers
However considering that for the last 30 years the industry has been inexcusably choosing the most vomit-inducing and slow solutions - this heresy has a chance to become the next Official Cult.
I was THE OO programmer. OO seemed to be THE best programming pradigm to work with. I was always struggling with some aspects of OO but they seemed to be related to the problems themselves, not on how to tackle them. This book provided a great insight why you might consider the data-oriented programming paradigm for tackling programming problems. I also like his writing style based on a story plot to introduce the paradigm and it's principles.