Reduce System Complexity with Data Oriented Programming

preview_player
Показать описание
Title: Reduce System Complexity with Data Oriented Programming
Date: January 25, 2023
Duration: 1HR

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

Takeaways

1. Apply Data-Oriented Programming principles in your preferred programming language.
2. Apply data validation techniques without using static types.
3. Represent data with immutable data structures.
4. Manipulate data with generic functions.

SPEAKER
Yehonathan Sharvit, Software Architect, Cycognito
Yehonathan Sharvit has been working as a software engineer since 2000, programming with C++, Java, Ruby, JavaScript, Clojure, and ClojureScript. Currently, he is a software architect at Cycognito, building software infrastructures for high-scale data pipelines. He is the author of "Data-Oriented Programming," published by Manning.

MODERATOR
Paul DeGrandis, Senior Research Director, Kevel
Paul deGrandis is the Senior Director of Research at Kevel. He is leading work in distributed systems, intelligent forecasting, and cognitive computing. Paul is a member of ACM and participates in the ACM Global Practitioner Advisory Board. He is also a member of W3C Advisory Committee and actively participates in W3C groups.
Рекомендации по теме
Комментарии
Автор

I didn't get several things.

For a long time I thought that data encapsulation gives less connections between data and code, so you have to look less code to realize consequences of changes, and thus it leads to less system complexity. But you say that data that can be accessible from any place is good. How can globally accessible data give less system complexity?

With approach "data as value" you said that it does not require any synchronization. It sounds like there is no data sharing between two parallel computations at all. And in this case of course you don't need any of synchronization technics. How to make simultaneous changes for a "library" from two parallel computations? Is it possible in "data as value" approach?

Thank you.

IlyaKormin
visit shbcf.ru