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#.

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

423 pages, Kindle Edition

Published September 27, 2022

17 people are currently reading
79 people want to read

About the author

Yehonathan Sharvit

4 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
14 (50%)
3 stars
6 (21%)
2 stars
3 (10%)
1 star
2 (7%)
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.
832 reviews40 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.
4 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.
191 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.