(Replying to PARENT post)

Alright, what’s your criteria for a “theory”? Similarly, what’s your criteria for “program design”?

I want to have a better idea of the goal posts that you’re setting.

👤RangerScience🕑2y🔼0🗨️0

(Replying to PARENT post)

formal theory is the full term.

https://www.wikiwand.com/en/Formal_theory

The first three definitions fit.

Anything that's called "Design" usually means there's no "theory" around it. It's all ad-hoc gut feelings and made up. Things like UI or art typically have a lot of "design" associated with it.

Usually a "theory" is a very concrete thing. You don't "design" the shortest distance between two points. That's more of a calculation. A calculation is available because we have a formal theory called geometry.

We can calculate which algorithm is better because we have a formal theory around algorithm speed and memory.

But program organization? No. No theory. Just rules of thumbs and made up acronyms and big words masquerading as theory. We don't truly even have a formal definition of "good program design" or "technical debt" It's these nebulous terms and the culture shifts and changes with new fads all the time.

OOP used to be big with OOP design patterns as a big thing. Now OOP is on it's way out... Do you see that with geometry? Can the theory of geometry be a fad? You may not know it, but even SOLID is more religion than it is formal theory.

The closest thing to a formal theory of program organization I've seen is within functional programming and category theory. To get a formal theory for program organization we have to come of with formal definitions. What is good design? What is modularity? How do we compare the modularity of one program to another? None of these things have been defined yet but it looks like category theory and functional programming has sort of the primitives to build upon to make these concepts concrete. We're still far away from something formal but if we ever develop something along these lines it will likely arise from Functional programming or category theory.

Check this resource if you're interested: https://www4.di.uminho.pt/~jno/ps/pdbc.pdf

He calls it "program design by calculation" but it's really just program design using algebras. He can't prove why it's better because, again, lack of theory but it looks like this approach is generally the right direction.

👤corethree🕑2y🔼0🗨️0