Hacker News new | ask | show | jobs
by mithametacs 540 days ago
I read that and the followup. It’s good writing but I slightly disagree. Imperative is actually a closer mathematical formalism for some things.

I find imperative better for expressing state machines. I find declarative better for backtracking.

You can write a state machine with just a loop, an assignable, and conditions. Writing state in prolog is irritating.

2 comments

You don't even need a loop. Steps, conditions, and a 'goto'. Loop are actually a design mistake. They try to bound 'goto' by making it structured. They are declarative, by the way. As a special case or even as a common case they are fine, but not when they try to completely banish 'goto'. They are strictly secondary.

Similarly declarative programming is strictly secondary to imperative. It is a limited form of imperative that codifies some good patterns and turns them into a structure. But it also makes it hard or impossible not to use these patterns.

(I would also say that state machine is a foundational model for programming.)