Subtext

Jonathan Edwards
<span title="">2005</span> <i title="ACM Press"> <a target="_blank" rel="noopener" href="https://fatcat.wiki/container/6y3m32grtnfktkp2oo6oqjbvta" style="color: black;">Proceedings of the 20th annual ACM SIGPLAN conference on Object oriented programming systems languages and applications - OOPSLA &#39;05</a> </i> &nbsp;
Representing programs as text strings makes programming harder then it has to be. The source text of a program is far removed from its behavior. Bridging this conceptual gulf is what makes programming so inhumanly difficult -we are not compilers. Subtext is a new medium in which the representation of a program is the same thing as its execution. Like a spreadsheet, a program is visible and alive, constantly executing even as it is edited. Program edits are coherent semantic transformations. The
more &raquo; ... essence of this new medium is copying. Programs are constructed by copying and executed by copy flow: the projection of changes through copies. The simple idea of copying develops into a rich theory of higher-order continual copying of trees. Notably absent are symbolic names, the workhorse of textual notation, replaced by immediately-bound explicit relationships. Subtext unifies traditionally distinct programming tools and concepts, and enables some novel ones. Ancestral structures are a new primitive data type that combines the features of lists and records, along with unproblematic multiple inheritance. Adaptive conditionals use first-class program edits to dynamically adapt behavior. A prototype implementation shows promise, but calls for much further research. Subtext suggests that we can make programming radically easier, if we are willing to be radical. Text is paper-centric: pen and paper are a complete implementation. Modern software technology allows us to create arbitrary computer-based media, free of the limits of paper. A program can be represented in an abstract data model, and the programmer can use a GUI to directly manipulate [33] that model: WYSIWYG programming. This has long been done with other complex information artifacts, such as spreadsheets, documents, and diagrams. In all these cases, we no longer expect a paper printout to be a complete representation. It is time to transcend paper-centric programming. Subtext is an experiment to develop a paper-free medium of programming, one designed for usability. In this medium the representation of a program is the same thing as its execution. Aligning syntax and semantics narrows the conceptual gulfs of programming. The experience of programming becomes more akin to using a spreadsheet than a keypunch. This medium is based upon a single unifying concept: copying; which develops into a rich substrate for the entire process of programming.
<span class="external-identifiers"> <a target="_blank" rel="external noopener noreferrer" href="https://doi.org/10.1145/1094811.1094851">doi:10.1145/1094811.1094851</a> <a target="_blank" rel="external noopener" href="https://dblp.org/rec/conf/oopsla/Edwards05.html">dblp:conf/oopsla/Edwards05</a> <a target="_blank" rel="external noopener" href="https://fatcat.wiki/release/6ehzjlf7ovd25izfyo3e6gucd4">fatcat:6ehzjlf7ovd25izfyo3e6gucd4</a> </span>
<a target="_blank" rel="noopener" href="https://web.archive.org/web/20170808200527/http://www.subtext-lang.org/OOPSLA05.pdf" title="fulltext PDF download" data-goatcounter-click="serp-fulltext" data-goatcounter-title="serp-fulltext"> <button class="ui simple right pointing dropdown compact black labeled icon button serp-button"> <i class="icon ia-icon"></i> Web Archive [PDF] <div class="menu fulltext-thumbnail"> <img src="https://blobs.fatcat.wiki/thumbnail/pdf/fd/19/fd192eee394577fb6a2a6a8a59cdab85a40faaa5.180px.jpg" alt="fulltext thumbnail" loading="lazy"> </div> </button> </a> <a target="_blank" rel="external noopener noreferrer" href="https://doi.org/10.1145/1094811.1094851"> <button class="ui left aligned compact blue labeled icon button serp-button"> <i class="external alternate icon"></i> acm.org </button> </a>