How would you guys improve the definition of DOP in the article? Currently the definition is:
In https://en.wikipedia.org/wiki/Programming, data-oriented programming (DOP) is a https://en.wikipedia.org/wiki/Programming_paradigm based on the treatment of https://en.wikipedia.org/wiki/Data_(computing) as a https://en.wikipedia.org/wiki/Value_semantics and the usage of general-purpose code to manipulate data. The main objective of DOP is to reducehttps://en.wikipedia.org/wiki/Draft:Data-oriented_programming#cite_note-1 the accidental https://en.wikipedia.org/wiki/Programming_complexity of a program as it is defined by https://en.wikipedia.org/wiki/Fred_Brooks in his paper https://en.wikipedia.org/wiki/No_Silver_Bullet.
Is the definition clear and accurate?
How could we improve it?
Is it not important to compare it to other paradigms, for instance mentionning the dop claims to separate data and treatment
I guess it is being the data as a value sentence but Im pretty sure it is not clear enough for people who dont know dop already3
@caumond I don’t understand what you wrote about comparison with other paradigms
I think it's helpful to compare to the code as data philosophy in lisp
Since they're related in interesting ways
Could you elaborate a bit @metasoarous?
Well, to me DOP is somewhat two-pronged: • building code around domain data • using data apis in a higher order way to describe things that need to happen or be computed
For the second of these, I think Vega-Lite is a really great example
(Or Vega)
They are data APIs for specifying data visualizations
So... code as data in a way.
But not necessarily code as data in the traditional Lisp way, where it's a thing that happens at compile time via macros (allowing you to extend the language)
Rather, at run time, dynamically
Imagine you wanted to build an analytics tool with some graphical UI for describing computations that need to happen
How would a Clojurist approach building that?
Well, they'd probably build a data API for describing those computations
And then UI that composes those data structures
So that's the "higher order" sort of thing I'm talking about
And again, the relationship to Lisp philosophy is really interesting and important here
It’s very interesting
But…
I don’t think it’s part of Data-oriented programming
Oh; Interesting
I think that it relates to https://en.wikipedia.org/wiki/Declarative_programming
I think that connects though
Because specifying computations as data APIs is fundamentally declarative
Not all declarative APIs are necessary "as data", but I think most (if not all) data APIs are declarative APIs.
I agree
But the way I see it DOP is a guidance of how to represent data and how to manipulate data. Data that comes from the “real” world
Expressing computation logic as data is a different topic
Is it though? Is "computational logic" not part of "the 'real' world"?
I'm trolling a bit
I understand your distinction, but disagree that data-driven (or oriented) programming is limited to one but not the other
I think that expressing computation as data is a subtopic of declarative programming. For instance, SQL is declarative but not data.
I think that Prolog also is declarative but not data
Sure, but there is precedence for the idea of data-driven or oriented programming meaning this specific kind of declarative programming
There are plenty of talks out there about this
It's not just me
Are you sure that they call it data-oriented programming
I'm a little biased because my first Clojure book was the Joy of Clojure, which explicitly frames the clojure philosophy this way
Pretty sure
There are lot of similar terms to diffrent things
Sorry have to go; my washer is leaking as it so happens
O
O
Ok
We can continue later
There are lot of similar terms to diffrent data related paradigms:
1. https://en.wikipedia.org/wiki/Data-oriented_design 2. https://en.wikipedia.org/wiki/Data-driven_programming 3. https://en.wikipedia.org/wiki/Declarative_programming 4. https://en.wikipedia.org/wiki/Data-centric_programming_language