ScriptX
ScriptX was an object oriented scripting language, influenced heavily by Smalltalk and LISP. With Smalltalk, it shared the concept of classes, objects, and inheritance. Like Smalltalk, it was a pure implementation of an object environment, one where everything was an object. ScriptX had no primitive data types – even integers were defined as objects. All objects were instances of a class, and classes themselves were objects, instances of a MetaClass. In contrast with early forms of Smalltalk, ScriptX implemented multiple inheritance in both classes and objects, and dynamic binding of objects at runtime.
The principal software architect of ScriptX was John Wainwright, an Australian-born computer scientist. In the ScriptX language, as in LISP, there were no statements. Every line in a ScriptX program was an expression that returned a value, and a ScriptX program comprised a list of expressions. Syntactically, ScriptX was most similar to C, although it was not a compiled language. ScriptX was implemented not in C++, but rather in C itself, using an extensive library called Objects in C that Wainwright had developed before joining Kaleida, and sold to Kaleida at the company’s inception. Objects in C used preprocessor directives to simulate an object system, but the company’s development environment was not itself an object-oriented system.
Another feature that ScriptX shared with LISP was the use of a garbage collector for memory management. Rather than requiring the explicit allocation and deallocation of memory, the ScriptX garbage collector ran independently in a background thread, rearranging objects in memory while removing objects that were no longer needed. ScriptX objects were stored in an underlying database called an object store, and the garbage collector functioned by tracing references within a program to objects in memory, eliminating those that were no longer referenced.
In addition to the ScriptX language, the Kaleida development platform offered an extensive class library of more than 240 classes, many of them designed to support multimedia as well as create customized user interfaces. Within the ScriptX environment, features that would be implemented as data types or supplied as part of external function packages in many other languages were defined as classes. For example, common data structures such as arrays and linked lists were implemented as collection classes. ScriptX supported multi-threading but not multiprocessing, and offered scripting control of lower level operating system features such as events and concurrently running threads. Early multimedia development tools lacked techniques for synchronizing presentations, except by polling the operating system's own clock. Ray Valdés, writing in Dr. Dobbs Journal, noted that, "a key ScriptX feature is a Clock class, which provides facilities for synchronizing timed sequences of actions required by multimedia apps."
Following the closure of Kaleida Labs, Wainwright went on to serve as the principal architect of MaxScript, a scripting language for 3D Studio Max that has been used to process content for gaming and 3D applications such as the Maxis Sims programs (see Automating The Sims Character Animation Pipeline with MaxScript). Thus, ScriptX can be considered a progenitor of MaxScript, which closely resembles ScriptX.
Read more about this topic: Kaleida Labs