4 ms·
I found another interesting approach to formalizing design patterns a few years ago: https://dl.acm.org/citation.cfm?id=2207827 https://dl.acm.org/citation.cfm?
by westoncb 9y ago
I found another interesting approach to formalizing design patterns a few years ago: https://dl.acm.org/citation.cfm?id=2207827 https://dl.acm.org/citation.cfm?id=2207827 —rather than expressing them as particular instances of more general things (as you'd do using category theory), he breaks them into a small set of more fundamental things which can be re-combined into familiar design patterns.
I find it pretty interesting that it's possible to do both of these things... I'd also bet category theory isn't the only generalization and 'elemental design patterns' isn't the only decomposition.
Also, while the formalization might be interesting, I wish I could be sold on its value... I'd definitely be interested in seeing some 'train of thought' examples of how someone used category theory (for instance) to reason about some architectural issues for something like... a game engine or web framework or CAD tool—something where the domain isn't going to make it an easy fit for category theory on its own.
- proc0 9y agoI will check that link out, but I'm willing to bet CT actually captures the entirety of design patterns plus any subset that you might make out of them. CT is the most abstract math and is really good for studying structures and patterns of computation itself.
- TuringTest 9y ago> rather than expressing them as particular instances of more general things (as you'd do using category theory), he breaks them into a small set of more fundamental things which can be re-combined into familiar design patterns. I haven't read that book, but it sounds similar to how Peter van Roy deconstructs programming paradigms: [1] https://www.info.ucl.ac.be/~pvr/VanRoyChapter.pdf https://www.info.ucl.ac.be/~pvr/VanRoyChapter.pdf [2] https://en.wikipedia.org/wiki/File:Programming_paradigms.svg https://en.wikipedia.org/wiki/File:Programming_paradigms.svg
- runeks 9y ago> … rather than expressing them as particular instances of more general things (as you'd do using category theory), he breaks them into a small set of more fundamental things which can be re-combined into familiar design patterns. How do these two approaches differ from each other? As far as I can see, they’re exactly the same thing. From the linked article: > Smith introduces a foundational layer of patterns terminology: a collection of core patterns that can't be decomposed further. This is exactly the purpose of category theory. Rather than have group theory, set theory, propositional logic, etc., category theory unites all of these into something that cannot be decomposed further (identity and composition).