It is an awesome book which clearly explains why representing data directly without wrapping them in objects makes the system less complex and more understandable. These ideas were popularized by Clojure but I love that they are explained using traditional languages such as JS.
The data-oriented programming (DOP) is a programming paradigm like the more famous object-oriented programming (OOP) and functional programming (FP) paradigms.
DOP adopts some concepts from FP (immutability, pure functions) but its main focus is to reduce the complexity of the applications by streamlining the flow of the data inside the application and exchanged by the application with external resources.
The Clojure language popularised the DOP paradigm but it can be also applied to other languages. The code examples in the book are in JavaScript with the Lodash library. OOP code examples are in Java.
Sharvit's book does a good job explaining the DOP approach to the most common development problems, comparing it with the OOP one. The four DOP principles are gradually introduced with a lot of code and simple but effective writing. Dialogues between fictitious characters easy the description of the least simple DOP concepts.
The appendixes are very important: Appendix A summarises the DOP concepts while appendix B shows how to implement the DOP paradigm using static-type languages like Java. The remaining two appendixes are on DOP history and the Lodash library.
The book is superb! Yehonathan starts by highlighting the trade-offs of Object Oriented programming and how to reduce complexity with help of data-oriented programming. I wish I had read this book before my undergraduate program.
The second part describes concepts like data inspection, polymorphism, Lock free. All of these concepts are heavily used by programmers daily. Each page are valuable tips that can be applied in day to day programming.
The third and last part is the most challenging where the author encourages the reader to leave its comfort zone and write your own manipulation tool set, extend primitive data types and write unit tests that covers property based testing.
The language of the book is not complex and easy to grasp for a new comer. The learning during the different chapter is seamless, also the reader will feel several deja-vu moments, at least, I did.
I recommend the book to readers that have only experience with Object Oriented but never dare to try the functional paradigm. From my point of view, Yehonathan does an excellent job as an author and therefore gets five stars.
I really enjoyed the Socratic style of writing that present the benefits of dop via a sequence of dialogues between programmers developing a software.
That being said, the book is great and bring light to dop just when it is ripe for widespread adoption. I see a great benefit for it in the ML world (not the scope of the book) but where data manipulation and preprocessing take most of dev time and so dop has much to offer. One finds peace when he/she knows that the same input will always deliver the same output.
DOP principles like data immutability and stateless programs also facilitate parallelization and lazy evaluation.
A very good book, exerting simple principles to solve complex, changing requirements.
This is one of these books where the simplicity of the points and arguments contradicts established practice, to the point where one goes "but why don't we always do this?" Although the techniques are formulated against certain coding platforms in usage in the 2020's, they are timeless in their solid principles and foundation. This is worth a read to think about one's coding practices. And perhaps change for the better.
as a non OOP engineer, I'd struggling during first few chapters. but after that, it works fine, very insightful!
my senior been implementing this "OOP" and "FP" concept on the current project, and I've been struggling to like 'why is it should be this way and that way'.
but after reading it, I can see exactly that my senior is doing great. and I am going to pursue this DOP journey!
Very interesting read. It explains an alternative approach to Object-Oriented Programming for a practical example (an application to manage books for public libraries), starting from a pure OOP approach and then gradually shifting towards a more and more DOP design. It's probably hard to apply DOP to any program, but reading this book will surely give good ideas to be used even in more traditional architectures.
Berates OOP while not understanding its meaning. Alan Kay, who coined the term OOP, specifically ruled out C++ and Java as OOP languages, and said OOP is more like the Actor model, while this book keeps insisting that OOP is Java and C++. Moreover the dialogue style of the book is not suited for a work targeting technical people, i.e. difficult to find any references for the claims the author is making.
While the idea is very interesting, and the book is well written, it completely ignores the central issues of data-related programming: performance management and data storage evolution (in the simplest case, data schema evolution).
That makes the applicability of the whole paradigm rather questionable in real-world scenarios.
A good introduction to Data-Oriented Programming. I found it useful, as a JavaScript developer, to be introduced to some different ideas from the Clojure world. I'd recommend it for anyone looking for some new ideas in a functional programming paradigm.
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.
Probably the best modern book on data-oriented programming. This book follows a "Phoenix project" approach which means that it tries to build a story between some characters while trying to teach you things. The background story doesn't really have any real interest but it helps make the book entertaining instead of dry. It used javascript and lodash to build a project from scratch to hero. I'd prefer if something like python could have been used instead but javascript is pretty trendy nowadays for backend as well. All-in-all this book was great, the examples are well formed and the fact that it takes a project from requirements level to full working one is great. My only gripe is that in every chapter there are some key lessons that are mentioned in terms of dialogue (aka Joe the wise said X) and then you get the exact same thing in a highlight quote as well. I'd have preferred the thing being rephrased or phrased in a more "generic" fashion but maybe it's me being pedantic. Highly recommended