Re: [Simh] An obscure dialect of Pascal: MULTICS roots?

2017-08-28 Thread Leo Broukhis
Hello Adam,

Thank you for the references! May I copy your answer to my SE post, or
would you like to answer there as well under your name?

I have a binary of a game (Mankala) written in that dialect of Pascal; I
might get to decompiling it to see if the branch operator was used.

Thank you,
Leo

On Aug 26, 2017 15:30, "Adam Sampson"  wrote:

Leo Broukhis  writes:

> I'm specifically interested in the branch/back feature. What
> theoretical paper does it come from?

I think it's fairly likely that the designers of your 1979 dialect of
Pascal were thinking of this as a feature to support (what was then
called) "backtrack programming" for AI-like applications, rather than as
an exception handling mechanism...

There were several programming languages experimenting with approaches
to backtracking in the mid-late 70s, Prolog probably being the
best-known result ("branch" is equivalent to a Prolog predicate with
multiple rules, where failure inside one rule causes control flow to
backtrack to the next rule). Your branch/back construct would be pretty
handy if you were trying to write a tree search algorithm with pruning
(e.g. a classic board game AI), or a backtracking parser.

Here's a 1974 survey which sketches the backtracking idea (p157) and
describes some early implementations:
http://dl.acm.org/citation.cfm?id=356632

This 1977 paper gives a denotational semantics for backtracking, and is
fairly widely cited by later work:
https://link.springer.com/article/10.1007/BF00289245

(Note in particular that it calls its equivalent of "branch" the
"alternative" operator -- which might explain your "exit on ALT"
message?)

This 1979 paper takes the idea and generalises it to work with
coroutines (using Pascal for examples, although with different syntax):
http://dl.acm.org/citation.cfm?id=357062.357063

Thanks,

--
Adam Sampson  
___
Simh mailing list
Simh@trailing-edge.com
http://mailman.trailing-edge.com/mailman/listinfo/simh

Re: [Simh] An obscure dialect of Pascal: MULTICS roots?

2017-08-26 Thread Adam Sampson
Leo Broukhis  writes:

> I'm specifically interested in the branch/back feature. What
> theoretical paper does it come from?

I think it's fairly likely that the designers of your 1979 dialect of
Pascal were thinking of this as a feature to support (what was then
called) "backtrack programming" for AI-like applications, rather than as
an exception handling mechanism...

There were several programming languages experimenting with approaches
to backtracking in the mid-late 70s, Prolog probably being the
best-known result ("branch" is equivalent to a Prolog predicate with
multiple rules, where failure inside one rule causes control flow to
backtrack to the next rule). Your branch/back construct would be pretty
handy if you were trying to write a tree search algorithm with pruning
(e.g. a classic board game AI), or a backtracking parser.

Here's a 1974 survey which sketches the backtracking idea (p157) and
describes some early implementations:
http://dl.acm.org/citation.cfm?id=356632

This 1977 paper gives a denotational semantics for backtracking, and is
fairly widely cited by later work:
https://link.springer.com/article/10.1007/BF00289245

(Note in particular that it calls its equivalent of "branch" the
"alternative" operator -- which might explain your "exit on ALT"
message?)

This 1979 paper takes the idea and generalises it to work with
coroutines (using Pascal for examples, although with different syntax):
http://dl.acm.org/citation.cfm?id=357062.357063

Thanks,

-- 
Adam Sampson  
___
Simh mailing list
Simh@trailing-edge.com
http://mailman.trailing-edge.com/mailman/listinfo/simh

[Simh] An obscure dialect of Pascal: MULTICS roots?

2017-08-26 Thread Leo Broukhis
While exploring implementations of Pascal on BESM-6, I've encountered two
peculiar language extensions about which I've asked on SE:

BRANCH/BACK: an analog of try/catch:
https://retrocomputing.stackexchange.com/q/3150/4025

Structural labels as a way to implement generalized break/continue:
https://retrocomputing.stackexchange.com/q/3296/4025

Both posts are quite verbose so I'm not quoting them here.

Regarding the first feature, I was told in a private conversation that the
message "exit on ALT" for an uncaught "exception" - the equivalent of C++
terminate() - might have its roots in MULTICS.

Does any of the above ring any bells? I'm specifically interested in the
branch/back feature. What theoretical paper does it come from?

Thanks,
Leo
___
Simh mailing list
Simh@trailing-edge.com
http://mailman.trailing-edge.com/mailman/listinfo/simh