GEORGE (programovací jazyk) - GEORGE (programming language)
JIŘÍ (General Order Generator) je a programovací jazyk vynalezl Charles Leonard Hamblin v roce 1957.[1][2][3][4]
Byl navržen kolem rozevíracího zásobníku pro aritmetické operace a byl použit obrácenou polskou notaci.[5]
Zahrnutý jazyk smyčky, podprogramy, podmíněné, vektory, a matice.
Algebraické výrazy byly psány v opačném polském zápisu; tím pádem, bylo napsáno a b +
, a podobně pro ostatní aritmetické operace odčítání, násobení a dělení.
Algebraický výraz bylo napsáno a x dup × × b x × + c +
, kde 'dup
„znamenalo„ duplikovat hodnotu “.
Po obráceném polském formuláři je přiřazovací příkaz k vyhodnocení vzorce byl napsán jako a x dup × × b x × + c + (y)
.
Počítač vyhodnotil výraz následujícím způsobem: hodnoty A
, pak X
, byly tlačeny na horní část zásobník akumulátoru; 'dup
'způsobil kopii nejvyšší hodnoty (X
) k nasunutí na horní část zásobníku akumulátoru; Násobit (×
) způsobil dvě nejvyšší hodnoty, jmenovitě, X
a X
, které mají být odstraněny (vyskočeny) a vynásobeny, čímž se produkt vrátí na začátek zásobníku akumulátorů. Druhé násobení (×
) poté způsobil dvě nejvyšší hodnoty v zásobníku (jmenovitě A
a x ** 2
), které mají být vyskočeny a rozmnoženy, a produkt (a × x ** 2
), které mají být tlačeny na horní část zásobníku akumulátoru. A tak na zbývající komponenty výrazu. Poslední operace, jmenovitě (y
), vrátil hodnotu výrazu do úložiště bez změny stavu zásobníku akumulátoru.
Za předpokladu, že hodnota v horní části zásobníku akumulátoru nebyla okamžitě požadována, byla by odstraněna (vymazána) pomocí operátoru (;
).
Následující program načte v osmi hodnotách a vytvoří jejich součet:
0,1, 8 rep (j) R +] (P)
- První řádek inicializuje součet zatlačením hodnoty nula na horní část zásobníku akumulátoru.
- Druhý řádek zavádí smyčku, je vyslovován jako „pro 1 až 8 opakování pro j“ a je ukončen hranatou závorkou.
- Ve třetím řádku R způsobí, že jedno číslo bude načteno a zatlačeno na horní část zásobníku akumulátoru, a znaménko plus (+) způsobí, že tato hodnota bude přidána k (částečnému) součtu, přičemž na horní část zásobníku akumulátoru.
- Poté, co smyčka skončí, (P) způsobí, že konečný součet bude vyražen na kartu.
Manipulace s vektory a maticemi vyžaduje notaci dolního indexu. V GEORGE dolní index (y) předcházel název vektoru nebo matice. Tak bylo napsáno A (j) j | A
Následující program čte ve vektoru A 10 hodnot, poté vytvoří druhé mocniny těchto hodnot a nakonec tyto hodnoty vytiskne.
1, 10 R1 (a) 1, 10 rep (j) j | a dup * j | (a);] 1,10 P1 (a)
- V programu je první řádek vektorovým čtením, které čte v deseti hodnotách do a (1) až (10).
- Druhý řádek zavádí smyčku, která prochází deseti hodnotami j.
- Třetí řádek načte a (j), duplikuje jej, vynásobí tyto dvě hodnoty udávající druhou mocninu a poté ji uloží do a (j). Všimněte si středníku (;), který vymaže (nebo zruší) horní položku v zásobníku akumulátoru. Pokud by to nebylo provedeno, akumulátor by se postupně zaplnil druhou mocninou hodnot.
- Poslední řádek je vektorový úder (tj. Tisk), který vypíše deset čtverců.
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 15 | ||
---|---|---|---|---|---|---|---|---|---|---|
0 | / | 0 | 16 | A | q | (A) | (q) | log | R | |
1 | , | // | 1 | 17 | b | r | b) | (r) | exp | (P) |
2 | ; | ~ | 2 | 18 | C | s | (C) | (s) | prášek | |
3 | * | & | 3 | 19 | d | t | d) | (t) | rem | |
4 | ∨ | 4 | 20 | E | u | (E) | (u) | čtv | ||
5 | + | ] | 5 | 21 | F | proti | (F) | (proti) | hřích | |
6 | - | ↓ | 6 | 22 | G | w | (G) | (w) | cos | |
7 | × | ↑ | 7 | 23 | h | X | (h) | (X) | ||
8 | ÷ | rep | 8 | 24 | i | y | (i) | (y) | R1 | |
9 | neg | Já | 9 | 25 | j | z | (j) | (z) | P1 | |
10 | mod | 10 | 26 | k | α | (k) | (α) | R11 | ||
11 | max | 11 | 27 | l | β | (l) | (β) | P11 | ||
12 | dup | 12 | 28 | m | y | (m) | (γ) | |||
13 | rev | 13 | 29 | n | λ | (n) | (λ) | |||
14 | = | 14 | 30 | Θ | μ | (Θ) | (μ) | |||
15 | > | 15 | 31 | p | ω | (p) | (ω) |
Výše uvedená kódovací tabulka GEORGE pomohla při přepisu programu na děrovací karty.
Podmíněné operace byly zapsány jako skoky, a to následovně: pokud a> 0 přejde na 5 (který se přenese na štítek 5, pokud je a větší než nula), zapíše se
0 a> 5 ↑
Štítek 5 byl označen zahrnutím * 5 jinde do programu. Bezpodmínečné převody byly zapsány 5 ↑
Volání podprogramu byla provedena pomocí šipky dolů, např. Pro volání podprogramu označeného 17, napište 17 ↓, kde byl štítek 17 kódován pomocí sloupce 3 výše uvedené tabulky.
Historická poznámka
V první verzi běžící v květnu 1957 na English Electric DEUCE, všechny hodnoty byly uloženy v binární formě s pevným bodem ve 32bitovém slově se 16 binárními místy.
Ve druhé verzi zavedené v roce 1958 byly hodnoty drženy ve formě s plovoucí desetinnou čárkou, s jednou hodnotou na slovo: 22 bitů pro mantisu a 10 bitů pro exponent.
Nějaká forma kódovací tabulky byla nutná, protože tiskové zařízení té doby poskytovalo pouze 26 písmen abecedy, desetinnou čárku, znaménko plus, znaménko minus a lomítko.
Reference
- ^ Hamblin, Charles Leonard (Květen 1957). Schéma kódování bez adresy založené na matematické notaci (Strojopis). New South Wales University of Technology.
- ^ Hamblin, Charles Leonard (Červen 1957). "Schéma adresování bez adresy založené na matematické notaci". Sborník z první australské konference o výpočtech a zpracování dat. Salisbury, Jižní Austrálie: Zřizování výzkumu zbraní.
- ^ Hamblin, Charles Leonard (1957). "Počítačové jazyky". Australian Journal of Science (20?): 135–139; Hamblin, Charles Leonard (Listopad 1985). "Počítačové jazyky". Australský počítačový deník (Dotisk). 17 (4): 195–198.
- ^ Hamblin, Charles Leonard (1958). GEORGE IA a II: Programovací schéma semi-překladu pro DEUCE: Programovací a provozní příručka (PDF). School of Humanities, University of New South Wales, Kensington, New South Wales. Archivováno (PDF) z původního dne 2020-04-04. Citováno 2020-07-27.
- ^ Beard, Bob (podzim 1997) [01.10.1996]. „Počítač KDF9 - 30 let dále“ (PDF). Vzkříšení - Bulletin společnosti pro ochranu počítačů. Č. 18. Computer Conservation Society (CCS). s. 7–15. ISSN 0958-7403. Archivováno (PDF) od původního dne 2020-07-27. Citováno 2020-07-27.
[…] KDF9 je pozoruhodný, protože se předpokládá, že je to první počítač s formátem instrukce s nulovou adresou, který byl oznámen (v roce 1960). Poprvé byl dodán přibližně ve stejnou dobu (počátkem roku 1963) jako další slavný počítač s nulovou adresou, počítač Burroughs B5000 v Americe. Stejně jako mnoho moderních kapesních kalkulaček umožňuje i stroj s nulovou adresou použití reverzní polské aritmetiky; toto nabízí určité výhody spisovatelům překladačů. Předpokládá se, že pozornost týmu English Electric byla nejprve upoutána na koncept nulové adresy prostřednictvím kontaktu s Georgem (General Order Generator), což je programovací systém autocode napsaný pro Čert počítač u University of Sydney, Austrálie, ve druhé polovině padesátých let. George použil Obrácená polština, a tým KDF9 byl k této konvenci přitahován z pragmatického důvodu, který si přeje zvýšit výkon minimalizací přístupů do hlavního obchodu. To může být v kontrastu s „teoretičtější“ linií, kterou bere nezávisle Burroughs. Kromě hardwaru hnízdiště nebo zásobník - základní mechanismus počítače s nulovou adresou - měl KDF9 další skupiny centrálních registrů pro zlepšení výkonu, které mu dodávaly zajímavou vnitřní strukturu. […]
[1] (Pozn. Toto je upravená verze rozhovoru pro North West Group of the Society at the Museum of Science and Industry, Manchester, UK on 1996-10-01.) - ^ Kurz programování. Škola elektrotechnická, University of New South Wales. n.d. str. 24.