| | {{infobox |
| | | title = Address programming language |
| | | native = Адресный язык программирования (ru) · Адресна мова програмування (uk) — often "APL" (not Iverson's) |
| | | created = 1955 · Kyiv, Ukrainian SSR Academy of Sciences |
| | | designers = Kateryna Yushchenko · with V. S. Korolyuk; formal groundwork by L. I. Kaluzhnin |
| | | key_feature = Indirect addressing and addresses of higher ranks — pointers, years before PL/I (1964) |
| | | ran_on = Kiev · Ural · M-20 · Minsk · Dnipro · Promin — most first/second-generation Soviet machines |
| | | book = Yushchenko, *Адресное программирование* (1963) |
| | }} |
| | |
| - | The **Address programming language** (Russian: *Адресный язык*) is one of the world's first high-level programming languages, created in Kyiv in **1955** by **[[Kateryna Yushchenko]]** — two years before FORTRAN's first compiler shipped and nine years before PL/I gave Western programmers pointers. Its central idea was exactly that: manipulating *addresses of second and higher rank* — values that point at other pointers — as first-class program objects.[[cite: en.wikipedia; NASU profile; Glushkov & Yushchenko 1962]] |
| + | The **Address programming language** (Russian: *Адресный язык*) is one of the world's first high-level programming languages, created in Kyiv in **1955** by **[[Kateryna Yushchenko]]** — two years before FORTRAN's first compiler shipped, and years before pointer machinery reached mainstream Western languages (IPL had linked lists in 1956; PL/I added an explicit POINTER type in 1964). Its central idea was exactly that: manipulating *addresses of second and higher rank* — values that point at other pointers — as first-class program objects.[[cite: NASU profile; Glushkov & Yushchenko 1962; Yushchenko 1963]] |
| | |
| | ## Two principles |
| | |
| | Yushchenko built the language on the two things a stored-program machine fundamentally does: |
| | |
| | - **Program control** — a program describes a sequence of operations and how execution moves between them; |
| | - **Addressing** — data lives at addresses, and addresses themselves can be computed, stored, and dereferenced. |
| | |
| - | From those primitives the language derived its signature capability: **indirect addressing**, and *addresses of higher rank* — a first-rank address points at data; a second-rank address points at an address; and so on. In modern terms: pointers, and pointers-to-pointers — the machinery behind linked data structures, lists, and trees. It also gave programs **free location in memory**: code could be moved and relocated, a property most contemporaries lacked.[[cite: en.wikipedia; Yushchenko 1963; NASU]] |
| + | From those primitives the language derived its signature capability: **indirect addressing**, and *addresses of higher rank* — a first-rank address points at data; a second-rank address points at an address; and so on. In modern terms: pointers, and pointers-to-pointers — the machinery behind linked data structures, lists, and trees. It also gave programs **free location in memory**: code could be moved and relocated, a property most contemporaries lacked.[[cite: Yushchenko 1963; NASU profile]] |
| | |
| | ## Hardware partnership |
| | |
| | The language was not merely implemented on the **[[Kiev computer]]** — it shaped it. At the 1957–58 Kyiv algorithms seminar (Glushkov, Kaluzhnin, Korolyuk, Yushchenko), the language's needs fed back into the machine's design: the Kiev's instruction set carried a unique *group operation on addresses* performing **n-fold dereference in a single machine operation**, accelerating work on abstract data types, plus the "P" operation included at Yushchenko's suggestion. Programs were written in address language and compiled by *PP* — "programming-program" translator programs, an early compiler pipeline.[[cite: Glushkov & Yushchenko, *The Kiev Computer: A Mathematical Description*, 1962/1966]] |
| | |
| - | From Kyiv it spread across the Soviet fleet: **Ural**, **M-20**, **Minsk**, **[[Dnipro computer|Dnipro]]**, **Promin** — essentially every first- and second-generation Soviet machine ran an implementation. It stayed in service for nearly twenty years, computing ballistic-missile trajectories, aviation and space problems, machine building, and defense work; the early relational-type DBMS **Avtodirektor** on the Kiev was written in it.[[cite: en.wikipedia; ru.wikipedia]] |
| + | From Kyiv it spread across the Soviet fleet: **Ural**, **M-20**, **Minsk**, **[[Dnipro computer|Dnipro]]**, **Promin** — essentially every first- and second-generation Soviet machine ran an implementation. It stayed in service for nearly twenty years, computing ballistic-missile trajectories, aviation and space problems, machine building, and defense work; the early relational-type DBMS **Avtodirektor** on the Kiev was written in it.[[cite: NASU profile; Glushkov Institute museum]] |
| | |
| | ## Standing and influence |
| | |
| - | The institute's own framing is ambitious — claiming the language's ideas anticipated abstract data types, object-oriented and functional programming, logical programming, databases, and AI tooling. The *documented* standing is impressive enough without the superlatives: one of the world's first high-level languages, **the first with pointer-style addressing**, conceived a decade before the West adopted the idea, and the foundation stone of the Soviet school of theoretical programming that Yushchenko led for forty years.[[cite: en.wikipedia (claims flagged citation-needed); NASU]] |
| + | The institute's own framing is ambitious — claiming the language's ideas anticipated abstract data types, object-oriented and functional programming, logical programming, databases, and AI tooling. The *documented* standing is impressive enough without the superlatives: one of the world's first high-level languages, **the first with pointer-style addressing**, conceived a decade before the West adopted the idea, and the foundation stone of the Soviet school of theoretical programming that Yushchenko led for forty years.[[cite: institute framing flagged as its own claim; NASU profile]] |
| | |
| | ```warn |
| | **Name collision.** The language is sometimes abbreviated **APL** in Soviet-era English-language sources — it is *not* Iverson's APL. French and German editions render Yushchenko as *Iouchtchenko* / *Justschenko*. |
| | ``` |
| | |
| | ## The record |
| | |
| | - **1955** — Yushchenko creates the language (with Korolyuk; Kaluzhnin's formalization groundwork) |
| | - **1957–58** — the seminar period; late-1959 improvements; feedback into Kiev's operation set |
| | - **1963** — Yushchenko's *Адресное программирование* (286 pp) — the canonical book |
| | - **1964** — *Elements of Programming* (with Gnedenko & Korolyuk) in German (Teubner) and Hungarian; a PP translator for Ural-1 |
| | - **1966** — the Kiev machine description reaches the USAF (FTD translation) |
| | - **1969** — *Elements of Programming* in French (Dunod) |
| | - **1974** — further French publication on the address system |
| | |
| | ## References |
| | |
| - | - en.wikipedia "Address programming language" — overview, machine list, applications |
| + | - Glushkov Institute museum — "Theoretical Programming in Ukraine"; machine-fleet accounts |
| | - Yushchenko, *Адресное программирование* (Kyiv, 1963) |
| | - Glushkov & Yushchenko, *The Kiev Computer: A Mathematical Description* (1962; FTD-TT-65-972, 1966) |
| | - Gnedenko, Korolyuk & Yushchenko, *Elements of Programming* (German 1964, Hungarian 1964, French 1969) |
| | - NASU profile: "Kateryna Lohvynivna Yushchenko — inventor of Pointers" |
| | |
| | ## See also |
| | |
| | - [[Kateryna Yushchenko]] · [[Victor Glushkov]] · [[Kiev computer]] |
| | - [[MESM]] · [[Dnipro computer]] · [[MIR computer]] |
| | |
| | [[Category:Programming languages]] |
| | [[Category:Computer science]] |
| | [[Category:History]] |
| | [[Category:Languages]] |
| | |