I have been playing with it the last couple of hours and I think it is going to be great. I noticed in the help file under tasks that functions with parameters passed by value OR reference is promised. Now THAT will really excite me.
That won't be in the first version, but definitely planned for Rel 2. Rel 1 supports modular programming with "program" code-blocks and "task" code-blocks.
The PLC already supports parameter values and references passed on the stack, along with local variables, but to get the "user experience" top-notch, we knew it was gonna take some real work. For example, we want you to be able to quantify a numeric parameter type for a function in ANY of the following ways
BIT_OR_NUMERIC (any bit or any sized numeric including reals)
NUMERIC (real or integer)
REAL
INTEGER (any sized integer)
BIT_OR_INTEGER (any bit or integer)
SIGNED DWORD INTEGER (strong type, D memory in MX)
SIGNED WORD INTEGER (strong type, WX/WY analog memory in MX)
SIGNED BYTE INTEGER (strong type, no default data-blocks of this type, but you can create your own)
UNSIGNED WORD INTEGER (strong type, V memory in MX)
UNSIGNED BYTE INTEGER (strong type, no default data-blocks of this type, but you can create your own)
So if you had a parameter that was BIT_OR_NUMERIC, that could take X7, V22, R44, 3.14, 42, etc. If you had something that was INTEGER, it would take V22 or 42, but not X7 nor R44 nor 3.14. If the parm specified SIGNED WORD INTEGER it would take WX4 (16 bit signed analog input, which happens to be an signed 16 bit word integer) or 42 or -32768, but not 65535.
These details are all drawing board stuff planned for Rel 2, but you get the idea.