On Wed, 5 Jul 2017 at 14:36 Peter Geoghegan pg@xxxxxxx wrote:
However, the OP seemed to be describing something that maps imperative
code to a declarative SQL query or something equivalent, which isn't
quite the same thing. The declarative nature of SQL feels restrictive
or at least unfamiliar to many programmers.
Yes, that is what I am describing.
SQL is great and I am fully on board with the idea. Everywhere I go, I promote the greatness of SQL, of the relational model, and of Postgres. I didn’t write in so much to challenge SQL or pitch navigational databases, as to ask about examples of “pseudo-imperative” languages.
Fortress is the most noteworthy of these; but anyone who’s seen Haskell’s do
notation realizes there is some promise in the idea: the imperative structure makes some programs much clearer, even in a pure functional language.
IMV, what the OP describes wouldn't work well because it would
superficially *appear* to not be restrictive in the way that some
people dislike, but actually would be just as restrictive. The only
way you could write it is by imagining what the SQL it produced looks
like.
It’s not so much that SQL is restrictive, as that it is confusing in parts. It is the same with regards to Haskell without do
notation — the chained lambdas boggle the mind. Another — very similar — idea is futures as an approach to getting around callbacks — they create the appearance of a linear sequence of execution, when some parts might be parallel; but this turns out to be a benefit overall. Yet another is using while read x
in shell pipelines — an imperative structure, yet used to model stream processing.
But this is perhaps neither here nor there: it seems there are no such languages, no logic languages disguised as imperative languages. There are only a very few functional languages disguised as imperative languages. It’s an idea that has interested me for many a year — for the reasons that Peter cites — and not having seen any language wholly organized in this way, I thought I’d write to ask you all if you had seen any.
Kind Regards,
Jason