Making Jane Smart

The objective of Jane is to perform as much of the work of programming as possible. Jane is expected to reduce software development effort by 99%. The two structures that make this possible are the opcodes and their values.


Jane will use the concept of classification instead of datatype. Each classification will be fully qualified.  An example of a qualified classification would be A = $12.30 USD. The system now knows as much about the value as the human, and can perform those actions that are appropriate (i.e. "display" can now perform currency conversion) . Each value will have a set of actions based its own unique capabilities.

Jane will no longer be limited to three primitive datatypes at the compiler level (number, text, and boolean). All real world values will be handled as primitive values. Therefore Jane will support millions of primitive value classifications, each performing all possible actions for the programmer.

There are two types of values: castValue which is the classification and functions relating to a set of binary or text data, and qualifiedValue which are the functions relating to a qualified castValue. Both of which use names which are the full classification of the real world item that they represent. Both have a set of functions which perform all the capabilities that are possible (or realistic) for the value. Both have a set of event handlers for all the possible opcodes assigned to the value.

There are currently 185 opcodes used by Jane. An opcode being a primitive action using zero or more classified values. Some of the operations are: add, compare, search, retrieve and assign.  Each opcode has an independent (replaceable) function for each of the possible permutation of its operand's classifications.

opcode function math:+ (integer,integer) {  return A + B };
opcode function math:+ (real,integer) {  return A + B };
opcode function math:+ (integer,real) {  return A + B };
opcode function math:+ (real,real) {  return A + B };

Optimized for emulator and for hardware instructions, both provide compile-time and run-time use.