[Swift-devel] could we set the job sequence without a file dependency?

Mihael Hategan hategan at mcs.anl.gov
Tue Mar 24 12:49:37 CDT 2009


On Tue, 2009-03-24 at 12:19 -0500, Ian Foster wrote:
> I wish we could talk about the technical issue at hand, rather than  
> preconceptions of my motives.

Then perhaps it may be useful not to justify a technical solution based
on the barely explained needs that arose in different circumstances
which are unseparable for us from your preconceptions or motives. 

In other words, the argument "swift should do it because it was done in
PCN" without proper justification is not a very good argument. And if
there is proper justification, then the mentioning of PCN becomes
unnecessary.

> 
> I raised a technical issue: people sometimes want to express  
> sequencing that relates to external side effects (e.g., output). How  
> do we do that? We can, as Ben suggests, introduce an artificial data  
> dependency.

The data dependency is not artificial. It exists, as can be seen from
the email exchanges between Ben and Zhao (and Mike). The issue at hand
is instructing swift not to manage that data dependency.

>  Or, we can provide an operator that expresses the  
> sequencing. Each have pros and cons:
> 
> - The artificial data dependency is less clear in its semantics than  
> the sequential operator

Perhaps so, if you only look at this problem separate from the rest of
swift.

I believe that if one is to describe a problem in terms of dependencies
(something necessary with swift), any kind of explicit sequencing
becomes unusual, requiring the user to think what happens behind the
scenes.

May I also point out that some (relatively) successful languages based
on strong theoretical models (such as Haskell) have made the effort to
devise ways of dealing with sequencing that are consistent with the
basic model of that language, instead of choosing the seemingly easy
solution.

> - The artificial data dependency requires that you modify procedures  
> to sequence them

No. Like the rest of swift, it requires you to specify what your
application has as input and what your application has as output.

> - The artificial data dependency is a real pain to write if you have  
> to do it a lot

Anything is a real pain to write if you have to do it a lot.

> + The artificial data dependency does not introduce a new operator
> + The artificial data dependency may allow for finer control over what  
> is sequenced
> 
> I couldn't care less whether Swift looks like PCN. But I do have that  
> experience, and recall the considerable frustration of some users who  
> wanted to ensure that activity X happened before activity Y (whether  
> for side effects, or debugging) and had to go to great lengths to  
> introduce artificial data dependencies to achieve that goal.

I can also see considerable frustration of some users who try to
interpret swift programs in their heads, and then the subsequent
disappearance of the frustration when they realize that writing down a
formal description of their problem takes care of both correctness and
efficiency.





More information about the Swift-devel mailing list