NewtonScript is a prototype based programming language created to write programs for the Newton platform. It is heavily influenced by the Self computer language, but modified to be more suited to needs of mobile and embedded devices.
Traditional computers, at least in the desktop role, have two modes; "on" and "off". When moving from one mode to the other the state of the machine is lost from memory, and requires a sometimes lengthy "boot" process to return the machine to the "on" state. This does not suffice for a PDA type device where the user expects the machine to be available almost instantly for taking down quick notes. Yet a machine cannot be left "on" for any length of time either, as this would drain the battery too much to make it useful for carrying around.
In the Newton platform, the system had two states that were more like "on" and "sleeping". When moving to the sleeping state the memory was not lost and instead the system simply stopped working on the contents of memory, which allowed for many of the chips inside to be turned off. This greatly extended battery life, yet still allowed the machine to turn back on almost instantly.
With the main memory always being kept alive, the system becomes much more amenable to use as a persistent object store. Many object-oriented systems, like Smalltalk, are based on a continually running object world (known as an image or, when saved as a disk file, a snapshot), so using the Newton platform with an object-oriented system seemed quite natural.
The developers then began looking for languages to use on the system. The Newton platform was originally going to be programmed in the new Dylan programming language, but a lengthy series of delays combined with the "Not-Invented-Here syndrome" eventually led to it being abandoned. The team had looked at Self and were very interested in it, but at the time Self was not yet ready for real-world use.
The result was a modified version of Self known as NewtonScript. Written primarily by Walter Smith, the language was a part of the Newton Toolkit, introduced along with the first Newton device (the Apple MessagePad) on August 3, 1993.
One of the advantages of NewtonScript's prototype based inheritance was reduced memory usage, a key consideration in the 128KB Newton. The prototype of a GUI object could actually be stored in ROM, so there was no need to copy default data or functions into working memory. For example, a developer might create a new button instance. If the button uses the default font, accessing its font "slot" (i.e., property or member variable) will return a value that is actually stored in ROM; the button instance in RAM does not have a value in its own font slot, so the prototype inheritance chain is followed until a value is found. If the developer then changes the button's font, setting its font slot to a new value will override the prototype; this override value is stored in RAM. NewtonScript's "differential inheritance" therefore made efficient use of the Newton's expensive flash RAM by storing the bulk of the default data and code in the PDA's cheaper and much larger ROM.
NewtonScript vs. Self
Changes were primarily aimed at three perceived problems with Self.
Full article ▸