Node:COME FROM, Next:comm mode, Previous:cold boot, Up:= C =

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. Lawrence 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.

The Jargon File, Version 4.2.2, 20 Aug 2000 · 第 373 / 1941 题