Knowledge

Subtext (programming language)

Source 📝

384: 246: 419:, 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. 375: 188: 74: 33: 442: 329: 449:
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
423:
Side effects are both the essence and bane of imperative programming. The programmer must carefully coordinate actions to manage their side effects upon each other. Such coordination is complex, error-prone, and fragile. Coherent reaction is a new model of change-driven computation that coordinates
479:
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
394:
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
486:
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.
378:
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
462:
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
450:
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.
358:
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.
395:
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
391:
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.
403:
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".
84: 473:
Jonathan Edwards. In OOPSLA October ’05: Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications.
354:
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
279: 17: 46: 98:
of the topic and provide significant coverage of it beyond a mere trivial mention. If notability cannot be shown, the article is likely to be
150: 573: 122: 129: 407:
input ("invocations") can be utilized via data flow within a Subtext program, allowing users to manipulate values interactively.
136: 578: 118: 52: 256: 198: 335:
An alpha build of the Subtext environment, which illustrates the unique "polymorphic conditionals" present in the IDE.
315: 297: 227: 169: 60: 424:
effects automatically. Automatically coordinating actions lets the programmer express what to do, not when to do it.
265: 95: 143: 343: 271: 205: 209: 91: 107: 396: 275: 261: 404: 400: 351: 347: 8: 464: 103: 99: 362:
Subtext was created by Jonathan Edwards who submitted a paper on the language to
567: 415:
A continuation and subset of the Subtext language using other principles, is
542: 483: 476: 470: 459: 518: 355: 387:
Early build of the Subtext environment with interactive console inputs.
488: 434: 245: 506: 441: 383: 374: 90:
Please help to demonstrate the notability of the topic by citing
328: 363: 530: 350:. It is an experimental, research attempt to develop a new 557: 197:
may contain excessive or inappropriate references to
521:, MIT CSAIL draft paper by Jonathan Edwards in 2006. 467:
illustrate the techniques with functional examples.
366:. It was accepted as part of the 2005 conference. 471:Subtext: uncovering the simplicity of programming 565: 260:, potentially preventing the article from being 85:notability guidelines for products and services 507:Introduction to Subtext, I/O and Mutable state 445:Logo for the Coherence programming language 61:Learn how and when to remove these messages 545:, CSAIL Digital Archive, Technical Reports 280:reliable, independent, third-party sources 316:Learn how and when to remove this message 298:Learn how and when to remove this message 228:Learn how and when to remove this message 170:Learn how and when to remove this message 440: 382: 373: 327: 274:by replacing them with more appropriate 257:too closely associated with the subject 14: 566: 509:, first Subtext environment video demo 208:by removing references to unreliable 239: 212:where they are used inappropriately. 181: 67: 26: 543:DSpace@MIT : Coherent Reaction 119:"Subtext" programming language 24: 574:Experimental programming languages 25: 590: 551: 42:This article has multiple issues. 533:, states continuation of Subtext 255:may rely excessively on sources 244: 186: 72: 31: 18:Coherence (programming language) 50:or discuss these issues on the 560:, official website of Subtext. 536: 524: 512: 500: 369: 13: 1: 480:operation of a console agent. 453: 346:and environment, for writing 579:Visual programming languages 519:First Class Copy & Paste 477:First Class Copy & Paste 410: 7: 460:Example Centric Programming 344:visual programming language 10: 595: 92:reliable secondary sources 81:The topic of this article 83:may not meet Knowledge's 446: 439: 401:functional programming 388: 380: 336: 199:self-published sources 444: 421: 397:graphical environment 386: 377: 331: 348:application software 531:Coherence home page 447: 429:Jonathan Edwards, 389: 381: 337: 87: 484:Coherent Reaction 431:Coherent Reaction 399:. Unlike typical 333:Schematic tables. 326: 325: 318: 308: 307: 300: 238: 237: 230: 180: 179: 172: 154: 82: 65: 16:(Redirected from 586: 546: 540: 534: 528: 522: 516: 510: 504: 437: 342:is a moderately 321: 314: 303: 296: 292: 289: 283: 248: 240: 233: 226: 222: 219: 213: 190: 189: 182: 175: 168: 164: 161: 155: 153: 112: 76: 75: 68: 57: 35: 34: 27: 21: 594: 593: 589: 588: 587: 585: 584: 583: 564: 563: 554: 549: 541: 537: 529: 525: 517: 513: 505: 501: 456: 438: 428: 413: 372: 322: 311: 310: 309: 304: 293: 287: 284: 269: 249: 234: 223: 217: 214: 203: 191: 187: 176: 165: 159: 156: 113: 111: 89: 77: 73: 36: 32: 23: 22: 15: 12: 11: 5: 592: 582: 581: 576: 562: 561: 558:Subtextual.org 553: 552:External links 550: 548: 547: 535: 523: 511: 498: 497: 496: 492: 491: 481: 474: 468: 455: 452: 426: 412: 409: 371: 368: 324: 323: 306: 305: 252: 250: 243: 236: 235: 194: 192: 185: 178: 177: 80: 78: 71: 66: 40: 39: 37: 30: 9: 6: 4: 3: 2: 591: 580: 577: 575: 572: 571: 569: 559: 556: 555: 544: 539: 532: 527: 520: 515: 508: 503: 499: 494: 493: 490: 485: 482: 478: 475: 472: 469: 466: 461: 458: 457: 451: 443: 436: 432: 425: 420: 418: 408: 406: 402: 398: 392: 385: 376: 367: 365: 360: 357: 353: 349: 345: 341: 334: 330: 320: 317: 302: 299: 291: 281: 277: 273: 267: 263: 259: 258: 253:This article 251: 247: 242: 241: 232: 229: 221: 211: 207: 201: 200: 195:This article 193: 184: 183: 174: 171: 163: 152: 149: 145: 142: 138: 135: 131: 128: 124: 121: –  120: 116: 115:Find sources: 109: 105: 101: 97: 93: 86: 79: 70: 69: 64: 62: 55: 54: 49: 48: 43: 38: 29: 28: 19: 538: 526: 514: 502: 448: 430: 422: 416: 414: 393: 390: 361: 356:spreadsheets 339: 338: 332: 312: 294: 288:January 2013 285: 270:Please help 254: 224: 218:January 2013 215: 204:Please help 196: 166: 160:January 2013 157: 147: 140: 133: 126: 114: 58: 51: 45: 44:Please help 41: 370:Environment 352:programming 96:independent 568:Categories 454:References 272:improve it 262:verifiable 206:improve it 130:newspapers 104:redirected 47:improve it 435:MIT CSAIL 417:Coherence 411:Coherence 276:citations 94:that are 53:talk page 489:(report) 427:—  379:updated. 465:Eclipse 405:Console 340:Subtext 266:neutral 210:sources 144:scholar 108:deleted 364:OOPSLA 146:  139:  132:  125:  117:  100:merged 495:Cited 151:JSTOR 137:books 106:, or 264:and 123:news 278:to 570:: 433:, 102:, 56:. 319:) 313:( 301:) 295:( 290:) 286:( 282:. 268:. 231:) 225:( 220:) 216:( 202:. 173:) 167:( 162:) 158:( 148:· 141:· 134:· 127:· 110:. 88:. 63:) 59:( 20:)

Index

Coherence (programming language)
improve it
talk page
Learn how and when to remove these messages
notability guidelines for products and services
reliable secondary sources
independent
merged
redirected
deleted
"Subtext" programming language
news
newspapers
books
scholar
JSTOR
Learn how and when to remove this message
self-published sources
improve it
sources
Learn how and when to remove this message

too closely associated with the subject
verifiable
neutral
improve it
citations
reliable, independent, third-party sources
Learn how and when to remove this message
Learn how and when to remove this message

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.