Jane - Multiple Machine / Process Executables
 

Execution across multiple environments is a requirement that we must address. To have the ability to have one software development environment and one source code that produces a program that runs across multiple hardware, software, processes and treads as a single application. This changes application development:
  • No Documentation required, it's your program you are running
  • Removes all version dependencies. changes to all applications are universal
  • Removes all Hardware, Software and Data Structure Incompatibilities
  • Removes all Logic Limitations
  • Does not waste development time, Jane handles all that it can
  • Access to all hardware capabilities
  • Increases speed of CPU intensive applications, run your application on multiple machines at the hardware level
  • Uniform Hardware Instruction Set, a consistent instruction set, independent of programming language

The difference here is to send instructions and data for the remote process to execute, instead of sending data and asking the remote process to run a set of its own instructions on the data. Another difference is that the remote process can return instructions and data for the client process to execute, instead of just returning data. The remote machines / processes becomes part of the client process, so we now have one process that we have absolute control over. The program is not using independent processes, it is running a single program across multiple machines and/or processes.

The client will send compiled or source code to a process to be run and wait asynchronously for an answer in the form of executable code. All handshaking is done by the compiler.  The flow control on the client and on the remote process is managed as a background task until a statement requires the resultant value's content, at which time the process will wait until done, or a specified amount of time before proceeding. The running code will be optimized to reduce time, space, and human involvement as much as possible.

The following example, of two lines, will be all that is required for multiple machine / process / thread program execution:

A = file{c:/temp/sample.txt};
A.value = "Hello World";

  

The remote process can send back and execute secure code on the client, such as:

  • Return results
  • Issue alerts
  • Throw an exception
  • Call functions
  • Callback functions
  • Exception recovery

This code will execute together both on the client and on remote processes. The code is sent between processes to produce the expected results, apply security, and optimize synchronization between the client and the target systems. The code can be pre-compiled as shown below or sent as raw source code. By having version and system independent CG2 formatted code, as shown below, this will permits any system to create or execute the code without the need for proprietary or specialized compilers or interpreters.

*cg2,janic;
*define:function 	,name:A,type:A,first_statement_index:I4,last_statement_index;
*define:temp 		,index:I4,type:A,value:A,units:A,next:I4;
*define:sourcecode	,value:A;
*define:try_try		,index:I4,line:I4,Label:A,opcode:I4,catch_pc,finally_pc;
*define:ident_find	,index:I4,line:I4,Label:A,opcode:I4,result_index:I4,jump:I4;
*define:assign_ 	,index:I4,line:I4,Label:A,opcode:I4,result_index:I4,isDefault:Boolean,operator:A;
*define:return_ 	,index:I4,line:I4,Label:A,opcode:I4,elist(*):I4;
!-------------------------------------------------------------------------------;
function,main$,,0,5,;
temp,0,id,A,;
temp,1,E,,;
temp,2,qvalue,file{c:/temp/sample.txt},;
temp,3,E,,;
temp,4,string,Hello World,;
!-------------------------------------------------------------------------------;
try_try		,0,0,,36,,;
ident_find	,1,1,,18,,1,0;
assign_		,2,1,,03,1,2,false,=;
ident_find	,3,2,,18,,3,0;
assign_		,4,2,,03,3,4,false,=;
return_		,5,0,,29,;
!---------------------------------- Source Code --------------------------------;
sourcecode,~<script>~
1) A = file{c:/temp/sample.txt}; 
2) A.value = "Hello World";
~<script>~;