I think robust information software (AKA "CRUD" apps, data visualization and interaction etc.) should definitely be built with higher level paradigms, DSLs or a language that provides such capabilities out of the box for these reasons:
- principle of least power
- can often be talked and reasoned about more easily
- lends itself to visualization
- can be tested more easily and uniformly
- eliminates certain classes of accidental complexity
So yes it makes sense to use...
- relational algebra for data manipulation where feasible, functional programming for the rest
- (data driven / functional) state machines for control
...like the article is suggesting. I also kind of like the idea about I/O but I'm not 100% sure there, because I never played with such a system. Reactive programming is powerful too to manage data flow and again hides away plumbing and side-effects.
In a sense this is kind of already how many are programming in modern FP languages like Clojure (via libraries).
What we possibly lose with these approaches is performance, except the runtime/macros are fine tuned to make automatic optimizations, so some of that can be gained back in the long term. But I generally agree that there is tons of leverage in programming these things at a higher level.