🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: comp.sys.transputer
2 messages
2 total messages Started by dan Daniel Cohen Tue, 06 Feb 1990 03:01
Re: STRAND88
#2779
Author: dan Daniel Cohen
Date: Tue, 06 Feb 1990 03:01
91 lines
4391 bytes
Nick Rothwell writes:

	Sounds just like Shapiro's Concurrent Prolog to me. Concurrent Prolog
	is quite nice (as long as you don't want to backtrack, since it
	doesn't), but it has some flaws, such as the fact that the guards are
	supposed to execute (and unify) without affecting the rest of the
	system, and I could never figure out a way of ensuring this without a
	huge overhead (Shapiro's papers seem to punt on this one); so, my
	compiler didn't bother. Does Strand deal with this?

Yup, Strand guard tests are NOT general-purpose Strand procedures;
they are all kernels ( ie. not written in Strand ) which cannot
assign variables. We believe this is essential if the language
is to run efficiently.

	If Strand is aimed at a local-memory model of computation, how is
	store management handled? (not to mention chains of unification and
	all this nasty stuff.)

Another surprise for Prolog fans ( like me ) - no unification!
Strand matching is one-way only, forcing the programmer to think
more about inputs and outputs. Incomplete structures can still
be used ( as when one process sends an incomplete message to
another, for the latter to fill in the result ), just it won't
all be done in the head-matching phase ( same restriction as for
the guard, really - no assigning variables until a clause has
been selected ). This is why Strand 'feels' like a dataflow
language, rather than a logic-programming language.

	What sort of type system does the language have? Polymorphic? Dynamic?

Polymorphic

	Does it address the problems associated with programming in the
	large (modules, interfaces, abstraction)? - or is that outside its
	scope?

There is a module system which is smart enough
to load modules automatically when they are required.
We included fast foreign function interfaces ( currently C
and Fortran ) at the abstract machine level ( ie. programmers
can write their own guard and body kernels in, say, C )
because many users want to use Strand as a 'harness' for
running conventional code in parallel; we hope to extend
the range of interfaces in the future ( eg. we already
have some material for X-Windows output ).
I'm not quite sure what you mean by 'abstraction' here.
We liked Strand because it seemed like a good language
to build up on - object-oriented systems; rule-based
systems etc. but most of this work is still at a conceptual
level ( except objects ). There's also been a lot of work
done on programming methodologies which should eventually
result in some dataflow and/or object-oriented CASE tools.


	>Strand is good for parallel programming because of its' computational
	>model; a program runs by the repeated reduction of processes - when
	>one process is reduced others may be spawned - until the processes
	>are defined by built-in kernels.

	This sounds like parallel combinator reduction, which is fine as an
	intermediate form but I don't know if I'd like to program that way.

We can supply STRAND88 on 'test drive' on Sun's, if you'd
like to play around with it ( unfortunately we have to
charge for the media and materials ). But why don't you
get hold of the book by Foster and Taylor:
"Strand: New Concepts in Parallel Programming"
( Prentice-Hall ISBN 0-13-850-587-X; contact us if you
can't find it ). That should give you a feeling for what
it's like to program in Strand.

Someone else asked for some references to Strand;
I'll collect a list and post them next week.

	Could you post some examples of Strand programs? (Do you have a
	mailing list, electronic or otherwise?) It's interesting to hear what
	it can do, but that's not much use without some actual examples of
	code to illustrate some of the above points.

Will do, when I have time! Or else send me a message,
and we'll send you some literature.

Daniel Cohen
Strand Software Technologies Inc.
15220 NW Greenbrier Parkway, Suite 350
Beaverton, OR 97006, USA
Tel: +1 (503) 690 9830

e-mail: dan%ssti@uunet.uu.net  or  uunet!ssti!dan
Re: STRAND88
#2780
Author: Nick Rothwell
Date: Tue, 06 Feb 1990 17:09
80 lines
4063 bytes
In article <9002060301.AA01527@>, dan% (Daniel Cohen) writes:
>Me:
>	If Strand is aimed at a local-memory model of computation, how is
>	store management handled? (not to mention chains of unification and
>	all this nasty stuff.)
>
>Another surprise for Prolog fans ( like me ) - no unification!
>Strand matching is one-way only, forcing the programmer to think
>more about inputs and outputs. Incomplete structures can still
>be used ( as when one process sends an incomplete message to
>another, for the latter to fill in the result ), just it won't
>all be done in the head-matching phase ( same restriction as for
>the guard, really - no assigning variables until a clause has
>been selected ).

Fair enough. So presumably Strand deals with passing such incomplete
messages from (if necessary) one processor to another, such that the
"holes" serve as semaphores for the message generator to fill in.

>This is why Strand 'feels' like a dataflow
>language, rather than a logic-programming language.

Well, I use the term dataflow language to refer to those simple-minded
antiquated languages which only have integers and single-assignment. I
think any "real" modern language has a user-extensible type system and
a fair degree of polymorphism such that you can do "dataflow" on
objects of any type; then, you start getting into problems with
structured objects going out of scope, and garbage collection and so
on.

>	What sort of type system does the language have? Polymorphic? Dynamic?
>
>Polymorphic

Good. Is there a formal type semantics?

>	Does it address the problems associated with programming in the
>	large (modules, interfaces, abstraction)? - or is that outside its
>	scope?
>
>There is a module system which is smart enough
>to load modules automatically when they are required.
>...
>We liked Strand because it seemed like a good language
>to build up on - object-oriented systems; rule-based
>systems etc. but most of this work is still at a conceptual
>level ( except objects ). There's also been a lot of work
>done on programming methodologies which should eventually
>result in some dataflow and/or object-oriented CASE tools.

That's not exactly what I meant; for large systems you want to be able
to construct interface specifications containing abstract types, and
have a way of matching these to actual implementations. For a proper
object-oriented system, you need (multiple) inheritance, and from here
the type semantics starts to get a little hairy. The problem with
Prolog and the like is the lack of scoping of declarations, which is a
serious drawback IMHO.

>But why don't you
>get hold of the book by Foster and Taylor:
>"Strand: New Concepts in Parallel Programming"
>( Prentice-Hall ISBN 0-13-850-587-X; contact us if you
>can't find it ). That should give you a feeling for what
>it's like to program in Strand.

Ok, I'll chase that up.

On a more general note: how much take-up do you expect there to be for
a new language in a world dominated by Fortrash, C, and to some extent
Occam? Just curious how much of a commercial risk this is, since I'm
mostly involved in the academic side of language research.

>Daniel Cohen

		Nick.
--
Nick Rothwell,	Laboratory for Foundations of Computer Science, Edinburgh.
		nick@lfcs.ed.ac.uk    <Atlantic Ocean>!mcvax!ukc!lfcs!nick
~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~
		       ...als das Kind, Kind war...
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads