Language peer sets for ESI: United States↑ United States/1966↑ Designed 1966 ↑ 1960s languages ↑ Third generation↑ High Cold War↑ Genus Generation of JOSS I ↑ On-Line ↑ Generation of JOSS I↑ JOSS family↑ Conversational ↑ Generation of JOSS I/1966↑ JOSS family/1966↑ Conversational/1966↑ Generation of JOSS I/United States↑ JOSS family/United States↑ Conversational/United States↑ On-Line ↑ On-Line/1966↑ On-Line/us ↑
ESI(ID:404/esi001)
Engineering and Scientific Interpreter
alternate simple view
Country: United States
Designed 1966
Published: 1966
Genus: Generation of JOSS I
Sammet category: On-Line for 8/s Interpreter and then later for Engineering and Scientific Interpreter (but also to sound like "easy")
Sample conversations with the Engineering and Scientific Interpreter David J. Waks Applied Data Research Princeton N.J.
I. Samples of direct statements:
II. Use of indirect statements to compute the area and circumference of a circle, given its radius.
Notes on the Conversations
(1) A back arrow (<-) is typed whenever ESI wants the user to "say" something. Thus any line beginning with a back arrow was typed by the user; any without the back arrow, by the computer.
(2) "DELETE ALL" commands ESI to clear user storage of everything associated with the preceding user program.
(3) "TYPE" commands the evaluation and typing out of one or more arithmetic expressions.
(4) All results are stored and presented as decimal numbers with exactly seven decimal digits of precision.
(5) The SGN function is the "sign" or "signum" function of mathematics.
(6) A variable, such as "Y" here, which has not been set to any value is considered to be "undefined" and any use of it in an arithmetic expression is flagged as an error.
(7) Every statement in ESI is an English sentence, and must end in a period.
(8) This command is meaningless, since "XY" is not a valid name for a variable (the only valid names are the single letters A through Z), and the multiplication sign is missing if the intention was to evaluate the product of "X" and "Y".
(9) The single letter "E" means "times ten to the." Thus 3E-40 is ESI's notation for 3 x 10-40
(10) All numbers stored by ESI must be in the range of 10-63 to 1063. The number "A^2" is out of this range.
(11) ESI treats any attempt to divide by zero, including 0/0, as an error.
(12) In this iterative statement, "I" will take on values beginning with 2, in increments of 3, until 5; i.e., 2 and 5.
(13) "A" has already been assigned a value as an unsubscripted variable. It cannot simultaneously be subscripted and unsubscripted.
(14) "DELETE" commands ESI to make the variable "undefined." It can now be used with a subscript. Note that no declaration (such as DIMENSION) is required before using a variable with subscripts.
(15) A more complicated example of subscripting; the subscript expression is R/2.
(16) "TYPE ALL VALUES" commands ESI to type out the values of all defined variables.
(17) Note that the values of "I" and "R", after the completion of iterative statements involving them, are not the terminal values specified by the FOR statement.
(18) If a number is typed preceding a statement, the statement is not executed immediately, but is stored away associated with that number, called its "step number."
(19) "DO STEP" commands the execution of a previously stored step.
(20) "DEMAND" (here being executed by step 1.1) requests from the user a value for the indicated variable (in this case "R"). Note that the back arrow (<--) again indicates that ESI has given control of the Teletype to the user.
(21) Previous "TYPE" statements illustrated the typing of evaluated arithmetic expressions (TYPE X*Y.) and character strings (TYPE "THAT'S RIGHT".). This example illustrates how a single TYPE statement may mix these two forms. Character strings in quotes alternate with arithmetic expressions (in this case, note that R, A, and C are very trivial arithmetic expressions).
(22) The digit preceding the decimal point in a step number is called the part number, and must be in the range of 1 to 9. All steps with the same part number are considered to be a part of a program. The "DO PART" command causes each step of the part to be executed in step number order. At the end of execution of the last step (the one with the highest numerical step number), control returns to the step following the "DO PART" if it was executed from an indirect (stored) statement or to the user if it was executed as a direct statement (from the Teletype).
(23) We forgot to give a definition for P. Note that the error was not detected until the statement was executed.
(24) This illustrates an abbreviated form of the "SET" statement which can only be used as a direct statement (executed immediately rather than being stored away). P is, of course, Pi.
(25) "TO STEP" causes the designated step to be executed next, rather than the next step in step number order. Note that step 1.5 is inserted following step 1.4, causing the entire program to be a five-step loop.
(26) At any time during the execution of a program, the "ALT MODE" key on the Teletype can be typed. At the end of execution of the current step, the execution of the program is interrupted and an appropriate message is typed. When execution is suspended, the only legitimate statements are GO, CANCEL, and TYPE. (27) "GO" commands that the interrupted program be continued where it left off.
(28) The user may type any arithmetic expression in response to a "DEMAND" but must make sure that only defined variables are used in the expression.
(29) "CANCEL" commands that the execution of the program be cancelled. It cannot now be continued with GO.
(30) At this point, we have decided to evaluate the area and circumference for a given range of values of the radius. We therefore delete the DEMAND statement and insert an iterative statement as part 2.
(31) We forgot to delete step 1.5, which now refers to a non-existent step number.
(32) "TYPE ALL" commands the typing of everything currently stored by ESI ? that is, all steps and all values.
(33) The user can type "RUBOUT" to delete a typing error. Each "RUBOUT" deletes one character and types a back arrow to indicate this. Any number of characters can be deleted this way; if "RUBOUT" is typed with the input line completely empty (all characters rubbed out), the bell is rung.
References:
Waks, David J. (1966) Waks, David J. "ESI - Conversational-Mode Computing On The PDP-8/S"
AbstractExtract:
IntroductionExtract:
Time-Sharing as a SolutionExtract:
An Alternate SolutionExtract:
A Description of ESIExtract:
Permissible forms in (1966) Decus Conference Fall 1966
Sammet, Jean E. (1969) Sammet, Jean E. "Computer Languages - Principles and History"
Englewood Cliffs, N.J. Prentice-Hall 1969. p.217.
in (1966) Decus Conference Fall 1966 Resources