HOME

TheInfoList



OR:

Subtext is a moderately
visual programming language In computing, a visual programming language (visual programming system, VPL, or, VPS) is any programming language that lets users create programs by manipulating program elements ''graphically'' rather than by specifying them ''textually''. A VPL ...
and environment, for writing
application software Application may refer to: Mathematics and computing * Application software, computer software designed to help the user to perform specific tasks ** Application layer, an abstraction layer that specifies protocols and interface methods used in a ...
. It is an experimental, research attempt to develop a new programming model, called Example Centric Programming, by treating copied blocks as first class prototypes, for program structure. It uses live text, similar to what occurs in
spreadsheet A spreadsheet is a computer application for computation, organization, analysis and storage of data in tabular form. Spreadsheets were developed as computerized analogs of paper accounting worksheets. The program operates on data entered in ...
s as users update cells, for frequent feedback. It is intended to eventually be developed enough to become a practical language for daily use. It is planned to be open software; the license is not yet determined. Subtext was created by Jonathan Edwards who submitted a paper on the language to
OOPSLA OOPSLA (Object-Oriented Programming, Systems, Languages & Applications) is an annual ACM research conference. OOPSLA mainly takes place in the United States, while the sister conference of OOPSLA, ECOOP, is typically held in Europe. It is ope ...
. It was accepted as part of the 2005 conference.


Environment

Early video previews of the Subtext environment were released circa 2006, which demonstrated the semantics of Subtext programs, and the close integration with the Subtex environment and runtime. Subtext programs are declared and manipulated (or mutated) by adding and linking elements of various types to a syntax tree, and entering in values or names as necessary, as opposed to typing out textual programs. Due to the design of the Subtext language and environment, there is no distinction between a program's representation and its execution. Like spreadsheets, Subtext programs are live executions within an environment and runtime, and programming is direct manipulation of these executions via a graphical environment. Unlike typical
functional programming In computer science, functional programming is a programming paradigm where programs are constructed by applying and composing functions. It is a declarative programming paradigm in which function definitions are trees of expressions tha ...
languages, Subtext has simple semantics and is easily applicable to reactive systems that require mutable state, I/O, and concurrency, under a model known as "Reactive Programming".
Console Console may refer to: Computing and video games * System console, a physical device to operate a computer ** Virtual console, a user interface for multiple computer consoles on one device ** Command-line interface, a method of interacting with ...
input ("invocations") can be utilized via data flow within a Subtext program, allowing users to manipulate values interactively.


Coherence

A continuation and subset of the Subtext language using other principles, is Coherence, an experimental programming language and environment, which uses a new model of change-driven computation called "Coherent reaction", to coordinate the effects and side-effects of programs interactively as they are being developed. The language is specialized for interactive application software, and is being designed by the creator of Subtext, Jonathan Edwards, who reports upon its development by publishing white papers. State changes trigger events called reactions, that in turn change other states. A coherent execution order is one in which each reaction executes before any others that are affected by its changes. A coherent order is discovered iteratively by detecting incoherencies as they occur and backtracking their effects. The fundamental building block of Coherence is the dynamically typed mutable tree. The fundamental abstraction mechanism is the virtual tree, whose value is lazily computed, and whose behavior is generated by coherent reactions.DSpace@MIT : Coherent Reaction
CSAIL Digital Archive, Technical Reports


References


Example Centric Programming
Jonathan Edwards. In OOPSLA October ’04. Describing IDE improvements using advanced UI techniques to present the results of a program during development, instead of the programmer interpreting the program code mentally. Screenshots from a prototype IDE using
Eclipse An eclipse is an astronomical event that occurs when an astronomical object or spacecraft is temporarily obscured, by passing into the shadow of another body or by having another body pass between it and the viewer. This alignment of three c ...
illustrate the techniques with functional examples.
Subtext: uncovering the simplicity of programming
Jonathan Edwards. In OOPSLA October ’05: Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications.
First Class Copy & Paste
Jonathan Edwards. MIT CSAIL draft paper in March 2006. Detailed description and illustrations of the various functional programming elements within the first Subtext environment, including data flow, assignments, "action" invocation, current and hypothetical data state, concurrent transactions and operation of a console agent.
Coherent Reaction
Jonathan Edwards. In OOPSLA Onward '09. Documents the beginnings of an experimental programming language loosely based upon Subtext, which uses "Coherent reaction", a new model of change-driven computation to coordinate the effects and side-effects of programs automatically
(report)
;Cited


External links

{{commons category, Subtext (programming language)
Subtextual.org
official website of Subtext. Experimental programming languages Visual programming languages