Reduce system complexity with Data-Oriented programming

preview_player
Показать описание
Meetup #15

📖 Abstract
Data-Oriented programming is a paradigm that aims at reducing the complexity of software systems and making the development experience more productive. Data-Oriented programming draws a clear separation between code and data. It treats data as a value that is manipulated by general-purpose functions. 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, whether it's Object-Oriented or Functional, and reduce the complexity of the systems you build.

🗣 Speaker:
Yehonathan is passionate about making interesting things easy to understand.

📕Data-Oriented Programming:
Рекомендации по теме
Комментарии
Автор

This is not Data-oriented programming/design

TL;DR:
this presentation is mainly about doing web-development kinds of functional-ish programming without inheritance and without data mutation
& un-safe map based "structures" as function inputs - can be: error-prone, non-performant.
The term data-oriented programming has been previously established in game/high-performance computing and is used here incorrectly.

My thoughts on this presentation

I had a feeling for the entirety of the video that the presenter is not talking about data-oriented programming.

Data-Oriented programming generally today is mainly known from game development where people have been practicing the thing that they call it for decades, i.e. high performance computing.
But the presenter stated (at 9:27) that he doesn't think that his "data-oriented programming" is good for games
(this was the first flag that he is talking about something else).

At 16:15 he started to talk about some "principles" behind this way of programming which are mainly the principles of functional programming and NOT conventional data-oriented programming (the one used for high performance programming).

At 27:20 he starts talking about data representation, what he says there is a bit far away from conventional data-oriented programming that is mainly done in C, C++, C# nowadays. There you wouldn't use generic data structures as the presenter here is suggesting. The reason being that generic data structures not tied to the problem affect data fetching and manipulation negatively.

The author suggests using hash-maps for representing any data even records,
this way engineers can introduce dynamicity into even statically typed languages. Furthermore, he is suggesting every function to be unsafe by saying that keys in the hash-map (i.e. record fields, or class fields) should be assumed that they are there, and no checks should be implemented at all.
This leads to volatile code that has no gains and introduces fail points in every function/procedure.
I am not stating that unsafe (i.e. non-precondition checked) functions are incorrect, they are if the rest of the codebase is at every call-point, and if there is something to gain by using them - mainly performance.
But I think that doing unsafe map based "structures" as function inputs leads to increased development time.

See TL;DR above for my final thoughts.

Videos which are on the established meaning of data-oriented programming/design.

dreastonbikrain
visit shbcf.ru