An example in make (if I'm reading in the right direction) format which I'd argue is more readable and could scale much better would be:
doA: doC doE
doB: doD doE
doC: doE
doD:
doEAn example in make (if I'm reading in the right direction) format which I'd argue is more readable and could scale much better would be:
doA: doC doE
doB: doD doE
doC: doE
doD:
doEdoE: doC, doB, doA doD: doB
etc?
anyways the problem with this approach is that doD() is assumed to be a general function (or statement or async command) that is not by definition bound to doB(), but rather in this specific case we need it to be executed after doB() is done.
Why is that? If it needs any result from doB() then it is a dependencies that must be specified. If it needs to be done only after doB is successful then it is a dependency, just an implicit one we rely on the procedural execution to handle. In either case some sort of surrogate dependency (or better syntax) would have to be introduced.
But the point is that either would necessitate or be aided by graphical programming.