Subtext (programming language): Difference between revisions

Content deleted Content added
m Coherence: bit more
wrote about subtext environment and first demo,
Line 3:
 
Subtext was created by Jonathan Edwards who submitted a paper on the language to [[OOPSLA]]. It was accepted as part of the 2005 conference.
 
==Environment==
[[File:Subtext_scitest.jpg|thumb|Early build of the Subtext environment with the program's current state visible. The employee data (like "wage") is visibly changed after invoking the "Raise" method by clicking its "invoke arrow", and the hypothetical state (displayed within the Raise method) is also updated.]]
[[File:Subtext_constest.jpg|thumb|Early build of the Subtext environment with interactive console inputs.]]
 
Early video previews of the Subtext environment were released circa 2006<ref>[http://subtextual.org/demo1.html Introduction to Subtext, I/O and Mutable state], first Subtext environment video demo</ref>, 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 user interface|graphical environment]]. Unlike typical [[functional programming]] 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".<ref>[http://www.subtextual.org/OOPSLA06.pdf First Class Copy & Paste], MIT CSAIL draft paper by Jonathan Edwards in 2006.</ref> [[Console]] input ("invocations") can be utilized via data flow within a Subtext program, allowing users to manipulate values interactively.
 
==Coherence==
Line 15 ⟶ 23:
*[http://subtextual.org/OOPSLA04.pdf 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_(software)|Eclipse]] illustrate the techniques with functional examples.
*[http://sdg.csail.mit.edu/pubs/2005/OOPSLA05.pdf 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.
*[http://www.subtextual.org/OOPSLA06.pdf 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.
*[http://coherence-lang.org/Onward09.pdf 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. [http://hdl.handle.net/1721.1/45563 (report)]