Subtext FAQ

Can I download it?

No. Subtext is a research prototype that is still far from being a usable language.

Will it be open source?

Yes.

Hasn't this already been done in Lisp/Smalltalk/Self?

The "Golden Age" programming environments of Lisp and Smalltalk first allowed programmers to live in a world of live persistent data. Self took this one step further by unifying the environment and the language around the idea of cloning persistent objects. Self's philosophy of simplicity and concreteness was a direct inspiration for Subtext. Subtext goes further by making the code itself as alive as the data. Rather than dead snippets of text waiting to be executed, code is constantly executing and transparent in full detail.

Isn't this just a spreadsheet?

Subtext is inspired by the way spreadsheets visibly execute even while being edited. But spreadsheets are quite limited. They do not have functional abstraction, data abstraction, looping, or recursion, except by escaping into a textual language that sacrifices the visibility of execution. See Forms/3 for an attempt to extend the spreadsheet metaphor into a general purpose programming language.

Isn't this just Visual Programming?

Visual programming is the idea of programming with diagrams, for example data flow diagrams consisting of boxes and lines. Though initially appealing, this idea has encountered problems in practice, such as the difficulty of comprehending large diagrams, and the effort of rearranging the layout of diagrams when editing them.

Subtext takes the position that both text and diagrams have the same inherent limitation: they are paper-based media. Subtext represents programs as complex data structures that can not be fully printed out in a human-readable form. Text and diagrams are used to interactively present the program, not as a source encoding of it. This is the same approach taken by WYSIWYG applications like word processors and spreadsheets. Subtext is WYSIWYG programming.

Isn't this just directly editing the Abstract Syntax Tree of a program?

Syntax is all about encoding structure into a linear character string. A context-free grammar implicitly specifies meaning through patterns of adjacency and bracketing. The result of parsing a string is typically represented as an Abstract Syntax Tree. Subtext does have a tree-like structure, but it is a semantic tree akin to a run-time call stack, not the syntactic tree of grammar rules. The meaning of fields in Subtext is not determined by their location in the tree, but by their ancestry of copying from primitive fields. Likewise the meaning of links is not determined by their position in a syntactic tree of lexical scopes (as are names), but by the absolute identity of the field they are linked to.

How will this scale to programs larger than the screen?

Unknown. Subtext is an ongoing experiment, and still lacks basic features required of a complete programming language. There are some reasons for optimism, however. Textual languages largely dictate their presentation, so IDE's are constrained to be fancy text editors. Subtext decouples the presentation from the the model of the program, freeing the IDE to innovate new user interface techniques.

Emacs/Vim r00lz!

Please phrase that as a question.

Does Subtext require the mouse for everything?

Subtext 2 has been designed to be much less mouse-centric than the prior version. Although not yet implemented, it should be possible to do everything from the keyboard.