3.4 Scripts: General Extensibility

It is impossible to anticipate all of the things that a user might want to do in running and controlling a simulation. For this reason, we have built a powerful script language into the PDP++ software. This script language, called CSS for C-Super-Script or C^C, is essentially a C/C++ interpreter, and thus does not require the user to learn any new syntax apart from that which would be required to program additions to the software itself. This shared syntax means that code developed initially in the script language can be compiled into the software later for faster performance, without requiring significant modifications.

CSS scripts are used in several places throughout the software. They have been added to some of the basic objects to enable their function to be defined and extended at run time. Examples of these include a ScriptEnv, which allows an Environment to be defined dynamically and have events that are generated on the fly, potentially in response to the output of the network itself (see section 11.10 Other Environment Types). The ScriptPrjnSpec allows arbitrary patterns of connectivity to be defined (see section 10.3.3.5 Miscellaneous other Projection Types). The ScriptStat allows arbitrary statistics to be computed and recorded in the data logs during training and testing (see section 12.8.6 Miscellaneous Other Stat Types).

In addition to these targeted uses, scripts can be used to perform miscellaneous tasks or repetitive functions at any level of the software. It is possible to attach a set of scripts to a given process, run them automatically when the process starts up, and even record actions performed in the user interface as script code that can be replayed later, edited for other uses, etc. For more information on these objects, see section 9.6 Project Scripts.

Finally, the script language provides a means for interacting with a simulation when the graphical interface cannot be used, such as over dial-up lines when working from home, etc. Anything that can be done in the GUI can be done in the script language, although it is not quite as easy.