Jump to content

Speedcoding

From Alfawiki
Speedcoding
Company typeProgramming language
IndustryComputer software
Founded1953
FounderJohn W. Backus
Headquarters
United States
ProductsHigh-level programming language for IBM 701

Speedcoding, also known as Speedcode or SpeedCo, represents the earliest high-level programming language developed for an IBM computer. Created by John W. Backus in 1953 specifically for the IBM 701, it enabled calculations involving floating point numbers. The language originated from difficulties encountered while programming the IBM SSEC machine, where Backus was assigned the task of computing astronomical positions in 1950.

As an interpreter, Speedcoding emphasized user-friendliness rather than conserving system resources. It offered pseudo-instructions to handle frequent mathematical operations such as logarithms, exponentials, and trigonometric functions. The interpreter executed these instructions sequentially by calling corresponding subroutines and introduced the pioneering use of decimal input/output capabilities. Although it greatly simplified programming efforts, programs ran between ten and twenty times slower compared to equivalent machine-level code. The interpreter itself consumed 310 memory words, roughly 30% of the total memory available on the IBM 701.

History and development

In August 1952, a gathering of IBM engineers and IBM 701 users took place in Poughkeepsie, New York to address challenges associated with assembly language programming. Attendees voiced concerns over the slow pace of coding and debugging and questioned whether the 701 was suitable for tasks demanding rapid turnaround or cost-efficient programming. They also pointed out issues related to handling decimal points within arithmetic calculations.

John W. Sheldon, who managed IBM's Technical Computing Bureau, suggested developing an "interpretive" programming system that incorporated floating point operations as a potential remedy. He assigned John Backus—who had prior experience translating code across IBM systems—to spearhead the creation of a new floating-point interpretive language intended for internal IBM use. Backus understood that computing expenses were divided between actual computation and programming labor, with testing representing the larger cost factor. Starting in 1953, Backus collaborated with five team members to develop Speedcoding, which soon extended beyond IBM to customer installations running the 701 system.

Syntax and semantics

Speedcoding instructions are stored as 72-bit data words within programs. Typically, each instruction consists of two operations (OP1 and OP2) alongside four memory addresses. OP1 executes mathematical or input/output tasks involving three memory locations, which may be adjusted depending on the specific operation performed. Supported mathematical functions include fundamental arithmetic, square roots, and trigonometric calculations. Logical operations manage activities such as reading from, writing to, skipping over, and rewinding magnetic tape, as well as interfacing with drum memory. OP2 serves as a logical operation utilizing one memory address and facilitates control flow mechanisms like gotos, conditional branches, and loops.

Reserved Arithmetic and Input/Output Operation Keywords

  • ADD, SUB, MPY, DIV, SQRT, SINE, ARTAN, EXP, LN
  • MOVE, PRINT, EJECT, NOOP
  • A variety of read/write and shift commands for magnetic tape and drum memory

Reserved Logical Keywords

  • TR, SKIP, SETRA, SETRB, STA, STB
  • Multiple conditional and data manipulation instructions supporting program control flow

See also

Further reading