Automatický kód - Autocode

Automatický kód je název rodiny „zjednodušených kódovacích systémů“, později nazývaných programovací jazyky, navržený v 50. a 60. letech pro sérii digitální počítače na univerzitách v Manchester, Cambridge a Londýn. Autocode byl obecný termín; autokódy pro různé stroje nebyly nutně úzce spjaty, například různé verze jednoho jazyka Fortran.

Dnes se tento termín používá k označení rodiny raných jazyků pocházejících z Manchester Mark 1 systémy autokodéru, které byly obecně podobné. V roce 1960, termín autokodéry byl použit obecněji, aby odkazoval na jakýkoli programovací jazyk na vysoké úrovni používat překladač.[1] Příklady jazyků označovaných jako autokódy jsou COBOL a Fortran.[2]

Glennie's Autocode

První automatický kód a jeho kompilátor byly vyvinuty společností Alick Glennie v roce 1952 pro počítač Mark 1 na univerzitě v Manchesteru a někteří jej považují za první sestaven programovací jazyk. Jeho hlavním cílem bylo zvýšení srozumitelnosti při programování strojů Mark 1, které byly známé svým mimořádně náročným strojovým kódem. Přestože byl výsledný jazyk mnohem jasnější než strojový kód, byl stále velmi strojově závislý.[3]

Níže je uveden příklad funkce automatického kódování Glennie, která vypočítá vzorec: . Příklad vynechává nezbytnou instrukci pro změnu měřítka potřebnou k umístění celých čísel do proměnných a předpokládá, že výsledky násobení zapadnou do nižšího akumulátoru.

c @ VA t @ IC x @ ½C y @ RC z @ NCINTEGERS +5 → c # Vložte 5 do c → t # Vložte argument z dolního akumulátoru # do proměnné t + t TESTA Z # Umístěte | t | do spodního akumulátoru -t VSTUP ZSUBROUTIN 6 → z # Spustit podprogram druhé odmocniny na # nižší hodnotu akumulátoru # a výsledek dát do z + tt → y → x # Vypočítat t ^ 3 a vložit do x + tx → y → x + z + cx ZAVŘÍT ZÁPIS 1 # Vložte z + (c * x) do # dolního akumulátoru # a vraťte se

Uživatelská příručka kompilátoru Autocode společnosti Glennie uvádí, že „ztráta účinnosti není vyšší než 10%“.[4]

Dopad automatického kódu Glennie na programovací návyky ostatních uživatelů Manchesteru byl zanedbatelný. Nebylo to ani zmíněno v Brookerově dokumentu z roku 1958 s názvem „Programy Autocode vyvinuté pro Manchester University Computers“.

Označte 1 Autocode

Druhý autokód pro Mark 1 byl naplánován v roce 1954 a vyvinut společností R. A. Brooker v roce 1955 a dostal název „Autocode Mark 1“. Jazyk byl téměř nezávislý na stroji a na rozdíl od prvního měl aritmetiku s plovoucí desetinnou čárkou. Na druhou stranu umožňoval pouze jednu operaci na řádek, nabízel několik mnemotechnických názvů a neměl způsob, jak definovat uživatelské podprogramy.[5]

Příklad kódu, který načte pole velikosti 11 čísel s plovoucí desetinnou čárkou ze vstupu, bude vypadat takto

      n1 = 1 1 vn1 = Čtu vstup do v [n [1]] n1 = n1 + 1 j1,11 ≥ n1 skočí na 1, pokud n [1] ≤ 11

Brooker's Autocode odstranil dvě hlavní potíže programátora Mark 1: škálování a správu dvouúrovňového úložiště. Na rozdíl od svého předchůdce byl silně používán.[6]

Později autokódy

Brooker také vyvinul autocode pro Ferranti Merkur v padesátých letech ve spojení s University of Manchester.Mercury Autocode měl omezený repertoár proměnné a-z a a-z a v některých ohledech připomínaly dřívější verze pozdějších Dartmouth BASIC Jazyk. Je to zastaralé ALGOL, nemají žádnou koncepci hromádky a tedy ne rekurze nebo dynamicky přiděleno pole. Za účelem překonání relativně malé velikosti obchodu dostupné na Merkuru byly velké programy psány jako odlišné „kapitoly“, z nichž každá představovala překrytí. Aby se minimalizovaly časově náročné převody kontroly mezi kapitolami, bylo zapotřebí určité dovednosti. Tento koncept překryvů z buben pod kontrolou uživatele se staly běžnými až do virtuální paměť byly k dispozici v pozdějších strojích. Pro. Byly implementovány mírně odlišné dialekty Mercury Autocode Ferranti Atlas (na rozdíl od pozdějších Atlas Autocode ) a ICT 1300 a 1900 rozsah.

Verze pro EDSAC 2 byl navržen David Hartley z Matematická laboratoř University of Cambridge v roce 1961. Známý jako EDSAC 2 Autocode, šlo o přímý vývoj od Mercury Autocode přizpůsobený místním okolnostem a byl známý svou optimalizací objektového kódu a diagnostikou zdrojového jazyka, které byly v té době pokročilé. Pro nástupce byla vyvinuta verze Titan (prototyp počítače Atlas 2) jako dočasnou mezeru, zatímco podstatně pokročilejší jazyk známý jako CPL byl vyvíjen. CPL nebyl nikdy dokončen, ale vedl k tomu BCPL (vyvinutý M. Richardsem), což vedlo k B a nakonec C. Moderní, ale samostatná nit vývoje, Atlas Autocode byl vyvinut pro univerzitu v Manchesteru Atlas 1 stroj.

Reference

  1. ^ London, Keith (1968). "4, Programování". Úvod do počítačů (1. vyd.). 24 Russell Square London WC1: Faber and Faber Limited. str. 184. SBN  571085938. Programovací jazyky na vysoké úrovni se často nazývají autokódy a procesorový program, překladač.CS1 maint: umístění (odkaz)
  2. ^ London, Keith (1968). "4, Programování". Úvod do počítačů (1. vyd.). 24 Russell Square London WC1: Faber and Faber Limited. str. 186. SBN  571085938. Dva programovací jazyky na vysoké úrovni, které zde lze použít jako příklady pro ilustraci struktury a účelu autokódů, jsou COBOL (Common Business Oriented Language) a FORTRAN (Formular Translation).CS1 maint: umístění (odkaz)
  3. ^ Knuth, str. 42-43
  4. ^ Knuth, str. 48
  5. ^ Knuth, str. 63-64
  6. ^ Knuth, str. 65

Zdroje

  • Campbell-Kelly, Martin (1980). „Programování značky 1: Včasné programovací aktivity na univerzitě v Manchesteru“. Annals of the History of Computing. IEEE. 2 (2): 130–167. doi:10.1109 / MAHC.1980.10018.
  • Garcia Camarero, Ernesto (1961). AUTOCODE zjednodušené kódování systému pro výpočetní rtuť MERCURY (ve španělštině). Universidad de Buenos Aires. str. 70.
  • London, Keith (1968). Úvod do počítačů. str. 261.
  • Knuth, Donald E .; Pardo, Luis Trabb (1976). "Časný vývoj programovacích jazyků". Stanford University, Katedra informatiky.

Další čtení