Creating a System Diagram actually makes a lot of sense in a distributed system where you need to program the system rather than individual devices – and it is at the core of what I want to achieve with Plain.
A few topics that need some work:
Usage of the Interface keyword needs to be adjusted. I proposed “Interface C” to bind to C code. “C” is actually a domain name, so I am not sure I need this. It is also a discussion wherever we should replace “Interface” with a more standard privacy declaration. I have so far not seen any added value in this.
Transaction .. Update should maybe be replaced with Transaction .. Finish. I am not very found of the “Update” keyword. But, I can’t use End since we actually generate an instruction here.
Domain <name> Owner <name> specify a domain name and what entity that stores the variables. We might need a rule that a module will not see any domain by default. This will force the developer to set up domains and we avoid the global domain and the error scenarios that comes with it.
Wire – I don’t like that keyword at all, but I don’t have anything better – maybe “Connect”? I need an add-on here to cover redundancy and resource pools. Something like:
Connect greenIO to leds[1], alternative to led[2], alternative to leds[3]
Maybe I need both Wire and Connect? Wire could be static, while connect is more dynamic allowing redundancies or resource pools that can change. I need to work on this concept a bit.