Jump to ratings and reviews
Rate this book

Data-Oriented Programming: Reduce Software Complexity

Rate this book
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#.

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 nonmutating general-purpose functions.

About the audience

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 20 years of experience as a software engineer. He blogs, speaks at conferences, and leads Data-Oriented Programming workshops around the world.

PLEASE When you purchase this title, the accompanying PDF will be available in your Audible Library along with the audio.

Audible Audio

Published October 20, 2022

18 people are currently reading
83 people want to read

About the author

Yehonathan Sharvit

5 books13 followers

Ratings & Reviews

What do you think?
Rate this book

Friends & Following

Create a free account to discover what your friends think of this book!

Community Reviews

5 stars
3 (10%)
4 stars
15 (51%)
3 stars
6 (20%)
2 stars
3 (10%)
1 star
2 (6%)
Displaying 1 - 4 of 4 reviews
2 reviews
October 13, 2022
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.
Profile Image for Scott Pearson.
867 reviews43 followers
July 7, 2024
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.
5 reviews
September 18, 2025
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.


Profile Image for Alex Fürstenau.
196 reviews14 followers
May 14, 2023
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.
Displaying 1 - 4 of 4 reviews

Can't find what you're looking for?

Get help and learn more about the design.