Skip to content
ALB Wiki

Diff — Short Code

Comparing rev 1 → rev 2

{{infobox
| title = Short Code
| designer = proposed by John Mauchly · implemented by William F. Schmitt · revised by A. B. Tonik & J. R. Logan
| first appeared = 1949 (BINAC, as Brief Code) · 1950 (UNIVAC I)
| paradigm = interpreted algebraic notation — "automatic programming"
| typing = fixed-point expressions on 12-byte words
| status = lost — no implementation survives
| influenced = the first practical demonstration that expressions, not instructions, could be run
}}
# Short Code
-
**Short Code** was one of the first higher-level languages ever actually executed on a computer — a 1950 system for the UNIVAC I in which programmers wrote mathematical *expressions* instead of machine instructions, and an interpreter translated them into operations on the fly. It was called "automatic programming" at the time, and it ran roughly **fifty times slower** than hand-written machine code — the first concrete price tag ever put on abstraction.[[cite: Schmitt, W.F., "[The UNIVAC SHORT CODE](https://dl.acm.org/doi/10.1109/85.70719)", IEEE Annals of the History of Computing 10 (1988), 7–18 — the implementer's own account, and the primary source for everything below]]
+
**Short Code** was one of the first higher-level languages ever actually executed on a computer — a 1950 system for the UNIVAC I in which programmers wrote mathematical *expressions* instead of machine instructions, and an interpreter translated them into operations on the fly. It was called "automatic programming" at the time, and it ran roughly **fifty times slower** than hand-written machine code — the first concrete price tag ever put on abstraction.[[cite: Schmitt, W.F., "The UNIVAC SHORT CODE", IEEE Annals of the History of Computing 10 (1988), 7–18 — the implementer's own account, via the [Short Code article](https://en.wikipedia.org/wiki/Short_Code_(computer_language)) which reproduces the worked example]]
The language's origin is a three-person relay that is easy to get wrong. **John Mauchly** proposed the idea in 1949, calling it **Brief Code**. **William F. Schmitt** coded a version for the BINAC that same year — though it was never debugged or tested. In 1950 Schmitt implemented the working version on UNIVAC I, now renamed Short Code (also "Short Order Code"), and in 1952 **A. B. Tonik and J. R. Logan** revised it for the UNIVAC II. Mauchly conceived it; Schmitt made it real; Tonik and Logan kept it alive.[[cite: [Short Code history](https://en.wikipedia.org/wiki/Short_Code_(computer_language)) and Schmitt 1988 — the proposal-to-implementation timeline across BINAC, UNIVAC I, and UNIVAC II]]
# Expressions packed into words
Short Code did not let you write algebra freely — the notation was a compromise with the hardware. Each element of an expression was encoded as a **two-character code**, and six such codes packed into one of the machine's **12-byte words**. A programmer (or more often, an assistant) converted each expression by substitution before it could run. The canonical example, preserved in Schmitt's retelling:
```
a = (b + c) / b * c
 X3 =  (  X1 +  Y1 )  /  X1 * Y1   substitute variables
 X3 03 09 X1 07 Y1 02 04 X1   Y1   substitute operators and parens
 07Y10204X1Y1                      regroup into 12-byte words
 0000X30309X1
```
Multiplication was expressed by *juxtaposition* — adjacent variables meant multiply, exactly as in algebra — a tiny piece of mathematical notation smuggled into a vacuum-tube machine. Beyond arithmetic, Short Code supported branching and calls into a library of functions: a genuine, if minimal, language.[[cite: Schmitt 1988 — the two-character encoding, the worked `a = (b + c) / b * c` example, and the interpreted execution model]]
# Fifty times slower, and worth it anyway
The interpreter cost ~50× in speed — a figure that sounds ruinous until you remember what it purchased: a person could express a calculation without knowing the machine. Every high-level language since is a negotiation between that same cost and that same payoff; Short Code was the first time the trade was actually made on real hardware. It predates [[FORTRAN]] by seven years, [[COBOL]] by nearly a decade — and unlike those, it is **lost**: no implementation survives, and everything we know comes from Schmitt's 1988 retrospective and Mauchly's papers.
```fact
Short Code's interpreter made it one of the first languages to be *run* rather than *compiled* — the execution model [[BASIC]] and every scripting language would later take for granted, a quarter-century early.
```
# Where it sits
Short Code is the proof that the high-level-language idea — *express the problem, let the machine handle the machine* — was present at computing's birth, not discovered later. It ran before [[ALGOL]] was a committee's gleam, before [[Grace Hopper|Hopper]]'s A-0 system had matured into FLOW-MATIC, on the same machines [[UNIVAC I|UNIVAC]] was still proving could work at all. The field's first interpreted language is also one of its first *lost* ones.
## Check your understanding
- [ ] Who proposed Short Code, and who actually implemented the first working version?
- [ ] How were Short Code expressions physically encoded for the machine?
- [ ] What did interpretation cost in speed — and what did it buy?
- [ ] Why is Short Code classified as *lost*?
```hide Show answers
1 — **John Mauchly** proposed it as "Brief Code" (1949); **William F. Schmitt** implemented the working UNIVAC I version (1950); **Tonik & Logan** revised it (1952).
2 — each expression element became a **two-character code**, six codes packed per 12-byte word — written as algebra, then hand-converted before running.
3 — about **50× slower** than machine code — and it bought abstraction: math expressed as math instead of as instructions.
4 — **no implementation survives** — the language is known only through Schmitt's 1988 retrospective and the project papers.
```
[[Category:Languages]]
[[Category:Programming]]
[[Category:History]]