Glyphic Script and Codeworks were a programming language and development environment that I designed and implemented with Bruce Schwartz when we started Glyphic Technology.
Glyphic Script is a prototype based language. It had a pure object system, similar to Self, but implemented with a traditional bytecode virtual machine. Notable features of the language are:
- Text style has syntatic meaning: bold denotes messages and keywords, italics and strike-thru are comments.
- Keyword and positional arguments to methods
- Methods can masquerade as instance variables and vice-versa.
- Getter and setter pairs can be written as one method
- Flexible syntax that allows control structures to be written naturally even without special casing them.
- Smalltalk style blocks as first class objects
- Prototype based inheritance
- Unicode strings
- Three kinds of special value: nil, ???, and undefined (!)
- Easy to learn library
The virtual machine implementation was a traditional byte code machine but with a very reduced instruction set. It was optimized to work well in as little as 256k of memory. None-the-less, is sported several advanced VM features:
- Innovative block garbage collection that was very cooperative with the host OS
- Objects serialized to disk in modules that could pickle and resolve cross-module references
- VM was re-entrant so that it could primitives could invoke code back in the language
- Language stack was managed in GC collected memory, but with multiple, overlapping frames per object. This enables very fast thread switching.
- Multiple types of primitives to support highly efficient operations
- Full external access API including support for OS resources held and freed by GC'd objects, and external memory holding references to GC'd objects.
Codeworks is an interactive development environment based on Glyphic Script. It took the ideas of direct manipulation interfaces and applied them window and widget application construction. It had a similar tool suite for coding as Smalltalk with browsers, inspectors and workspaces. It used a drag-and-drop building metaphor for constructing user interface.
A major aspect of Codeworks was the view system which supported multiple views per object. The relationship between the view and the data was totally managed and automatically kept in sync and updated. This made programming focus far more on the problem domain and eliminated almost all UI coding.
Glyphic Script and Codeworks have been ported and run on:
- Mac OS (pre-OS X)
- Penpoint (x86 and Hobbit versions)
- Windows (pre-XP)
- raw-PC HW
- Linux (language only)
Codeworks was selected to be the user programming environment of the EO Personal Communicator and the run time was to ship with every unit. Alas, the EO was canceled shortly after it shipped. Codeworks also has was used in some experiments with interactive web pages by Ted Kaehler (at Apple at the time), prototype electronic math textbook by Houghton-Mifflin, and a prototype personal organizer. Alas, none of these every came to much.
The original manuals for the EO edition of Codeworks have been converted to PDF and are available here:
- Tutorial (23p, 120k)
- Assumes you have an EO in front of you, so some imagination required!
- Scripting Manual (82p, 404k)
- Explains the language syntax, semantics and core library. Includes language reference and grammar.
- Procedures Manual (94p, 248k)
- How to use the development environment. Includes reference for the view and widget library.
- Pre-Alpha Notes (16p, 100k)
- Release notes including support for packaging code as installable, stand-alone applications. Also has reference for new data stream library.
- Night Train Errata (13p, 100k)
- Release notes and manual for drawable views with discussion of auto-scaling graphics, and the graphics library.