Next: Operand Overloading, Previous: TriINTERCAL, Up: Top [Index]
The multithreading and backtracking extensions to
INTERCAL were originally invented by Malcom Ryan,
who implemented COME FROM
-based multithreading as a
modified version of C-INTERCAL, known as Threaded
INTERCAL, but did not implement backtracking. (The
same functionality is implemented in C-INTERCAL today, but
with different code. Most likely, this means that the original code was
better.) He also invented the original version of Backtracking
INTERCAL, but did not implement it; the only known
implementation is the C-INTERCAL one. A different version
of multithreading, using WHILE
, was implemented as part of
CLC-INTERCAL (like all extensions first available in
CLC-INTERCAL, it is most likely due to Claudio Calvelli)
and then added to C-INTERCAL, although its implications
were not noticed for some time afterwards.
So nowadays, three freely-mixable threading-like extensions to INTERCAL exist, all of which are implemented in C-INTERCAL. (A fourth, Quantum INTERCAL, is implemented in CLC-INTERCAL but not C-INTERCAL, and so will not be discussed further here.) If you’re wondering about the description of backtracking as a threading-like extension, it’s implemented with much of the same code as multithreading in C-INTERCAL, because the INTERCAL version can be seen as roughly equivalent to multithreading where the threads run one after another rather than simultaneously. (This conceptualisation is probably more confusing than useful, though, and is also not strictly correct. The same could probably be said about INTERCAL as a whole, for that matter.)
• Multithreading using COME FROM: | Creating separate threads. | |
• Multithreading using WHILE: | Creating connected threads. | |
• Backtracking: | Multithreading in series, not parallel. |
Next: Operand Overloading, Previous: TriINTERCAL, Up: Top [Index]