Reduce System Complexity with Data-Oriented Programming • Yehonathan Sharvit • GOTO 2023

Reduce system complexity with data-oriented programming by treating data as data, not code, and avoiding mutation for safer and simpler systems.

Key takeaways
  • We separate code and data to reduce system complexity.
  • Data-oriented programming promotes treating data as data, not as code.
  • Immutable data allows for safe sharing and reduces the complexity of data manipulation.
  • The schema of data is used to describe the shape of data.
  • data can be represented as a JSON schema or a map/dictionary.
  • Inheritance is not necessary when using data-oriented programming.
  • Mutating data is a source of complexity and should be avoided.
  • Immutable data is safer to share and easier to debug.
  • Data-oriented programming aims to reduce complexity for information systems.
  • Principles of data-oriented programming:
    • Principle 1: Separate code and data.
    • Principle 2: Represent data as data, not as code.
    • Principle 3: Immutable data ensures safety and simplicity.
    • Principle 4: Use structural sharing to avoid complexity.
  • Data-oriented programming can be used in any programming language, and is especially useful for reducing system complexity.
  • By treating data as data, we can reduce the complexity of our systems and make them easier to understand and maintain.