A couple weeks ago I attended the one-hour webinar “Reduce System Complexity with Data-Oriented Programming” from the ACM. I have been a member of the ACM for a long time and enjoy their webinars, magazine, and access to on-line courses. At this time they offer access to PluralSight which happens to also be offered at work.
The following comes from the invitation to the ACM webinar:
Complexity is one of the main difficulties in the development of successful software systems. Modern programming languages and frameworks make it easy to develop and deploy our code quickly, but as the code base grows, complexity makes it challenging to add new features.
Data-oriented programming is a paradigm that aims at reducing the complexity of information systems such as back-end applications, web services, web workers, and front-end applications by rethinking data. Data-oriented programming treats data as an immutable value that is manipulated by general-purpose functions. Moreover, data is validated à la carte.
In this talk, we illustrate the principles of data-oriented programming in the context of a software production system. After attending this talk, you will be able to apply data-oriented programming principles in your preferred programming language and reduce the complexity of the systems you build.
- Apply Data-Oriented Programming principles in your preferred programming language.
- Apply data validation techniques without using static types.
- Represent data with immutable data structures.
- Manipulate data with generic functions.
Personally I have been using Object Oriented Programming (OOP) for a long time.
I have also looked at Functional Programming (FP) e.g., Haskell and understand the advantages it provides. I still have a couple books on Haskell in my personal library. That said, I have not used it for production yet. I use Python which is a FP language.
Data Oriented Programming (DOP) is something that had escaped me until I attended the ACM webinar. At this time it does not seem to be that popular. I did get a copy of the book Data-Oriented Programming Reduce software complexity by Yehonathan Sharvit. Currently reading and experimenting with the concepts. Will provide my observations when I am done with the book.
As you can tell by the seductive description in the webinar description, DOP is something to try to at least determine if what it provides is effective and easy to implement. In any type of engineering, including software engineering, there are trade offs that need to be understood and selected based on the requirements. I have always embraced the Keep It Short and Simple (KISS) principle. For me it has paid off over time. In general a large number of software developers and engineers use what they are familiar with, told to use, or look up the latest (bleeding edge) technology and go with it without evaluating the pros and cons.
At this time I am not sure about the benefits of DOP yet. That said; it is always good to have additional tools in your toolkit. You do not know when it might come handy.