Data-Oriented Programming, Video Edition

Data-Oriented Programming, Video Edition

English | MP4 | AVC 1280×720 | AAC 44KHz 2ch | 71 Lessons (9h 43m) | 1.14 GB

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 to:

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

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.

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.

Table of Contents

1 Part 1. Flexibility
2 Complexity of object-oriented programming
3 UML 101
4 Sources of complexity
5 Not trivial data serialization
6 Complex class hierarchies
7 Separation between code and data
8 Code modules
9 DOP systems are easy to understand
10 Basic data manipulation
11 Representing records as maps
12 Manipulating data with generic functions
13 Calculating search results
14 Handling records of different types
15 State management
16 Structural sharing
17 Implementing structural sharing
18 Ensuring system state integrity
19 Basic concurrency control
20 Reducing collections
21 Implementing the reconciliation algorithm
22 Unit tests
23 Unit tests for functions down the tree
24 Unit tests for queries
25 Unit tests for mutations
26 Part 2. Scalability
27 Basic data validation
28 JSON Schema in a nutshell
29 Schema flexibility and strictness
30 Schema composition
31 Advanced concurrency control
32 Thread-safe counter with atoms
33 Thread-safe cache with atoms
34 Persistent data structures
35 The efficiency of persistent data structures Part 1
36 The efficiency of persistent data structures Part 2
37 Persistent data structures libraries
38 Persistent data structures in action
39 Database operations
40 Storing data in the database
41 Advanced data manipulation
42 Web services
43 Representing a server response as a map
44 Search result enrichment in action
45 Part 3. Maintainability
46 Advanced data validation
47 Function arguments validation
48 Advanced data validation
49 Automatic generation of schema-based unit tests
50 Polymorphism
51 Multimethods with single dispatch
52 Multimethods with multiple dispatch
53 Integrating multimethods in a production system
54 Advanced data manipulation
55 Manipulating nested data
56 Unwinding at ease
57 Debugging
58 Reproducibility with numbers and strings
59 Unit tests
60 Dealing with external data sources
61 Appendix A. Principles of data-oriented programming
62 Appendix A. Benefits of Principle 1
63 Appendix A. Cost for Principle 1
64 Appendix A. Cost for Principle 2
65 Appendix A. Principle 3 Data is immutable
66 Appendix A. Cost for Principle 3
67 Appendix A. Benefits of Principle 4
68 Appendix B. Generic data access in statically-typed languages
69 Appendix B. Generic access to class members
70 Appendix C. Data-oriented programming A link in the chain of programming paradigms
71 Appendix C. DOP principles as best practices