Many years ago Ed Ashcroft and I invented the declarative language Lucid. It’s had an
interesting history.
To begin with, we never intended to design a dataflow language. All we wanted was
a more rigorously structured language which would make it easier to prove assertions
about programs.
I’d moved into computer science after leaving Berkeley and soon became convinced
that this new-fangled “structured programming” was the way to go. In fact I quickly became a real fanatic, convinced that not only did the goto statement have to go, but that even assignment statements caused trouble. My objection to assignments was that they looked like equations but were typically used in a way that defied the logic of equality. For example, early in a program you can have
I = 1
but later you can have
I = J*J+3
which contradicts the first equation. Even worse, you can have
I = I+1
which contradicts itself (because it implies 0=1). No wonder program proving is difficult!
So here’s the idea: a multivalued logic in which there are truth values that are not nearly as true as ‘standard’ truth, and others that are not nearly as false as ‘standard’ falsity.