If m2 manages m1 and m1 manages p then m2 manages p via m1, but I could not quite understand what this example output should mean. M1 manages m2 and p? M1 is managed by m2 and p. Neither seems correct.
If m2 manages m1 and m1 manages p then m2 manages p via m1, but I could not quite understand what this example output should mean. M1 manages m2 and p? M1 is managed by m2 and p. Neither seems correct.
// define a new timely dataflow computation.
timely::execute_from_args(std::env::args(), move |worker| {
Why would something as fundamental as creating a new dataflow need a comment? In other words: why is that not self-evident from the syntax?Not to denigrate the technical accomplishments. And elegance/readability is a very personal thing. But it does seem jarring when the language constructs don't obviously map cleanly to the design intent.
In this case, the command does not create a new dataflow, it creates a new timely dataflow computation by executing the closure on multiple workers. The computation can then spin zero, one, or many dataflows interactively. Dataflows come and go as the computation runs.
The syntax here doesn't otherwise communicate that to me at all.
Enginerrrd said:
> The syntax here doesn't otherwise communicate that to me at all.
Assuming I'm understanding you correctly, that's my point. If the syntax doesn't communicate intent, it suggests a usability limitation.
frankmcsherry said:
> Naming things is hard.
Agreed. Hence point about readability being a personal thing. In this case though, look again at the comment and the line of code. I'd suggest that very few people, on reading the code without the comment, would guess that it was creating a new dataflow computation.
> In this case, the command does not create a new dataflow, it creates a new timely dataflow computation
Good point, thanks for the correction.