Path: utzoo!utgpu!jarvis.csri.toronto.edu!cs.utexas.edu!yale!think!samsung!uakari.primate.wisc.edu!uflorida!mephisto!bloom-beacon!eru!luth!sunic!mcsun!ukc!edcastle!lfcs!nick From: nick@lfcs.ed.ac.uk (Nick Rothwell) Newsgroups: comp.sys.transputer Subject: Re: STRAND88 Message-ID: <2053@castle.ed.ac.uk> Date: 6 Feb 90 17:09:09 GMT References: <9002060301.AA01527@> Reply-To: nick@lfcs.ed.ac.uk (Nick Rothwell) Organization: Waldorf Micro-Wave Tracking/Sighting/Authentication Subcommittee Lines: 80 In-reply-to: dan%@@uunet.UU.NET (Daniel Cohen) 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 !mcvax!ukc!lfcs!nick ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ...als das Kind, Kind war...