Re: complex made simple?
1. Use Yoneda Lemma. Its intuitive explanation is: You work at a particle accelerator. You want to understand some particle. All you can do are throw other particles at it and see what happens. If you understand how your mystery particle responds to all possible test particles at all possible test energies, then you know everything there is to know about your mystery particle. 2. Use Howard Curry isomorphism. It states something like: A program is a proof that from a given business problem a certain solution (proposed by a business domain expert) can really be derived. I.e. it's not the programmer solving problems. All the solutions exist per se already. The programmer just connects a problem with a particular solution by writing some code. So: - For every method using global variables create its functional version with object types, e.g.: old: int foo(int x) { return x + this.y;} new: Integer fooFunctional(Integer x, Integer y) { return x + y;} - For every function create its fully typed version: old: Integer fooFunctional(Integer x, Integer y) { return x + y;} new: FooType fooFunctionalTyped(XType x, YType y) { return x + y;} where XType and YType may be e.g. only odd or even Integers and FooType is an union of XType and YType. - simplify your type system - profit! :) -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: complex made simple?
we need the TRIZ of software :-/ -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: complex made simple?
Rich has mentioned Polyas "How to solve it" in several talks. It's a great book on the matter. On Friday, October 14, 2016 at 11:59:56 AM UTC+2, Alan Forrester wrote: > > In Rich Hickey's talk "Simple Made Easy" he mentioned that there are > ways to take a system that somebody else wrote that is complex and > simplify it. > > Can anyone recommend some resources on how to do this? > > Thanks, > Alan Forrester > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: complex made simple?
It has been a while since I watched, but are you asking in terms of solutions (e.g. process modelling) or implementations (e.g. architectural styles). It is really hard to give any comprehensive answer here but some 'tools' I have found useful are: - clear thinking - identifying abstractions - by abstraction I mean strictly 'something that removes ambiguity and allows you to talk more clearly about it' - Domain Driven Design for a mechanism of breaking down complex domains. The Ubiquitous Language alone is worth its weight in gold - Event Sourcing and hexagonal architectures for handling complex implementations By far and away though, "clear thinking" is the tool which had the most effort. For this, I highly recommend the Theory of Constraints. Another technique I use heavily is describing things to the duck and noting how many times I have to use the word 'and' or, 'except in this case when ...'. Not sure this answered the question you were asking :-). On 14 October 2016 at 10:59, 'Alan Forrester' via Clojure wrote: > In Rich Hickey's talk "Simple Made Easy" he mentioned that there are > ways to take a system that somebody else wrote that is complex and > simplify it. > > Can anyone recommend some resources on how to do this? > > Thanks, > Alan Forrester > > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with your > first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
complex made simple?
In Rich Hickey's talk "Simple Made Easy" he mentioned that there are ways to take a system that somebody else wrote that is complex and simplify it. Can anyone recommend some resources on how to do this? Thanks, Alan Forrester -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.