Related Work

Below is a list with some other initiatives that address the issues that SubScripts aims to tackle.

  • Olin Shivers argued that task specific sub-languages should be embedded in a syntactically extensible universal language. He extended the language Scheme this way with Unix like support for processes, including pipelines. A drawback for many developers would be the overkill by parentheses, as inherited from Scheme.
  • Grammar specification formalisms are closely related to ACP. They are applied in numerous parser generator languages, such as YACC. These interoperate to varying degrees with a base language; they yield parsers that are driven by tables rather than call graphs; therefore their speed is higher than the ACP DSL. Also they offer more convenient means for semantic parser actions. On the other hand, they do not support parallelism and their usage is largely restricted to text parsing.
  • The Orc programming language has a calculus with four types of combinators; two of these may be described as parallelism and failure continuation (“otherwise”); the other two are a kind of networking operators describing data flow. Other idioms such as or-parallelism can be expressed in terms of combinators.
  • Occam is a full programming language based on CSP; it supports sequential, parallel and alternative composition and communication over channels, but with limitations. E.g., alternatives must start with an input action, and there is no optional break.
  • Pict is a language based on pi-calculus. It inherits a limitation from CCS named action prefix multiplication: sequences must start with a simple action, inhibiting processes such as x+y; z.
  • Toolbus is a coordination architecture based on ACP extended with data terms. Some Toolbus code looks quite similar to SubScript code; it does not extend any commonly used programming language, though.
  • The Input Tool Model by Jan van den Bos extended Pascal and Modula-2 with refinements into path expressions for input actions. Unfortunately other actions were restricted to reside in a final section per refinement. It contributed greatly to the current work, foremost with the template trees and call graphs.


SubScript appears unique in its combined support for parallelism and grammar like specifications. The main innovations of this work are in the add-ons to ACP: logic operators such as several flavors of parallelism; n-ary communication as generalized refinement; and iterators as expression operands, so that they are applicable to all kinds of nary operators. Most other elements are rooted in earlier work.

Leave a Reply