On Tuesday, April 18, 2017 at 9:13:58 PM UTC+1, Mark Hamburg wrote:
>
> Having read the reddit thread about just starting big and breaking things 
> down, it reminds of arguments I've heard for years about how monolithic 
> programs are easier to work with. They are. That's how we end up with them. 
> It's almost always easier to tack a little more onto an existing ball of 
> mud. If you've never worked in a statically-typed language then maybe Elm's 
> type checking seems like a revelation, but it isn't so revolutionary as to 
> throw out the experience that even static type-checking only gets you so 
> far. Everything that can change the model can violate the constraints on 
> the model that fall beyond the capabilities of the type system. Everything 
> that sees the full model is a potential dependency for each and every piece 
> of the model. Abstraction barriers are what make big programs possible. I 
> don't think there is any magic in Elm that changes this fundamental lesson 
> of 60 years of software development. It may make you feel you can move the 
> boundaries relative to what some other languages afford, but if your 
> architecture comes down to saying at the surface we have these few concepts 
> but inside that we just have a big ball of type-checked mud, that's not 
> really an architecture.
>

Well said. I kind of wanted to say something along these lines but you 
articulated better than I could have. Parnas' modular design principles are 
my principal guide.

There is room for the mud-ball and the pristine encapsulated architecture. 
I usually do some mud-ball hacking then figure out how I can tidy it up a 
bit better with a view to encapsulating data models and operations so that 
they are both well documented and can only be manipulated to produce legal 
states, as well as how to improve a data model using the type system to 
eliminate representations of illegal states.

Learn both (or all) approaches, I guess. Nested TEA is working very nicely 
for me and feels appropriate in many situations, but just not as a blanket 
approach for everything.

-- 
You received this message because you are subscribed to the Google Groups "Elm 
Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to