COME FROM

COME FROM n.  A semi-mythical language construct dual to the
   `go to'; `COME FROM' <label> would cause the referenced label
   to act as a sort of trapdoor, so that if the program ever reached
   it control would quietly and {automagically} be transferred to
   the statement following the `COME FROM'.  `COME FROM'
   was first proposed in R.L. Clark's "A Linguistic Contribution
   to GOTO-less programming", which appeared in a 1973 {Datamation}
   issue (and was reprinted in the April 1984 issue of
   "Communications of the ACM").  This parodied the then-raging
   `structured programming' {holy wars} (see {considered
   harmful}).  Mythically, some variants are the `assigned COME
   FROM' and the `computed COME FROM' (parodying some nasty control
   constructs in FORTRAN and some extended BASICs).  Of course,
   multi-tasking (or non-determinism) could be implemented by having
   more than one `COME FROM' statement coming from the same
   label.

   In some ways the FORTRAN `DO' looks like a `COME FROM'
   statement.  After the terminating statement number/`CONTINUE'
   is reached, control continues at the statement following the DO.
   Some generous FORTRANs would allow arbitrary statements (other than
   `CONTINUE') for the statement, leading to examples like:

           DO 10 I=1,LIMIT
     C imagine many lines of code here, leaving the
     C original DO statement lost in the spaghetti...
           WRITE(6,10) I,FROB(I)
      10   FORMAT(1X,I5,G10.4)

   in which the trapdoor is just after the statement labeled 10.
   (This is particularly surprising because the label doesn't appear
   to have anything to do with the flow of control at all!)

   While sufficiently astonishing to the unsuspecting reader, this
   form of `COME FROM' statement isn't completely general.  After
   all, control will eventually pass to the following statement.  The
   implementation of the general form was left to Univac FORTRAN,
   ca. 1975 (though a roughly similar feature existed on the IBM 7040
   ten years earlier).  The statement `AT 100' would perform a
   `COME FROM 100'.  It was intended strictly as a debugging aid,
   with dire consequences promised to anyone so deranged as to use it
   in production code.  More horrible things had already been
   perpetrated in production languages, however; doubters need only
   contemplate the `ALTER' verb in {COBOL}.

   `COME FROM' was supported under its own name for the first
   time 15 years later, in C-INTERCAL (see {INTERCAL},
   {retrocomputing}); knowledgeable observers are still reeling
   from the shock.



HTML Conversion by AG2HTML.pl V2.94618 & witbrock@cs.cmu.edu